如何在 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(); } }
广告