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模块学习 datetime介绍
Aug 27 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
在keras中model.fit_generator()和model.fit()的区别说明
Jun 17 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
python如何做代码性能分析
Apr 26 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/07/05 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python实现简单学生信息管理系统
2020/04/09 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
what is the difference between ext2 and ext3
2013/11/03 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
采购员的工作职责
2013/12/26 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
粗加工管理制度
2014/02/04 职场文书
暑期社会实践方案
2014/02/05 职场文书
部队党性分析材料
2014/02/16 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
优秀会计求职信
2014/07/04 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
大学生党课感想
2015/08/11 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书