首页 > 解决方案 > Selenium webdriver(Java)中的显式等待类型?

问题描述

Selenium webdriver (Java) 中的显式等待中存在哪些类型的等待?显式等待中有任何类型吗?如果是请详细说明..

标签: seleniumwebdriverexplicit

解决方案


有以下等待:

流利等待

这是一种特殊的等待,您可以设置等待某个条件的时间,以及检查条件的频率,例如。等待 10 秒并每隔 1 秒检查一次,如果您预计此异常会持续一段时间,请忽略“NoSuchElementExceptions”异常。

  Wait wait = new FluentWait(driver)
    .withTimeout(30, SECONDS)
    .pollingEvery(5, SECONDS)
    .ignoring(NoSuchElementException.class);

  WebElement foo = wait.until(new Function() {
    public WebElement apply(WebDriver driver) {
    return driver.findElement(By.id("foo"));
  }

  });

显式等待 这是一种等待,您可以将其设置为等待您可能喜欢的任何条件。通常,您可以使用一些预构建的ExpectedConditions

预期条件类型: https ://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/support/ui/ExpectedConditions.java

WebDriverWait wait = new WebDriverWait(driver, 10);

    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

隐式等待 等待元素,直到在初始化对象时抛出异常,并且它在整个会话中定义

 WebDriver driver = new FirefoxDriver();
 driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
 driver.get("http://...");
 WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

PageLoadTimeout 页面加载需要多长时间:

 driver.manage().timeouts().pageLoadTimeout(100, SECONDS);

设置脚本超时

如果你有异步脚本。在引发错误之前等待异步脚本完成执行的时间。

driver.manage().timeouts().setScriptTimeout(100,SECONDS);

推荐阅读