我已经看到FluentWait和WebDriverWait在使用selenium的代码。FluentWait使用轮询技术,即它将针对特定的每个固定间隔进行轮询WebElement。我想知道如何WebDriverWait处理ExpectedConditions?
FluentWait
WebDriverWait
WebElement
ExpectedConditions
考虑以下Java示例:
WebDriverWait wait = new WebDriverWait(driver, 18); wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Account"))); WebElement element = driver.findElement(By.linkText("Account")); element.sendKeys(Keys.CONTROL); element.click();
ExpectedConditions.elementToBeClickable(By.linkText("Account"))监视器是否linkText("Account")可单击,或者等待18秒钟再单击?
ExpectedConditions.elementToBeClickable(By.linkText("Account"))
linkText("Account")
在您的示例中,在超时之前,wait.until(ExpectedConditions...)将持续linkText18秒(每0.5秒)查找一次“帐户”。
wait.until(ExpectedConditions...)
linkText
WebDriverWait是的子类FluentWait<WebDriver>。在其中,FluentWait您可以配置更多选项以及最长的等待时间,例如轮询间隔,忽略的异常等。此外,在您的代码中,您无需等待,然后可以findElement在下一步中执行以下操作:
FluentWait<WebDriver>
findElement
WebElement element = wait.until( ExpectedConditions.elementToBeClickable(By.linkText("Account")));