selenium显式等待和隐式等待

上一篇 / 下一篇  2018-08-01 17:21:16 / 个人分类:myEclipse

自动化测试中,有时你需要等待一个任务结束后才能进行下一个任务,所以两个任务之间就需要间隔一段等待时间,而Selenium提供了两种方法,在我们编写自动化测试代码时,我们最好不要使用Thread.Sleep(),因为这种方式需要等待确定的时间。

一、显式等待(每隔500ms就查询一次元素,如果存在就返回)

  1. WebDriver driver =newChromeDriver();
  2. driver.get("https://www.baidu.com");
  3. WebElement element = (newWebDriverWait(driver,5))
  4. .until(ExpectedConditions
  5. .presenceOfElementLocated(By.id("kw")));
上面第三条语句表示,在0-5s中去定位id为“kw”的元素,WebDriverWait默认每500ms就调用一次ExpectedCondition直到定位成功或者时间截止,ExpectedCondition的返回值要么为true要么为不为空的对象,在规定时间内若没有定位成功元素,则until()会抛出org.openqa.selenium.TimeoutException 。

二、隐式等待(隐式等待是在尝试发现某个元素的时候,如果没能立刻发现,就等待固定长度的时间。

  1. driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
  2. driver.get("https://www.baidu.com");
  3. WebElement element1 = ((ChromeDriver) driver).findElementById("kw");

上面第一条语句表示,如果元素不是马上就能定位成功,则WebDriver会在5s时间内去搜索DOM定位元素,这个时间一旦设置后它的范围就是WebDriver的整个生命周期,如果在规定时间内没有定位成功,则会抛出org.openqa.selenium.NoSuchElementException。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2018-08-20  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 1032
  • 日志数: 7
  • 建立时间: 2014-10-03
  • 更新时间: 2018-08-01

RSS订阅

Open Toolbar