如何设置 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 和 manage 方法一起使用。
语法
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();
}
}

