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简单的实现树莓派的WEB控制
Feb 18 Python
Python中一行和多行import模块问题
Apr 01 Python
Python中正则表达式的用法总结
Feb 22 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
Python实现京东秒杀功能代码
May 16 Python
Python列表与元组的异同详解
Jul 02 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
python绘制趋势图的示例
Sep 17 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
一些花式咖啡的配方
2021/03/03 冲泡冲煮
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
回调函数的意义以及python实现实例
2017/06/20 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
python简单实现插入排序实例代码
2020/12/16 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
如何开启linux的ssh服务
2013/06/03 面试题
Shell如何接收变量输入
2016/08/06 面试题
自荐信怎么写好
2013/11/11 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
英文慰问信范文
2015/03/24 职场文书
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python