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字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
Python中表示字符串的三种方法
Sep 06 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
Python整数对象实现原理详解
Jul 01 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
基于python调用psutil模块过程解析
Dec 20 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
Django与pyecharts结合的实例代码
May 13 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
Python 如何创建一个简单的REST接口
Jul 30 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学习笔记之二
2011/01/17 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
js初始化验证实例详解
2016/11/26 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python有序字典简单实现方法示例
2017/09/28 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python全局变量引用与修改过程解析
2020/01/07 Python
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
餐饮投资计划书
2014/04/25 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
标准版离职证明书
2014/09/12 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
python实现简单的井字棋
2021/05/26 Python
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android