Selenium三大等待

硬性等待

Thread.sleep(long millis)
优点:使用简单
缺点:容易造成时间浪费

隐式等待

在设置的超时时间范围内不断查找元素,直到找到元素或者超时为止
如:设置等待时间为5秒,在第3秒找到元素,不再继续等待
设置方式,放在运行代码之前
driver.manage.timeouts().implicitlyWait(long time, TimeUnit unit);
优点:
● 相对灵活
缺点:
● 设置是针对全局的,在WebDriver实例整个生命周期有效,但并不是所有的元素都需要等待
● 只能等待元素存在,不能适用条件更复杂的情况,如:元素可点击、元素可见

WebDriver driver = openBrowser("chrom");
       //设置隐式等待,单位一般为秒
       //效果;在指定的时间范围内一直不断的循环找元素,直到找到元素为止,否则会报超时异常NoSuchElementException
       //特点:全局设置,对下面的所有元素定位有效
       driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
       driver.get("http://8.129.91.152:8765/");
       //登录
       driver.findElement(By.xpath("//a[text()='登录']")).click();
       Thread.sleep(2000);
       driver.findElement(By.xpath("//input[@nullmsg='请输入手机号1']")).sendKeys("13323234545");
       driver.findElement(By.xpath("//input[@nullmsg='请输入密码']")).sendKeys("12345678.");
       driver.findElement(By.xpath("//button[text()='登录']")).click();

显式等待

显式等待通常是我们自定义的一段代码,用来等待某个条件发生后再继续执行后续代码(如元素存在、元素 可点击、元素可见等)

WebDriverWait wait = new WebDriverWait();
WebElement element = wait.until(expectCondition);

优点: 每隔一段时间扫描一次页面,检查元素是否满足等待结果条件,比如查找元素,则检查元素是否存在,不存 在则继续等待,直到找到或超时。
显式等待不是全局设置,因此对需要等待的元素可以用以下方法处理:

方法等待条件
presenceOfElementLocated页面元素在页面中存在
visibilityOfElementLocated页面元素在页面存在并且可见
elementToBeClickable页面元素是否在页面上可被单击
driver.get("https://www.baidu.com");
        //点击设置
        driver.findElement(By.id("s-usersetting-top")).click();
        WebDriverWait webDriverWait = new WebDriverWait(driver,8);
        //until--->直到找到某个元素为止---》找到相应的元素
        //visibilityOfElementLocated--->等待元素的见
        WebElement webElement = webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='高级搜索']")));
        webElement.click();

加入元素等待可解决:由于网络原因,元素未加载出来时就进行操作而导致的找不到元素异常
但需注意:显示等待和隐式等待不可混用,否则会有不可预料的等待时间,建议使用显示等待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值