NoneOrg .openqa.selenium.NoSuchElementException: нет такого элемента: невозможно найти элемент с помощью FluentWait
Я перехожу с WebDriverWait на FluentWait, потому что он устарел, и теперь я получаю ошибку
private val waitForElement = FluentWait(DriverFactory.driver).withTimeout(Duration.ofMinutes(1)).pollingEvery(Duration.ofSeconds(1))
@Step("Choose button")
fun Wizard() {
waitForElement.until(ExpectedConditions.elementToBeClickable(firstPage.wizardLocator))
firstPage.wizardLocator?.click()
?: throw IllegalStateException("could not locate the wizard button")
}
Получение этой ошибки:
Message: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element
1 ответ
Согласно ExpectedConditions.elementToBeClickable()
Ожидание проверки элемента является видимым и включенным, так что вы можете щелкнуть по нему.
Вы должны использовать вышеуказанную функцию, когда уверены, что элемент существует на странице, но хотите подождать, пока с ним не удастся взаимодействовать. Вы получаете исключение, потому что элемент вообще отсутствует на странице.
Итак, варианты в:
- используйте .ignoring(NoSuchElementException.class) для подавления исключения, если / когда элемент отсутствует в DOM
- или, что еще лучше, сначала используйте senceOfNestedElementLocatedBy (), чтобы убедиться, что элемент есть и находится на странице - вы можете еще раз подождать его "кликабельность"
Дополнительная информация: Как использовать Selenium для тестирования веб-приложений с использованием технологии AJAX