mindjin
(Alex)
29.Январь.2015 18:51:23
#1
Использую следующий метод для ожидания элемента на странице:
private void waitCounter(WebDriver driver){
(new WebDriverWait(driver, 25)).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("span[request-count='0']")));
}
каждые 10 секунд выскакивает exception, но ожидание продолжается:
org.openqa.selenium.NoSuchElementException: Unable to locate element: {“method”:“css selector”,“selector”:“span[request-count=‘0’]”}
Command duration or timeout: 10.76 seconds
Я так полагаю это происходит из-за установленного в драйвере ожидания:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Но разве это правильное поведение используя ExpectedConditions? Как это исправить? Спасибо.
alshipovalov
(Александр Шиповалов)
30.Январь.2015 01:11:19
#2
Да все верно. Установите имплицитные ожидания в 0 - перед использованием wait
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
Вы используете этот метод, а он в свою очередь дергает findElement, который и выкидывает такой эксепшн.
Это нормальное поведение.
Уменьшение значения имплицидного ожидания лишь приведет к тому, что ошибка будет выскакивать не каждые 10 секунд, а каждый период времени, который вы установите(если 0 - то будет просто без остановки)
1 лайк
Taras
(Taras)
31.Январь.2015 18:07:20
#5
ви можете ето игнорировать , посмотрите на FluentWait и метод polling i ignore
1 лайк
private void waitCounter(WebDriver driver){
(new WebDriverWait(driver, 25)).ignoring(NoSuchElementException.class).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("span[request-count='0']")));
}
1 лайк
vmaximv
(vmaximv)
02.Февраль.2015 05:27:47
#7
WebDriverWait
игнорит NoSuchElementException
по дефолту.
ну дак как я понял смущало то, что он логгируется