等待时间——隐式等待

什么是WebDriver的隐式等待呢?就是通过一定时长的等待页面上元素加载,如果这个超出时长了,目标元素还没有被加载出来,就抛出异常。

不同于web driver是在浏览器驱动,设定一定时间段,每隔几秒检查,如果超过了这个时间段,就会抛出异常。对于隐式等待,则是等待某个元素出现,如果检测到元素出现了,就迅速向下执行。

隐式等待是怎么去做的呢?通过代码示例来看看具体的用法:

如上代码,隐式等待的关键有两个部分,其一就是代码12行中 driver.implicitly_wait(10) , 其二呢,就是在进行元素定位的时候使用了try语句。

implicitly_wait(10)的意思就是隐式等待10s,如果等待不断就会弹出异常,跳转到except语句,也就是第22行,这个异常就是NoSuchElementException,打印这个异常就能够看到哪个元素定位失败。

运行以上代码,可以发现 很快就执行完了 ,这就是隐式等待的功能。为什么执行如此快速,这是因为页面元素都能够快速找到,所以并未太多耗时。

如果,把代码中定位百度搜索框的代码修改为一个未知的id会怎么样呢?如下改动:

在第19行,定位搜索框的id被修改为一个未知的id,再运行代码,结果:

程序运行异常,打印了堆栈,与此同时,以上代码运行超过10s。

最后

隐式等待相比显示等待有更大的优势在于定位存在的元素能够减少时间等待,如果某个元素不存在,定位依然需要等待超过10s,总体比显示等待更加高效!

IT赶路人

专注IT知识分享