web-dev-qa-db-ja.com

アクションクラスがgeckoドライバーで機能しない

Actionsクラスドライバーで問題が発生しています。私はこのコードを持っています

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

以前、Selenium-Java 2.43.0を使用している場合、このコマンドは正常に機能しています。しかし、私は3.0.0-beta2にアップグレードし、geckoドライバーを介してfirefox driverへのアクセスを開始しました。

上記の指定されたコマンドで、私のテストは失敗します。以下の例外が発生しています

org.openqa.Selenium.UnsupportedCommandException:POST/session/21dfc828-a382-4622-8c61-89bc48e29744/movetoが既知のコマンドと一致しませんでした(警告:サーバーがスタックトレース情報を提供しませんでした)コマンドの継続時間またはタイムアウト:4ミリ秒

助けてください

13
naveen kumar

彼らがこれを修正するまでの一時的でひどい、気のめいる答えは、SeleniumとFirefoxの動作バージョンに戻ることです。 Firefox45.0.2を搭載したSelenium2.53.0は引き続き機能します: https://ftp.mozilla.org/pub/firefox/releases/45.0.2/

最新のものに対してテストしなかったことを後悔していますが、同時にFirefoxのテストをまったく実行していないことに勝っています。 Firefoxに対して何ヶ月も実行されていないのは受け入れられません。

5
jibbs

これはバージョン管理の問題です。 Selenium 3は、Actionsクラスドライバーをまだサポートしていません。下位バージョンにダウンロードする必要があります。バージョン2.53.1はFirefoxで問題なく動作します

5
user7123229

以下は、Firefox 52.3.0ESRおよびSelenium3.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