如何设置 Selenium WebDriver 的获取超时?

seleniumautomation testingtesting tools

我们可以设置 Selenium WebDriver 的获取超时。有很多方法可以实现超时。它们列在下面 −

  • setScriptTimeout.

  • pageLoadTimeout.

  • implicitlyWait.

setScriptTimeout 是用于设置 WebDriver 时间的方法。这通常用于异步测试在抛出异常之前完成。超时的默认值为 0。

此方法通常用于 Selenium 中的 JavaScript 命令。如果我们忽略设置脚本的时间,executeAsyncScript 方法可能会失败,因为 JavaScript 执行时间过长。

如果将超时时间设置为负数,则 JavaScript 可以无限期地执行。

语法

driver.manage().timeouts().setScriptTimeout(5,TimeUnit.SECONDS);

pageLoadTimeout 方法用于设置抛出异常之前整个页面加载的时间。如果将超时时间设置为负数,则加载页面所需的时间将无限期地延长。

此超时通常与 navigate 和 ma​​nage 方法一起使用。

语法

driver.manage().timeouts().pageLoadTimeout(4, TimeUnit.SECONDS);

示例

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class PageLoadWt{
   public static void main(String[] args)
   throws InterruptedException{
      System.setProperty("webdriver.chrome.driver",
      "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      //设置页面加载时间
      driver.manage().timeouts().pageLoadTimeout(4, TimeUnit.SECONDS);
      driver.get("https://www.tutorialspoint.com/about/about_careers.htm");
      driver.quit();
   }
}

implicitlyWait 是应用于 Web 驱动程序的方法,用于等待页面中元素可用。它是对每个元素的全局等待。如果等待时间过后元素仍然不可用,则会抛出 NoSuchElementException。

语法

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

示例

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class ImplicitWt{
   public static void main(String[] args)
   throws InterruptedException{
      System.setProperty("webdriver.chrome.driver",
      "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      //设置隐式等待
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      driver.get("https://www.tutorialspoint.com/about/about_careers.htm");
      driver.quit();
   }
}

相关文章