2010-06-04 2 views
11

Используя selenium-rc и java-клиент, я хочу проверить меню, которое открывается, когда пользователь нажимает на него курсор. Он закрывается, когда мышь покидает меню. Это делается с использованием :hover css, без javascript.Selenium and: hover css

В селене есть много способов для действий мыши, но ни один из них не запускает какой-либо css :hover стиль, который будет использоваться.

Google показывает, что я не одинок с этой проблемой, но решения не существует. Некоторые люди отмечают, что вам нужно добавить код javascript; однако, в selenium rc, я не думаю, что у меня даже есть подходящее место для дополнительного кода javascript для пользователя.

Мое желание будет следующий код для работы, учитывая, что DIV # navi_settings содержал меню, которое содержит - обычно невидимы - элемент:

selenium.mouseHover("css=div#navi_settings"); 
assertTrue(selenium.isVisible("//a[contains(text(), 'Text on link')]")); 

К сожалению, метод moveHover() еще не существует.

+0

Как вам решить эту проблему? – aradhak

+0

. Ручное тестирование этого :-(. –

ответ

0

Метод mouseOver активирует псевдослот :hover.

+0

С каких пор? В selenium server v2.0 [a2] с Core v2.0 [a2] это не сработало, по крайней мере, с firefox 3.5. –

+0

Затем используйте некоторый javascript для создания меню видно, когда вам нужно щелкнуть один из его элементов. Это то, что я закончил, и все получилось хорошо. Или попробуйте задать свой вопрос в списке рассылки Selenium. – techpeace

+0

список рассылки: хорошо, ваша точка, но видимость меню css driven, который работает хорошо. Тестирование кликов по пунктам меню не является проблемой. Я тестирую сам видимость *, когда пользователь наводил курсор на меню. Изменение приложения для использования javascript вместо css не может быть и речи. –

1

Я не мог найти способ сделать это, используя интерфейс Selenium. Однако, так как я использую Selenium 2, я могу использовать WebDriver API, согласно http://groups.google.com/group/selenium-developers/msg/8210537dde07155f?pli=1

В вашем случае, что-то подобное может работать, если вы можете перейти на Selenium 2:

WebDriver webDriver; 
... 
((RenderedWebElement) webDriver.findElement(By.cssSelector("div#navi_settings"))).hover(); 
+1

Это работает на платформах с поддержкой родных событий Selenium (Linux и Windows). На Mac вам сейчас не повезло: https://groups.google.com/group/webdriver/browse_thread/thread/c08444af61cc2898 – John