selenium driver.get 默认等待多久
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium driver.get 默认等待多久相关的知识,希望对你有一定的参考价值。
默认是无限等待的,我试过等了半个小时都没反应。在driver.get()前可以设置等待时间。
例如driver.set_page_load_timeout(5) 参考技术A 显式等待是,先于代码的继续执行,而定义的等待某个条件发生的代码。最糟糕的情况是Thread.sleep(),设置条件为一个需要等待的精确时间段。有一些提供的便利方法,可以帮助你编写代码仅仅等待需要的时间。
Selenium_等待页面加载完毕
隐式等待
WebDriver driver = new FirefoxDriver(); driver.get("www.baidu.com"); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); WebElement element = driver.findElement(By.cssSelector(".abc")); ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
注:隐式等待设置的内容在driver的整个生命周期都有效,所以实际使用过程当中有弊端。
等待20秒元素还不存在,就会抛出异常 org.openqa.selenium.NoSuchElementException
显式等待
显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。
显式等待可以自定义等待的条件,用于更加复杂的页面等待条件
等待的条件 |
WebDriver方法 |
页面元素是否在页面上可用和可被单击 |
elementToBeClickable(By locator) |
页面元素处于被选中状态 |
elementToBeSelected(WebElement element) |
页面元素在页面中存在 |
presenceOfElementLocated(By locator) |
在页面元素中是否包含特定的文本 |
textToBePresentInElement(By locator) |
页面元素值 |
textToBePresentInElementValue(By locator, java.lang.String text) |
标题 (title) |
titleContains(java.lang.String title) |
只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。
public static void testWait2(WebDriver driver) { driver.get("www.baidu.com"); WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".abc"))); WebElement element = driver.findElement(By.cssSelector(".abc")); ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element); }
以上是关于selenium driver.get 默认等待多久的主要内容,如果未能解决你的问题,请参考以下文章