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 13 Python
python中defaultdict的用法详解
Jun 07 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
python绘制多个曲线的折线图
Mar 23 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
详解python配置虚拟环境
Apr 08 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
Python Matplotlib绘制动画的代码详解
May 30 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
JS 强制设为首页的代码
2009/01/31 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
python list多级排序知识点总结
2019/10/23 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python扫描线填充算法详解
2020/02/19 Python
新娘父亲婚礼致辞
2014/01/16 职场文书
安全检查管理制度
2014/02/02 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
市场总监岗位职责
2015/02/11 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers