我从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
根据 ExpectConditions.elementToBeClickable((
检查元素的期望是可见的,并且已启用,以便您可以单击它。
当您确定该元素存在于页面上但您希望等到可以与之交互时,您应该使用上述函数。您收到异常是因为该元素根本不存在于页面上。
因此,选项在:
- 使用 .ignoring(NoSuchElementException.class( 在 DOM 中不存在元素时抑制异常
- 甚至更好的是首先使用 presenceOfNestedElementTLocationBy(( 来确保元素在那里,一旦它出现在页面上 - 您可以再次等待其"可点击性">
详细信息:如何使用 Selenium 使用 AJAX 技术测试 Web 应用程序