为什么要设置元素等待
直白点说,怕报错,哈哈哈!
肯定有人会说,这也有点太直白了吧。
用一句通俗易懂的话就是:等待元素已被加载完全之后,再去定位该元素,就不会出现定位失败的报错了。
如何避免元素未加载出来而导致定位失败 ?
三种方式,强制等待、隐式等待、显式等待!
1、强制等待
就是sleep()
,也叫硬等待;缺点就是:如果等待时间过长,即使元素已被加载出来了,但还是要继续等,这样会导致整个脚本的执行上会浪费很多时间。
示例代码如下:
# 强制等待案例
driver.get("http://localhost:8080/wait.html")
driver.find_element(By.ID, "wait").click()
time.sleep(3)
text = driver.find_element(By.ID, "green_box").text
print('text is : '+text)
2、隐式等待
WebDriver
提供了三种隐性等待方法:
-
implicitly_wait
识别对象时的超时时间。过了这个时间如果对象还没找到的话就会抛出NoSuchElementException
异常。
-
set_scrip