selinium之三种等待

程序执行的速度要比浏览器渲染的速度要快很多
四种等待:强制等待隐式等待显示等待、流畅等待

需要注意:显示等待、隐式等待,不能同时使用,同时使用可能会出现意想不到的等待结果

1.强制等待

字如其意。每次页面渲染都会等待3秒(Thread.sleep(3000)),这个就会使 程序阻塞进行,这种方式在自动化测试中会用到,但用的不是特别多,这是因为

每一个自动化方法就是一个自动化测试用例,比如一个用例需要 10s,100测试用例 1000s,200个用例 2000s,这样耗费时间太多了,只能接受十几秒或几分钟内

   public void dilireba_test() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        ChromeDriver driver = new ChromeDriver(options);
        Thread.sleep(3000);
        driver.get("https://www.baidu.com");
        Thread.sleep(3000);
//        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(3000);
        driver.quit();
    }

优点:语法简单,适合调试的时候用

缺点:需要等待固定的时间,造成时间的大量消耗。大大减少了自动化

2.隐式等待

隐式等待会作用于 driver 的整个生命周期在规定的时间范围内,轮询等待元素出现之后就立即结束,如果在规定时间的时间内元素仍然没有出现,则会抛出一个NoSuchElementException异常。

        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//写在任意一个位置都可以
        driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴")

优点:节省了大量的等待时间,元素展示之后(页面所有元素)就可以直接执行下一步,执行效率高

缺点:需要等待所有的元素(页面所有元素)都展现才会执行下一个,仍然会后额外的浪费

3.显式等待

 ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        ChromeDriver driver = new ChromeDriver(options);
//        Thread.sleep(3000);
        driver.get("https://www.baidu.com");
//        Thread.sleep(3000);
//        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));

        driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
//        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#su")).click();
//        Thread.sleep(3000);
        //创建显示等待对象foo
        WebDriverWait foo = new WebDriverWait(driver, Duration.ofSeconds(3));
//判断查看当前元素是否存在  
//ExpectedConditions类提供了许多自动化检测的方法      
foo.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#\\34  > div > div > h3 > a")));
        exit(driver);
    }
    public void exit(ChromeDriver driver){
        driver.quit();

    }

优点:针对某一个元素来进行等待,极大降低了自动化整体等待的时间

缺点:代码复杂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值