2016-08-05 49 views
12

Ich habe ein Problem mit Actions Klassentreiber. Ich habe dieses Stück CodeAktionen Klasse funktioniert nicht mit Gecko-Treiber

Actions act= new Actions(d1); 
act.moveToElement(d1.findElement(By.xpath("path of the element")).build().perform(); 

Früher, wenn ich Selenium-Java 2.43.0 bin mit diesem Befehl funktioniert gut. Aber ich habe auf 3.0.0-beta2 aktualisiert, begann Zugriff firefox driver durch Gecko-Treiber.

Bei dem oben angegebenen Befehl ist mein Test fehlgeschlagen. Ich erhalte die unter Ausnahme

org.openqa.selenium.UnsupportedCommandException: POST /session/21dfc828-a382-4622-8c61-89bc48e29744/moveto nicht übereinstimmten eine bekannt Befehl (ACHTUNG: Der Server nicht zur Verfügung stellen jede stacktrace Informationen) Befehl Dauer oder Timeout: 4 Millisekunden

Bitte helfen

+0

Es gibt ein Problem bei Selen offenen Fragen für diese aufgezeichnet. Wir müssen auf die Lösung warten. https://github.com/SeleniumHQ/selenium/issues/2285. Das ist das Problem. Vielleicht müssen wir darauf warten. –

+0

Ab dem 18. März 2017 zu diesem Thema sieht es aus wie "Dies ist jetzt in Geckodriver 0.15 und Selenium 3.x implementiert" und das Problem ist geschlossen. Aber ich habe noch ein paar ziemlich große Probleme mit mouseover:/ –

Antwort

5

Temporary, schrecklich, deprimierende Antwort, bis sie dieses Problem beheben zurück in die Arbeitsversionen von Selen und Firefox zurückzukehren ist. Selen 2.53.0 mit Firefox 45.0.2 arbeitet noch: https://ftp.mozilla.org/pub/firefox/releases/45.0.2/

ich nicht gegen die neuesten Prüfung bedauern, aber zur gleichen Zeit mit es schlägt nicht Firefox überhaupt laufen Tests. Nicht laufen gegen Firefox für Monate am Ende ist nicht akzeptabel.

4

Es ist ein Versionierungsproblem. Selenium 3 hat noch keine Unterstützung für den Actions-Klassentreiber. Sie müssen auf eine niedrigere Version herunterladen. Version 2.53.1 funktioniert gut für mich mit Firefox

+1

Irgendwelche Neuigkeiten dazu? Soll das irgendwann hoffentlich bald umgesetzt werden? – nostradamus

0

Die unten funktioniert für mich auf Firefox 52.3.0 ESR und Selen 3.5.1

public void mouseRightClickAndSelectOption(By locator, By contextMenuOption){ 
    clickElement(locator); 
    String script = "var evt = document.createEvent('MouseEvents');" + "evt.initMouseEvent('contextmenu',true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0,null);" + "arguments[0].dispatchEvent(evt);"; 

    try { 
     ((JavascriptExecutor) driver).executeScript(script, getElement(locator)); 
    } catch (Exception ignored) { 
    } 
    clickElement(contextMenuOption); 
} 


public WebElement getElement(By locator) { 
    fluentWait(locator); 
    return driver.findElement(locator); 
}