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

Другие вопросы по тегам