Реализация Selenium 2 WebDriver неправильно обрабатывает расширяемые меню - PullRequest
2 голосов
/ 30 марта 2011

У меня есть веб-страница, где нажатие на кнопку (скажем, EXPAND_CONTEXT_MENU, реализованное внутри как href) приводит к расширению скрытого контекстного меню под ним, после чего я нажимаю на пункты меню в контекстном меню.

Поскольку Selenium 2 не разрешает прямой доступ к скрытым элементам, я сначала нажимаю EXPAND_CONTEXT_MENU, а затем выбираю нужный пункт меню.

При попытке протестировать это решение InternetExplorerDriver отображает своеобразное поведение. Первый щелчок по EXPAND_CONTEXT_MENU хорошо расширяет меню, но до того, как может произойти второй щелчок (для выбора пункта меню), EXPAND_CONTEXT_MENU снова свернут. Это приводит к ElementNotVisibleException, когда происходит второй щелчок.

FirefoxDriver хорошо выполняет этот тест. Я использую IE8 и Firefox для тестирования.

Примечание - в фактическом AUT при наведении мыши на EXPAND_CONTEXT_MENU разворачивается контекстное меню.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

Вероятно, существует привязка события, которая запускается неправильно.Попробуйте запустить различные события через jquery (предполагается, что driver - это экземпляр WebDriver, а element - это элемент, для которого вы хотите запустить событие):

((IJavaScriptExecutor)driver).ExecuteScript(string.Format("$(arguments[0]).trigger('click');", element);
0 голосов
/ 25 мая 2011

используйте функцию мыши, чтобы навести указатель мыши на соответствующий элемент:

Locatable hoverItem = (Locatable) driver.findElement(By.xpath("//foo")); 
Mouse mouse = ((HasInputDevices) driver).getMouse();
mouse.mouseMove(hoverItem.getCoordinates());

Вам потребуется импортировать локализуемый, по умолчанию он не загружен:

import org.openqa.selenium.internal.Locatable;
...