web-dev-qa-db-fra.com

Actions La classe ne fonctionne pas avec le pilote gecko

Je suis confronté à un problème avec le pilote de classe Actions. J'ai ce morceau de code 

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

Auparavant, lorsque j'utilise Selenium-Java 2.43.0, cette commande fonctionne correctement. Mais je suis passé à 3.0.0-beta2, j'ai commencé à accéder à firefox driver par le biais du pilote Gecko. 

À la commande spécifiée ci-dessus, mon test échoue. Je reçois l'exception ci-dessous

org.openqa.Selenium.UnsupportedCommandException: POST /session/21dfc828-a382-4622-8c61-89bc48e29744/moveto ne correspond à aucune commande connue (AVERTISSEMENT: le serveur n'a fourni aucune piletrace information) Durée ou expiration de la commande: 4 millisecondes

S'il vous plaît aider

13
naveen kumar

Une réponse temporaire, affreuse et déprimante, jusqu’à ce que le problème soit résolu, est de revenir aux versions de travail de Selenium et de Firefox. Selenium 2.53.0 avec Firefox 45.0.2 fonctionne toujours: https://ftp.mozilla.org/pub/firefox/releases/45.0.2/

Je regrette de ne pas avoir testé les dernières versions, mais en même temps, il vaut mieux ne pas avoir de tests de Firefox exécutés du tout. Ne pas utiliser Firefox pendant des mois estinacceptable.

5
jibbs

C'est un problème de version. Selenium 3 ne prend pas encore en charge le pilote de classe Actions. Vous devrez télécharger une version inférieure. La version 2.53.1 fonctionne bien pour moi avec Firefox

5
user7123229

Ce qui suit fonctionne pour moi sur Firefox 52.3.0 ESR et Selenium 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);
}
0
Ajay Polsani