1

セレンでこのmouseOverをどうするかわかりません。FF13でやってます。そして、webdriverの最後のバージョンで。

私はこれを読みましたSelenium2のFirefoxDriverの証明されたmouseOver回避策はありますか? そして、私はまさにこのようにしました:

アクション ビルダー = 新しいアクション (ドライバー); アクション hoverOverRegistrar = builder.moveToElement(menuRegistrar); hoverOverRegistrar.perform();

しかし、オブジェクトを指すと、他のオブジェクト(ドロップダウンメニュー)が一瞬だけ表示されてから非表示になるため、セレンは表示されたドロップダウンメニューをクリックする時間が常にあるとは限りません。

私は何を間違っていますか?

4

2 に答える 2

3

ホバー可能な要素 JavaScript を使用するのが最善だと思います。Action Builder は失敗率が高くなる傾向があり、ページをスクロールすると他のホバー可能な要素が表示され、必要な要素が見えなくなります。私はこの方法をオンラインのどこかで見つけました (場所を思い出せません)。私が試した他のどの方法よりもはるかにうまく機能します。

String javaScript = "var evObj = document.createEvent('MouseEvents');" +
                "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
            "arguments[0].dispatchEvent(evObj);";


IJavaScriptExecutor executor = driver as IJavaScriptExecutor;
executor.ExecuteScript(javaScript, webElement);

使用できる場所のメソッドにスローするだけで、カーソルを合わせたいドライバーと要素を渡すだけで設定されます。

于 2016-04-26T18:24:53.817 に答える
2

このようなことがうまくいくはずです-

Actions builder = new Actions(driver);
builder.moveToElement(DropDown tab element).click().moveToElement(Tab you want to click element).click().build().perform();

問題がある場合は、取得したスタック トレースを投稿してください。

于 2012-07-04T05:44:03.273 に答える