有没有一个经过验证的鼠标悬停解决方法在Selenium2中的FirefoxDriver?
2022-09-02 13:17:25
我使用的是Selenium 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(与Firefox 4)中却没有。我已经用代码尝试了很多东西,但没有任何效果。我必须使用FirefoxDriver,因为我正在测试的应用程序在IE上表现不佳。
正如您可能猜到的那样,在触发 mouseOver 事件之前,“注册器”链接处于隐藏状态。
任何经过验证的解决方法?感谢您抽出宝贵时间接受采访...
编辑:还尝试了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();
注意:高级用户交互 API 在浏览器上使用 NativeEvents(跨平台不支持)。因此,如果您更改操作系统,此代码可能无法像那样工作。这就是我添加操作系统和浏览器详细信息的原因。请参阅硒用户组中的问题