如何设置 Selenium webdriver 的获取超时时间?
我们可以设置 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(); //set time for page load driver.manage().timeouts().pageLoadTimeout(4, TimeUnit.SECONDS); driver.get("https://tutorialspoint.com/about/about_careers.htm"); driver.quit(); } }
**implicitlyWait** 是应用于 webdriver 的方法,用于等待页面中元素可用。它是对每个元素的全局等待。如果在等待时间过后元素仍然不可用,则会抛出 **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(); //set implicit wait driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.get("https://tutorialspoint.com/about/about_careers.htm"); driver.quit(); } }
广告