Appnium、Selenium常用的等待元素的三种方法
2018-01-19 11:35
585 查看
学过或者了解过Appium、Selenium都知道,等待元素加载一般常用的三种方法:
强制等待
隐试等待
显示等待
(1)强制等待 ----sleep
示例:Thread.sleep(10000); 强制等待10s
强制等待方式不是全局限制,10s的等待时间只是对当前操作生效。
(2)隐式等待 ----implicitlyWait
示例:driver.manage().timeouts().implicitlyWait(10,
TimeUnit.SECONDS);
全局等待30s,不管元素是否已经加载出来。
当使用了隐式等待的时候,如果WebDriver没有找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0
一旦设置了隐式等待,则它存在整个WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢。
它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。
implicitly_wait()方法比sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
(3)显示等待
----WebDriverWait
显示等待,这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来决定,如果该元素在设置的等待时间(示例设置的时间是30s)以内出现就不在等待。
显示等待也可以这样写:
WebElement element = (new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By.name("tj_trnews"))));
强制等待
隐试等待
显示等待
(1)强制等待 ----sleep
示例:Thread.sleep(10000); 强制等待10s
强制等待方式不是全局限制,10s的等待时间只是对当前操作生效。
package com.sandy; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class ElementWait { private static WebDriver driver; public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://www.baidu.com/"); driver.manage().window().maximize(); //最大化 WebElement element = driver.findElement(By.name("tj_trnews")); //目标元素 Thread.sleep(1000); //强制等待1s driver.quit(); } }
(2)隐式等待 ----implicitlyWait
示例:driver.manage().timeouts().implicitlyWait(10,
TimeUnit.SECONDS);
全局等待30s,不管元素是否已经加载出来。
当使用了隐式等待的时候,如果WebDriver没有找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常
换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0
一旦设置了隐式等待,则它存在整个WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢。
它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。
implicitly_wait()方法比sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
package com.sandy; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class ElementWait { private static WebDriver driver; public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://www.baidu.com/"); driver.manage().window().maximize(); //最大化 WebElement element = driver.findElement(By.name("tj_trnews")); //目标元素 driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); //隐式等待 driver.quit(); } }
(3)显示等待
----WebDriverWait
显示等待,这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来决定,如果该元素在设置的等待时间(示例设置的时间是30s)以内出现就不在等待。
显示等待也可以这样写:
WebElement element = (new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By.name("tj_trnews"))));
package com.sandy; import java.util.concurrent.TimeUnit; import o 4000 rg.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; public class ElementWait { private static WebDriver driver; public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://www.baidu.com/"); driver.manage().window().maximize(); //最大化 /** * 显示等待,等待时间设置的时30s * element即时所需要等待的元素 */ WebDriverWait wait = new WebDriverWait(driver, 30); WebElement element = wait.until(new ExpectedCondition<WebElement>() { @Override public WebElement apply(WebDriver driver) { return driver.findElement(By.name("tj_trnews")); } }); driver.quit(); } }
相关文章推荐
- selenium之 一个不常用但又很有用的方法(switch_to.active_element),获取当前焦点元素
- appium三种等待元素的方法
- selenium之 一个不常用但又很有用的方法(switch_to.active_element),获取当前焦点元素
- Selenium Webdriver元素定位的八种常用方法
- Selenium Webdriver元素定位的八种常用方法
- [Selenium]等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的
- 清理浮动的三种常用方法以及如何居中一个浮动元素
- 【转】selenium webdriver三种等待方法
- Selenium:元素等待的4种方法
- Selenium Webdriver元素定位八中常用方法
- Python实现列表删除重复元素的三种常用方法分析
- Selenium:元素等待的4种方法
- selenium webdriver三种等待方法
- python里三种等待元素的方法
- 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下
- appium三种等待元素的方法
- appium三种等待元素的方法
- selenium之 一个不常用但又很有用的方法(switch_to.active_element),获取当前焦点元素
- Selenium等待元素的处理方法
- Python appium selenium当页面元素 没有加载出来时 ,等待元素加载出来的方法