在到处搜索之后,我似乎找不到让鼠标悬停事件在 Mac OSX 上与 Firefox 16.0.2 和 Selenium 2.28 一起工作的解决方案(我相信这应该是 Mac OSX 特有的问题,但这段代码应该在 Windows 机器上工作)。我有以下悬停在 objectOnScreen 上的内容,它应该显示一些 ElseOnScreen:
//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),当我观看浏览器时,我从来没有看到悬停工作。
我也尝试了这两件事,但都没有解决问题:
- 使用悬停和单击操作构建构建器操作
- 使用 EventFiringMouse 并将鼠标悬停在屏幕上的该点上,但这在 Firefox 上也不起作用(但在 Chrome 上很好)。
有没有人有解决这个问题的方法?
谢谢你。