流利的等待和WebDriver等待 - 差异

Sat*_*ish 8 selenium selenium-webdriver

我已经看到了使用Selenium的代码FluentWaitWebDriverWait代码.FluentWait使用轮询技术,即它将针对特定的每个固定间隔进行轮询WebElement.我想知道该怎么WebDriverWaitExpectedConditions

考虑以下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();
Run Code Online (Sandbox Code Playgroud)

ExpectedConditions.elementToBeClickable(By.linkText("Account"))监视器是否linkText("Account")可点击或在点击之前等待18秒?

nil*_*esh 10

在你的例子中,在超时前wait.until(ExpectedConditions...)将持续观察(每0.5秒)linkText"账户"18秒.

WebDriverWait是.的子类FluentWait<WebDriver>.在FluentWait你有更多的配置选项,以及最长的等待时间,如轮询间隔,忽略异常等.另外,在你的代码中,你不需要等待,然后findElement在下一步,你可以做:

WebElement element = wait.until(
        ExpectedConditions.elementToBeClickable(By.linkText("Account")));
Run Code Online (Sandbox Code Playgroud)