[Resolved] [ExpectedConditions] В процессе ожидания каждые 10 секунд вываливается ошибка (NoSuchElementException).

Использую следующий метод для ожидания элемента на странице:

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? Как это исправить? Спасибо.

Да все верно. Установите имплицитные ожидания в 0 - перед использованием wait

driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);

Вы используете этот метод, а он в свою очередь дергает findElement, который и выкидывает такой эксепшн.
Это нормальное поведение.
Уменьшение значения имплицидного ожидания лишь приведет к тому, что ошибка будет выскакивать не каждые 10 секунд, а каждый период времени, который вы установите(если 0 - то будет просто без остановки)

1 лайк

Спасибо за ответы.

ви можете ето игнорировать , посмотрите на 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 лайк

WebDriverWait игнорит NoSuchElementException по дефолту.

ну дак как я понял смущало то, что он логгируется :smile: