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删除特定文件的方法
Jul 30 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
Python基于mysql实现学生管理系统
Feb 21 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
python根据txt文本批量创建文件夹
Dec 08 Python
python dict乱码如何解决
Jun 07 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
python脚本和网页有何区别
Jul 02 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
分享一个python的aes加密代码
Dec 22 Python
python中xlrd模块的使用详解
Feb 01 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
wordpress之wp-settings.php
2007/08/17 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
php实现的验证码文件类实例
2015/06/18 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
Python只用40行代码编写的计算器实例
2017/05/10 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
政府法律服务方案
2014/06/14 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
孝女彩金观后感
2015/06/10 职场文书
文明上网主题班会
2015/08/14 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript