博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium的延迟等待
阅读量:6500 次
发布时间:2019-06-24

本文共 1534 字,大约阅读时间需要 5 分钟。

hot3.png

Selenium的延迟等待分为 显式等待(Explicit Wait) & 隐式等待(Implicit Wait).

1.显式等待

显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.

如:

new WebDriverWait(driver, 15).until(    ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator")));

这里,15是要等待的秒数.如果没有满足until()方法中的条件,就会始终在这里wait 15秒,依然找不到,就抛出异常.

也可以这样写:

WebDriver driver = new FirefoxDriver();driver.get( http://somedomain/url_that_delays_loading);WebElement e = (new WebDriverWait( driver, 10)) .until(    new ExpectedCondition< WebElement>(){        @Override        public WebElement apply( WebDriver d) {            return d.findElement( By.id("id locator"));        }    });

这样就通过回调函数,直接获得了这个WebElement.也就是页面元素.

如果只是仅仅想判断页面是不是加载到某个地方了,就可以用第一种方法; 但如果需要得到某个WebElement,两种方式都可以,只是第一种方式还需要再多一步获取的操作.

Wait w = new Wait(){    @Override    public boolean until() {        return webElement.isDisplayed();    }};

另外这种等待的方式,在加载js代码的时候做判断会比较方便,反正我只在代码里这么见过,但是没用过,有兴趣的朋友可以研究一下.

2.隐式等待

隐式等待,我觉得就是不靠谱的等待,看一段代码就明白了.

driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);

WebDriver会进行一个隐式等待,但参数只有时间,这就导致我需要什么元素出现,我不一定能等到它,只是让driver延迟一段时间再继续而已. 不过我们也可以把它小小的封装一下,变废为宝:

public boolean isByElementDisplayed(By by, int time) {    boolean status = false;    if (driver.findElement(by).isDisplayed() == false) {        driver.manage().timeouts().implicitlyWait(time, TimeUnit.SECONDS);    } else {        status = true;    }    return status;}
得不到某个元素,我们就延迟一下...

最后还有一个最低效的做法:

Thread.sleep()

额,不建议使用.

第一次发文,大家多提意见.

转载于:https://my.oschina.net/u/928852/blog/98885

你可能感兴趣的文章
《破坏之王—DDoS攻击与防范深度剖析》
查看>>
Pop List View
查看>>
JTStackController
查看>>
YIPopupTextView
查看>>
动画改变view高度
查看>>
linux安装mysql
查看>>
本地可以播放的.flv视频,上传服务器后不能播放的解决方案
查看>>
C++ primer从头再来(一)
查看>>
OpenCart本地测试环境搭建WampServer教程
查看>>
一。简单搭建Spring框架及用JUnit测试。
查看>>
我的友情链接
查看>>
关于iOS版Citrix Receiver不支持文件上传下载的说明
查看>>
“沙场”体会一
查看>>
Newstart HA常见使用场景
查看>>
为win7/8/8.1/10添加开机启动项
查看>>
Linux防火墙【Centos7】
查看>>
IOS UDP通讯
查看>>
银行IT部门科技管理流程管控工作发展之路
查看>>
centos7.x的磁盘限额配置
查看>>
jquery判断checkbox(复选框)是否选中
查看>>