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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
Django卸载之后重新安装的方法
Mar 15 Python
详解Python文本操作相关模块
Jun 22 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
浅析Python函数式编程
Oct 06 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
python 实现视频 图像帧提取
Dec 10 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
python实现简单石头剪刀布游戏
Oct 24 Python
python中数组和列表的简单实例
Mar 25 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
php中文字符串截取方法实例总结
2014/09/30 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
理解js对象继承的N种模式
2016/01/25 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
简单的js计算器实现
2016/10/26 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
微信小程序组件传值图示过程详解
2019/07/31 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python网络编程详解
2017/10/31 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
Python类如何定义私有变量
2020/02/03 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
python 用struct模块解决黏包问题
2020/11/07 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
大学生毕业自荐信
2013/10/10 职场文书
国家助学金获奖感言
2014/01/31 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
租房协议书范例
2014/10/14 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
国情备忘录观后感
2015/06/04 职场文书
收入证明怎么写
2015/06/12 职场文书
行政处罚事先告知书
2015/07/01 职场文书
公司宣传语大全
2015/07/13 职场文书
MYSQL如何查看进程和kill进程
2022/03/13 MySQL