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计算三维矢量幅度的方法
Jun 15 Python
python安装与使用redis的方法
Apr 19 Python
Python解惑之整数比较详解
Apr 24 Python
python连接数据库的方法
Oct 19 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
Python并行分布式框架Celery详解
Oct 15 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
python实现统计文本中单词出现的频率详解
May 20 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
用Python实现Newton插值法
Apr 17 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
thinkphp 多表 事务详解
2013/06/17 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
php基础教程
2015/08/26 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
保险专业大专生求职信
2013/10/26 职场文书
会计人员岗位职责
2014/03/19 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
刘公岛导游词
2015/02/05 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
四则混合运算教学反思
2016/02/23 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
详解Vue slot插槽
2021/11/20 Vue.js