2

テストしたアプリケーションには、メニューの残りの部分を表示する (ドロップダウンする) ために、一番上のメニュー項目にマウスを合わせる必要があるいくつかのメニューがあります。

トップメニュー項目は次のようになります。

<li>
  <a href="javascript:void(0)">>        
    <span>Orders</span>

過去 3 ~ 4 か月間、これらのコード行を問題なく使用しました。

WebElement webElement = driver.findElement(By.xpath("//li/a[span[text()='Orders']]"));
new Actions(driver).moveToElement(webElement).build().perform();

これにより、[注文] メニュー項目の上にカーソルが移動し、ドロップダウンされた項目の 1 つを選択できるようになります。

現在、FF21 と WebDriver 2.33 を使用していますが、ホバーが機能しなくなりました。「注文」メニュー項目にカーソルを合わせると、メニューがドロップダウンしますが、すぐに再びロールアップします。これにより、サブメニュー項目を選択できなくなります。

私がこれまでに試したこと:

  • 上記のコードの後に​​待機を追加して、サブメニュー項目を選択できるようにしました: 機能しませんでした
  • 私が使用しているFirefoxプロファイルでネイティブイベントを有効にしました:動作に変更はありません

私はメニューシステムが機能せずに水中で死んでいるので、どんな助けも大歓迎です.

ところで: このコードIE で動作するので、FF 固有の問題と思われますか?

4

2 に答える 2

1

Selenium の変更ログ ( https://code.google.com/p/selenium/source/browse/java/CHANGELOG ) に基づくと、ネイティブ イベント (Actions クラスを使用しているため) は Firefox 20 でのみサポートされているようです。 v2.32.0 の変更ログで。次の行があります。

「このリリースは Firefox バージョンをサポートしています: 10esr、17esr、19、20」

v2.33.0 の変更ログには、Firefox 21 のサポートに関する記述はありません。

コードを Firefox 20 で試してください。

于 2013-08-06T09:19:51.107 に答える
0

次の Java スクリプトを試してください。私たちのプロジェクトではうまくいきました。うまくいけば、あなたにもうまくいくでしょう...乾杯...

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);";
         ((JavascriptExecutor) Driver.driver).executeScript(javaScript, element);
于 2013-08-06T09:42:19.250 に答える