При прогоне тестов селениум как то через раз находит элементны.бывает что поменяю тип локатора и начинает находить а потом опять не находит.это как играть в рулетку =\
для ожидания прогрузки страницы пользую driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
думаю не одна с этим сталкивалась.если есть какие то идеи или предложения в решении проблемы буду рада послушать
ну для начала проверь что этот элемент вообще появляется сделай что то наподобии
while (selenium.isElementPresent("tvou_element")) {
тут ожидание в 1 сек ...
}
и смотриш - если он и за 30 сек не появится - значит его там нету а если появится, тебе просто надо или сделать конструкцию на ожидание появления элемента или твой таймаут увеличить временно с 10 до 30 к примеру
На абстрактном примере тяжело разробраться. Было бы отлично, если взглянуть на сам код. Потому что implicitlyWait должен ждать 10 секунд. Есть еще вариант ожидания через WebDriverWait объект.
{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }WebDriver driver = new FirefoxDriver();
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(new ExpectedCondition<WebElement>(){
@Override
public WebElement apply(WebDriver d) {
return d.findElement(By.id("myDynamicElement"));
}});{/syntaxhighlighter}
я проходила в пошаговом режиме.должна сказать если запускать тесты по одному , то все проходит.если запускать весь набор, то через раз.при чем падают постоянно разные тесты.я не могу найти никакой закономерности. загруженная страница может висеть минуту а элемент все равно будет не найден (((
я могу сказать, что в таком режиме, конечно тяжело чем-то помочь.
мои догадки будут такие, что приложение ведет себя по разному, в каких-то ситуациях, может быть на визуальном уровне не отличается, а вот на уровне кода, может отличаться.
можно попробовать тогда сохранять весь html при прогоне теста и сравнивать содержимое на наличии нужных елементов.
Если бы вы могли прикрепить вырезки из кода, Так будет проще разобраться в чем проблема. У меня еще такое подозрение, что где-то не так сконфигурированы методы запуска тестов в setUp и останова в tearDown()
Рааскажите про webDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
как вы его используете? только один раз после создания профиля или еще как-то? (в инете видела варианты использования буквально перед каждым FindElement)
У меня точно такая же проблема, наблюдается в браузере Firefox 17-й версии, но если запускать на 9-й то все в порядке. Вот сейчас у меня дилема, первый вариант - ипользовать старую версию браузер, второй - ХЗ что делать и как убрать эту рандомность.