Есть ли проверенный способ решения проблемы mouseOver для FirefoxDriver в Selenium2?

Я использую 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) : Спасибо Энди Тинкхэму и Люку Инман-Семерау:

//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 в браузерах (который не поддерживается кросс-платформенным). Таким образом, этот код может работать не так, если вы измените ОС. Вот почему я добавил детали об ОС и браузере. См. Вопрос в группе пользователей селена

19
задан ddavison 12 August 2013 в 18:06
поделиться