python selenium的三种等待方式解读

栏目: Python · 发布时间: 6年前

内容简介:如果网站采用了动态html技术,那么页面上的部分元素出现时间便不能确定,这个时候就可以设置一个等待时间,强制要求在时间内出现,否则报错,那么我可以用等待。说到等待,又有三种等法,且听博主一一道来:第一种也是最简单粗暴的一种办法就是强制等待

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

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

1. 强制等待

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

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的三种等待方式解读》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人工智能时代

人工智能时代

[ 美]杰瑞•卡普兰(Jerry Kaplan) / 李盼 / 浙江人民出版社 / 2016-4-1 / CNY 59.90

 当机器人霸占了你的工作,你该怎么办?机器人犯罪,谁才该负责?人工智能时代,人类价值如何重新定义?  在《人工智能时代》一书中,智能时代领军人、硅谷连续创业者杰瑞·卡普兰指出:智能时代的到来,给人类社会带来了两大灾难性冲击:持续性失业与不断加剧的贫富差距。机器正在很大程度上替代人类的工作,不管你是蓝领还是白领。而针对未来社会将要发生的这些问题,卡普兰在《人工智能时代》一书中从企业、税收和......一起来看看 《人工智能时代》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具