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实现一个简单的项目监控
Mar 31 Python
Python使用sorted排序的方法小结
Jul 28 Python
python使用fork实现守护进程的方法
Nov 16 Python
用Python实现大文本文件切割的方法
Jan 12 Python
python简单贪吃蛇开发
Jan 28 Python
Python3几个常见问题的处理方法
Feb 26 Python
Python 3.8新特征之asyncio REPL
May 28 Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
Apr 14 Python
python能否java成为主流语言吗
Jun 22 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 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获取字符串的编码格式的方法(函数)
2013/06/21 PHP
js读写(删除)Cookie实例详解
2013/04/17 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Flask框架信号用法实例分析
2018/07/24 Python
python判断是空的实例分享
2020/07/06 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
面试后感谢信
2014/02/01 职场文书
好的旅游活动方案
2014/08/19 职场文书
公司承诺书格式范文
2015/04/28 职场文书
读书笔记怎么写
2015/07/01 职场文书
社区服务活动感想
2015/08/11 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
springboot临时文件存储目录配置方式
2021/07/01 Java/Android