zoukankan      html  css  js  c++  java
  • 8.selenium之设置元素等待

    WebDriver提供了两种类型的等待:显式等待和隐式等待。

    1.显示等待

    WebDriver提供了显式等待方法,专门针对某个元素进行等待判断。

    import org.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.WebDriverWait;
    import org.openqa.selenium.support.ui.ExpectedCondition;
     
     
    public class TimeOut01 {
     
      public static void main(String[]args) throws InterruptedException {
     
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.baidu.com");
     
        //显式等待, 针对某个元素等待
        WebDriverWait wait = new WebDriverWait(driver,10,1);
        //调用java内部类
        wait.until(new ExpectedCondition<WebElement>(){
          @Override
          public WebElement apply(WebDriver text) {
                return text.findElement(By.id("kw"));
              }
        }).sendKeys("selenium");
     
        driver.findElement(By.id("su")).click();
        Thread.sleep(2000);
     
        driver.quit();
      }
    }

    WebDriverWait类是由WebDirver提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。具体格式如下:
    WebDriverWait(driver, 10, 1)
    driver: 浏览器驱动。 10: 最长超时时间, 默认以秒为单位。 1: 检测的的间隔(步长) 时间, 默认为 0.5s。

    2.隐式等待

    WebDriver 提供了几种方法来等待元素。

    • implicitlyWait。识别对象时的超时时间。过了这个时间如果对象还没找到的话就会抛出NoSuchElement异常。
    • setScriptTimeout。异步脚本的超时时间。WebDriver可以异步执行脚本,这个是设置异步执行脚本脚本返回结果的超时时间。
    • pageLoadTimeout。页面加载时的超时时间。因为WebDriver会等页面加载完毕再进行后面的操作,所以如果页面超过设置时间依然没有加载完成,那么WebDriver就会抛出异常。
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.By;
    import java.util.concurrent.TimeUnit;
     
    public class TimeOut02 {
     
      public static void main(String[] args){
     
        WebDriver driver = new ChromeDriver();
     
        //页面加载超时时间设置为 5s
        driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
        driver.get("https://www.baidu.com/");
     
        //定位对象时给 10s 的时间, 如果 10s 内还定位不到则抛出异常
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.id("kw")).sendKeys("selenium");
     
        //异步脚本的超时时间设置成 3s
        driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);
     
        driver.quit();
      }
    }
  • 相关阅读:
    python的复制,深拷贝和浅拷贝的区别(转)
    linux下ffmpeg安装(转)
    Linux下的tar压缩解压缩命令详解(转)
    centos7安装python-pip(转)
    爬山算法和模拟退火算法简介
    协方差、协方差矩阵定义与计算
    七种常见阈值分割代码(Otsu、最大熵、迭代法、自适应阀值、手动、迭代法、基本全局阈值法)
    Canny边缘检测算法原理及其VC实现详解(二)
    Canny边缘检测算法原理及其VC实现详解(一)
    perforce变量配置与使用
  • 原文地址:https://www.cnblogs.com/peiminer/p/13564541.html
Copyright © 2011-2022 走看看