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备份文件以及mysql数据库的脚本代码
Jun 10 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
Python获取指定字符前面的所有字符方法
May 02 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
python numpy库np.percentile用法说明
Jun 08 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 Python
Python上下文管理器Content Manager
Jun 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部分常见问题总结
2008/03/27 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python在线运行代码助手
2016/07/15 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
python定义类self用法实例解析
2020/01/22 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
python 8种必备的gui库
2020/08/27 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
财务部岗位职责
2015/02/03 职场文书
承诺书模板大全
2015/05/04 职场文书
网吧管理制度范本
2015/08/05 职场文书