1

在到处搜索之后,我似乎找不到让鼠标悬停事件在 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 上很好)。

有没有人有解决这个问题的方法?

谢谢你。

4

1 回答 1

1

我的解决方法是手动display将元素的 css 属性更改为inline(或block- 取决于您的 HTML 代码)隐藏并应出现在“鼠标悬停”上(或调用添加所需元素的 JavaScript,甚至取决于您的HTML 代码)。

我可以具体告诉你你可以写什么代码,如果你能告诉我 3 件事:

  1. Selenium 使用什么语言
  2. 之前元素的 HTML/css 属性mouseover
  3. 之后元素的 HTML/css 属性mouseover
于 2012-12-25T16:32:41.747 回答