python等待网页加载_Python Selenium等待(waits)页面加载完成的三种方法
从网上load的:
网页常常会因为网络原因,程序问题等等导致打开网页慢,一直在那里打圈圈。
出现这种情况时网页里的很多元素就没有加载完成,如果你刚好要定位的元素没有加载完,这时定位的话程序就会抛出异常。
所以程序里要加入等待机制,等待元素加载完,要让程序稳定运行,加等待(waits)这挺重要的,因为网络真的没有那么好。
等待页面加载有三种方法。
1.time.sleep()方法
这是直接调用time里的sleep来强制等待,我前面几篇文章写的例子就是用的sleep。
这不是selenium的官方写法,官方认为使用sleep是比较糟糕的用法,官方写法是下面两种方法。之前是这样写是想简化一下。
2.WebDriverWait()显示等待
就是设置一个等待时间,直到这个元素出现就停止等待,如果没出现就抛出异常。
比如设置10秒等待时间,如果等待第6秒这个元素就出现了,就停止等待,继续往下执行,如果第10秒元素还没出现,就抛出异常。
代码如下,使用的WebDriverWait().until()方法,WebDriverWait()里填driver和要等待的时间,until里填等待的元素。代码演示的是点击猿人学右上角的搜索按钮,等待class_name叫search-show的出现为止。
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")
driver.get('https://www.yuanrenxue.com')
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "search-show"))
)
element.click()
finally:
time.sleep(10)
driver.quit()
3.implicitly_wait()隐式等待
隐式等待是一个全局设置,设置后所有的元素定位都会等待给定的时间,直到元素出现为止,等待规定时间元素没出现就报错。
因为设定后是所有定位都要等待,所以最好用显示等待。
隐式等待的调用方法是:
#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")
#等待5秒
driver.implicitly_wait(5)
driver.get('https://www.yuanrenxue.com')
driver.find_element_by_class_name('slide-left').click()
driver.quit()
python等待网页加载_Python Selenium等待(waits)页面加载完成的三种方法相关推荐
- python两个元组相加_Python两个字典键同值相加的几种方法
Python中,如何合并两个键相同,值为元祖类型的字典? dicxs={"李明":("男",19), "杨柳":("女" ...
- python画一个点_pygame学习笔记(2):画点的三种方法和动画实例
1.单个像素(画点) 利用pygame画点主要有三种方法: 方法一:画长宽为1个像素的正方形 import pygame,sys pygame.init() screen=pygame.display ...
- python if多条件并列判断的三种方法
python if多条件并列判断的三种方法 如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法: 使用and或or来连接多个条件表达式,比如条件1 and 条件2 and条件3等等 ...
- python网页爬取方法_Python爬取网页的三种方法
# Python爬取网页的三种方法之一: 使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://w ...
- python下载方法-python实现下载文件的三种方法_python
本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...
- 怎么在html中加入pjax,pjax加载多说的三种方法
多说官方提供的方法:http://dev.duoshuo.com/docs/50b344447f32d30066000147 这里不进行说明,请进入上述链接进行查看. 效果说明:进入文章页需要点击按钮 ...
- VC6.0加载lib文件的三种方法
MFC编写程序,都要用到动态链接库,MFC相关的动态库有MFCD42和MFC42等,MFC框架程序已经自动加载,那么如何引入第三方的动态链接库到工程中呢? 静态链接库是要先把程序中所需要使用的函数编译 ...
- python 下载文件-python实现下载文件的三种方法_python
本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...
- python判断ip地址是否合法_Python课堂:判定IP地址合法性的三种方法
IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...
最新文章
- 基于大数据的Uber数据实时监控(Part 2:Kafka和Spark Streaming)
- C# MemoryStream先写后读的奇怪现象
- 最小熵原理:“物以类聚”之从图书馆到词向量
- Centos 安装python 3.7 遇到 ModuleNotFoundError: No module named _ctypesmake [install] Error 1(亲测下面的红字内容)
- 数字电路知识点杂谈(自用,其他人看不懂)
- 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
- 办公自动化-演练-统计日报的演练-0223
- python迭代器好处_python迭代器
- linux命令里的xz是干嘛的,linux xz命令详解
- 编写Spark SQL查询程序
- 数据分析案例:超市数据分析
- 小学英语计算机融合,小学英语作业盒电脑版
- jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company
- 政府安全资讯精选 2017年第十二期 中国网络安全漏洞披露平均效率远超美国; 美国美国国土安全部发布指令,要求联邦机构强化Web和电子邮件安全...
- lan代表计算机什么,LAN 是什么
- 软件测试流程及主要内容
- 1.MySQL 常用语句
- 我的世界java版复仇双持_我的世界战备双持2mod整合包
- openpyxl官方教程参考手册(翻译)
- 《R语言数据分析》期末试题