我在用着硒Java 2.0b3。我有这个代码:
...
WebDriver driver = new InternetExplorerDriver();
Selenium seleniumDriver = new WebDriverBackedSelenium(driver, "http://localhost:8088/Sistema/");
...
...
RenderedWebElement menuRegistrar = (RenderedWebElement)driver.findElement(By.xpath("//a[normalize-space()='Registrar']"));
seleniumDriver.mouseOver("//a[normalize-space()='Registrar']"); //makes element visible
menuRegistrar.click();
seleniumDriver.mouseOut("//a[normalize-space()='Registrar']");
...
与 InternetExplorerDriver 一起工作就像一个魅力(与IE 8),但它不适用于 FirefoxDriver(使用火狐4)。我已经用代码尝试了很多东西,但没有任何效果。和我must使用 FirefoxDriver 因为我正在测试的应用程序在 IE 上表现不佳。
正如您可能猜到的,“Registrar”链接是隐藏的,直到 mouseOver 事件触发为止。
有任何经过验证的解决方法吗?谢谢你的时间...
EDIT: 还尝试了 ChromeDriver 与 Chrome 11。也不起作用。如果有适用于 Chrome 的解决方法,我会接受!
答案(使用 Selenium Java 2.0RC1、Windows 7、Firefox 4 的工作代码):感谢 Andy Tinkham 和 Luke Inman-Semerau:
//get the element that shows menu with the mouseOver event
WebElement menu = driver.findElement(By.xpath("//div[@id='nav']/li[3]"));
//the element that I want to click (hidden)
WebElement menuOption = driver.findElement(By.xpath("//a[normalize-space()='Registrar']"));
//build and perform the mouseOver with Advanced User Interactions API
Actions builder = new Actions(driver);
builder.moveToElement(menu).build().perform();
//then click when menu option is visible
menuOption.click();
NOTE:高级用户交互 API 在浏览器上使用 NativeEvents(不支持跨平台)。因此,如果您更改操作系统,此代码可能不会像那样工作。这就是我添加操作系统和浏览器详细信息的原因。看硒用户组中的问题 http://groups.google.com/group/selenium-users/browse_thread/thread/7096b023ffc631fc
我建议尝试高级用户操作 API http://code.google.com/p/selenium/wiki/AdvancedUserInteractions这是昨天在 2.0rc1 版本中添加的,因为看起来您仍在使用 Selenium 1 API(通过 WebDriverBackedSelenium),并且我不确定提供了多少 Firefox 4 支持。我没有使用 Java 进行 Selenium 测试,但在我看来,您想要做的是这样的:
Actions builder = new Actions(driver); // Or maybe seleniumDriver? Not sure which one to use
Actions hoverOverRegistrar = builder.moveToElement(menuRegistrar);
hoverOverRegistrar.perform();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)