среда, 24 сентября 2014 г.

Если тест зависает при попытке кликнуть на элемент, по клику на который должен открыться popup

Java Selenium WebDriver  испытывает некоторые трудности при обращении с элементами, при клике на которых открывается PopUp (всплывающее окно).
Так например, если сделать обычный клик webelement.click() по такому элементу, то тест зависнет и не упадет ни по таймауту ни по каким другим условиям. Можно лишь закрыть браузер вручную или остановить процесс. Такой эффект появляется только для некоторых сочетаний версий браузера-вебдрайвера-сайта, но тем не менее для меня в свое время это было огромной проблемой.

Чтобы клик проходил нормально, и ничего не зависало, можно нажимать на кнопку с помощью следующего джаваскрипта:

WebElement element;
//...
JavascriptExecutor executor = (JavascriptExecutor) getDriver();
        executor.executeScript("var el=arguments[0]; setTimeout(function() { el.click(); }, 100);", element);

Эта функция точно также кликнет по элементу, как и обычный click().