どこでも検索した後、Mac OSX で Firefox 16.0.2 および Selenium 2.28 でマウスオーバー イベントを動作させるための解決策が見つからないようです (これはおそらく Mac OSX 固有の問題だと思いますが、このコードは Windows マシンで動作するはずです)。 )。私は何かElseOnScreenを明らかにするはずのobjectOnScreenの上に置く次のものを持っています:
//set enable native events is suggested by another post to make these native events work
FirefoxProfile prof = new FirefoxProfile();
prof.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(prof);
// Hover over objectOnScreen which should reveal somethingElseOnScreen
Action builder;
Actions hover = new Actions(driver);
WebElement objectOnScreen = driver.findElement(By.xpath("//..."))
hover.moveToElement(objectOnScreen);
builder = hover.build();
builder.perform();
// Click something new that should appear on screen
By somethingElseOnScreen = By.xpath("//...");
WebDriverWait wait = new WebDriverWait(driver, 5L);
wait.until(ExpectedConditions.visibilityOfElementLocated(somethingElseOnScreen));
driver.findElement(somethingElseOnScreen).click();
このコードは Chrome では機能しますが、Firefox では機能しません。Firefox では、somethingElseOnScreen は表示されず (wait.until... 行で NoSuchElementException が発生します)、ブラウザを見てもホバーが機能していません。
私もこれら2つのことを試しましたが、どちらも問題を解決しません:
- ホバー アクションとクリック アクションの両方でビルダー アクションを構築する
- EventFiringMouse を使用して画面上のそのポイントにカーソルを合わせますが、これも Firefox では機能しません (ただし、Chrome では問題ありません)。
この問題の回避策はありますか?
ありがとうございました。