我在最新版本的 Firefox (15.0) 和当前的 2.25 Selenium 中看到了类似的问题。我有一个基于 Javascript 的水平菜单,当您将鼠标悬停在菜单标题上时,它会显示菜单选项。IWebDriver
我正在使用的代码是:
var menu = driver.FindElement(By.Id("menuId"));
var option = driver.FindElement(By.Id("menuItemId"));
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
Actions actions = new Actions(driver);
actions.MoveToElement(menu, 5, 5).Perform();
wait.Until<bool>((d) =>
{
return option.Displayed;
});
option.Click();
这适用于 IE 和 Chrome,但不适用于 Firefox -“mouseOver”(MoveToElement
)操作永远不会发生,因此菜单项永远不会可见并且测试超时(并且失败)。
当我从 NUnit 运行测试时,我的测试代码中内置了一些配置支持,因此我可以控制是直接使用 Web 驱动程序还是使用WebDriverBackedSelenium
(当然与 RC 服务器一起使用) . 这使我可以解决配置问题,以便如果我在“Firefox 模式”下运行测试,我可以调用服务器,然后ISelenium
像这样使用接口:
selenium.Click("id=menuItemId");
这很好用。我有一个方法可以确定测试运行的“模式”并相应地调用特定的单击操作,即选择IWebDriver
直接使用接口或将其包装通过WebDriverBackedSelenium
以使用ISelenium
接口。
如果 Firefox 驱动程序将来开始工作,我可以再次通过配置切换到本机使用 Firefox Web 驱动程序。