使用 Selenium 的 Firefox WebDriver 2.20,当鼠标悬停在我的网页上的链接上时,我需要显示一个工具提示。
我尝试使用 Selenium 的 Action 类来执行此操作,但我得到一个 ClassCastException:$Proxy7 与 org.openqa.selenium.internal.Locatable 不兼容。这是我迄今为止尝试过的:
Actions builder = new Actions(driver);
WebElement link = driver.findElement(By.tagName("a"));
builder.moveToElement(link).build().perform();
ClassCastException 发生在 moveToElement() 方法中,当我传递给函数的 WebElement 被强制转换为可定位对象时。方法是:
public Actions moveToElement(WebElement toElement) {
action.addAction(new MoveMouseAction(mouse, (Locatable) toElement));
return this;
}
我也试过下面的代码,导致同样的错误:
WebElement link = driver.findElement(By.tagName("a"));
Mouse mouse = ((HasInputDevices) driver).getMouse();
mouse.mouseDown(((Locatable)link).getCoordinates());
我听说这些方法适用于以前的 Firefox 版本,但不适用于最近的 Firefox 版本(我使用的是 FF12)。如果这是真的,还有其他方法可以在 Selenium 中模拟鼠标悬停吗?任何帮助使此功能正常工作将不胜感激!
解决方案 在挖掘了一段时间并尝试了不同的代码片段后,我找到了解决问题的方法。对于将来遇到此问题的任何人,我必须禁用 Firefox 驱动程序的本机事件,如下所示:
DesiredCapabilities cap = DesiredCapabilities.firefox();
FirefoxProfile prof = new FirefoxProfile();
prof.setEnableNativeEvents(false);
cap.setCapability("firefox_profile", prof);