1.显式等待
element = WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located(By.ID,‘kw’))
element.sendkeys("xxx")
说明:显示等待是单独针对某个元素,设置一个等待时间如5秒,每隔0.5秒检查一次是否出现,如果在5秒之前任何时候出现,则继续向下,超过5秒尚未出现则抛异常。显示等待与隐式等待相对,显示等待必须在每个需要等待的元素前面进行声明。
使用场景:当打开一个新页面,执行第一个元素操作的时候;当某一步操作会引发页面的加载,并且加载的内容包含了下一步需要操作的元素。一句话,就是当某个元素有加载过程的时候,就需要加上显示等待。
2.隐式等待
driver.implicitly_wait(10)
整个driver周期有效,也可以说是driver对象的等待,直到driver对象加载完成,也就是网页加载完成,即所有的的页面元素加载完成,则执行下一步,从写法上来和显式等待区分,这里面并没有对应的元素,所以是用来进行全局等待,判断页面是否加载完成。也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,我仍得等到页面全部完成才能执行下一步。
3.等待
time.sleep(3)
用以设置固定的线程休眠时间(s),使得整个脚本暂停。但是这种方式会导致这个脚本运行时间过长,不到万不得已尽可能少用,特殊情况下,时间设置最好不超过1秒,一般0.5秒