• Selenium(Java)-显式等待和隐式等待


    https://blog.csdn.net/yanhongyu315/article/details/80701005

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

    一、显式等待

    WebDriver driver = new ChromeDriver();
    driver.get("https://www.baidu.com");
    WebElement element = (new WebDriverWait(driver,5)).until(ExpectedConditions.presenceOfElementLocated(By.id("kw")));

    上面第三条语句表示,在0-5s中去定位id为“kw”的元素,WebDriverWait默认每500ms就调用一次ExpectedCondition直到定位成功或者时间截止,ExpectedCondition的返回值要么为true要么为不为空的对象,在规定时间内若没有定位成功元素,则until()会抛出org.openqa.selenium.TimeoutException 。
    二、隐式等待

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

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

    【备注】显示和隐式最好不要混用,混用的话可能会造成不可预估的等待时间,比如说设置了隐式等待10s,显示等待15s,可能在20s后就会发生超时
                   需要特别说明的是:隐性等待对整个driver的周期都起作用,所以只要设置一次即可

  • 相关阅读:
    Oracle之内存结构(SGA、PGA)
    Android添加快捷方式(Shortcut)到手机桌面
    Android悬浮窗实现 使用WindowManager
    Android闹钟 AlarmManager的使用
    JavaScript学习13 JavaScript中的继承
    Android Content Provider Guides
    Android存储访问及目录
    ReflectUitls类的编写和对反射机制的解析
    Java File类总结和FileUtils类
    JavaScript学习12 JS中定义对象的几种方式
  • 原文地址:https://www.cnblogs.com/person008/p/10980168.html
Copyright © 2020-2023  润新知