Python页面加载的等待方式总结


Posted in Python onFebruary 28, 2021

1、显式等待

它指定要查找的节点,然后指定一个最长的等待时间,如果规定时间内加载出来了这个节点,就返回查找的节点;如果规定时间内没有加载出该节点,就抛出超时异常。

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
broswer = webdriver.Chrome()
broswer.get('https://www.jd.com/')
wait = WebDriverWait(broswer, 20)
input_q = wait.until(EC.presence_of_element_located((By.ID, 'key')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.button')))
print(input_q, button)

2、隐式等待

当使用隐式等待执行测试的时候,如果Selenium没有在DOM中找到节点,将继续等待,超出设定时间后,则抛出找不到节点的异常。换句话说,当查找节点而节点并没有出现的时候,隐式等待将等待一段时间再查找DOM,默认时间是0,示例如下:

from selenium import webdriver
browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get('https://www.jd.com/')
input_q = browser.find_element_by_class_name('button')
print(input_q)

知识点扩展:

Python里有三种等待的方式:

1、强制等待

导入定时等待库

from time import sleep 或者 import time

time.sleep(10) # 表示强行等待10s在执行下一句代码 这种等待方式时间到了就会执行下个语句,但比较死板,不能保证在等待的时间内元素真正被加载了出来。而且如果等待的元素已经被加载出来,还需要等待到时间才会执行下一句,浪费时间。

2、 隐性等待

driver.implicitly_wait(30) #等待30s
这个等待表示在规定的时间内页面的所有元素都加载完了就执行下一步,否则一直等到时间截止,然后再继续下一步。
这个方法的缺点是你需要的元素已经加载出来了,但页面还没有加载完,再需要继续等待页面加载完才能执行下一步操作。

3、显性等待

需要导入的包

from selenium.webdriver.support.wait import WebDriverWait #导入显性等待的包

from selenium.webdriver.support import expected_conditions as EC #判断所需要的元素是否已经被加载出来 

from selenium.webdriver.common.by import By #定位

到此这篇关于Python页面加载的等待方式总结的文章就介绍到这了,更多相关Python页面加载的等待方式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的元类编程入门指引
Apr 15 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
在pandas中一次性删除dataframe的多个列方法
Apr 10 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
python+mysql实现教务管理系统
Feb 20 Python
pytorch使用Variable实现线性回归
May 21 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
wxPython实现列表增删改查功能
Nov 19 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
python 解决Fatal error in launcher:错误问题
May 21 Python
python读取xml文件方法解析
Aug 04 Python
Python Selenium操作Cookie的实例方法
Feb 28 #Python
Python Selenium异常处理的实例分析
Feb 28 #Python
python常量折叠基础知识点讲解
Feb 28 #Python
Django后端按照日期查询的方法教程
Feb 28 #Python
python元组拆包实现方法
Feb 28 #Python
python定义具名元组实例操作
Feb 28 #Python
python推导式的使用方法实例
Feb 28 #Python
You might like
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
豆瓣网的jquery代码实例
2008/06/15 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
angular4中引入echarts的方法示例
2019/01/29 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
python远程登录代码
2008/04/29 Python
python遍历类中所有成员的方法
2015/03/18 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
商业企业管理专业求职信
2014/07/10 职场文书
安全目标管理责任书
2014/07/25 职场文书
中学校园广播稿
2015/08/18 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript