您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python selenium的三种等待方式解读!

5b51 2022/1/14 8:25:28 python 字数 2689 阅读 1141 来源 www.jb51.cc/python

如果网站采用了动态html技术,那么页面上的部分元素出现时间便不能确定,这个时候就可以设置一个等待时间,强制要求在时间内出现,否则报错,那么我可以用等待。

概述

如果网站采用了动态html技术,那么页面上的部分元素出现时间便不能确定,这个时候就可以设置一个等待时间,强制要求在时间内出现,否则报错,那么我可以用等待。

说到等待,又有三种等法,且听博主一一道来:

1. 强制等待

第一种也是最简单粗暴的一种办法就是强制等待 time.sleep(10) 。

进群:960410445  即可获取数十套PDF!

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')
driver.get('https://www.baidu.com/')
sleep(3) # 强制等待3秒再执行下一步
print driver.current_url
driver.quit()

这种等待方式时间到了就执行下个语句,但比较死板,不能保证在等待的时间内元素真正被加载了出来。

2. 隐性等待

第二种办法叫隐性等待,driver.implicitly_wait(20),这个等待表示在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。

from selenium import webdriver
driver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')
driver.implicitly_wait(30) # 隐性等待,最长等30秒
driver.get('https://www.baidu.com/')
print driver.current_url
driver.quit()

这个方法的缺点是你需要的元素已经加载出来了,但页面还没有加载完,再需要继续等待页面加载完才能执行下一步操作。

3. 显性等待

第三种办法就是显性等待webdriverwait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。

# 20 表示最长时间 0.5表示刷新频率
        # By.LINK_TEXT == driver.find_element_by_link_text()
        webdriverwait(driver,20,0.5).until(
         EC.presence_of_element_located((By.LINK_TEXT,'CSDN'))) 
        print driver.find_element_by_link_text('CSDN').get_attribute('href')
        driver.close() 

表示程序每隔x秒去判断一下指定的元素是否加载完,加载完了就执行下一步,否则继续每隔x秒去判断,指定时间截止。如果超时就会抛出异常。

总结

以上是编程之家为你收集整理的python selenium的三种等待方式解读!全部内容,希望文章能够帮你解决python selenium的三种等待方式解读!所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶