热线电话:13121318867

登录
2020-11-10 阅读量: 4530
Python的Selenium库中wd.implicitly_wait(10)的作用是什么

之前我们设置等待时长用用sleep 来 等待几秒钟,如下:

sleep(2)# 2 秒 过后,再去搜索element = wd.find_element_by_id('1')# 打印出 第一个搜索结果的文本字符串print (element.text)

大家可以运行一下,基本是可以的,不会再报错了。



但是这样的方法 有个很大的问题,就是:设置等待多长时间合适呢?

这次百度网站反应可能比较快,我们等了一秒钟就可以了。

但是谁知道下次他的反应是不是还这么快呢?百度也曾经出现过服务器瘫痪的事情。

可能有的读者说,我干脆sleep比较长的时间, 等待 20 秒, 总归可以了吧?

这样也有很大问题,假如一个自动化程序里面需要10次等待, 就要花费 200秒。 而可能大部分时间, 服务器反映都是很快的,根本不需要等20秒, 这样就造成了大量的时间浪费了。

Selenium提供了一个更合理的解决方案,是这样的:

当发现元素没有找到的时候, 并不 立即返回 找不到元素的错误。

而是周期性(每隔半秒钟)重新寻找该元素,直到该元素找到,

或者超出指定最大等待时长,这时才 抛出异常(如果是 find_elements 之类的方法, 则是返回空列表)。

Selenium 的 Webdriver 对象 有个方法叫 implicitly_wait

该方法接受一个参数, 用来指定 最大等待时长。

如果我们 加入如下代码

wd.implicitly_wait(10)

那么后续所有的 find_element 或者 find_elements 之类的方法调用 都会采用上面的策略:

如果找不到元素, 每隔 半秒钟 再去界面上查看一次, 直到找到该元素, 或者 过了10秒 最大时长。


32.6576
0
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子