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实现栈的方法
May 26 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
python正则表达式的使用
Jun 12 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
python 顺时针打印矩阵的超简洁代码
Nov 14 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
Python中的self用法详解
Aug 06 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
基于python实现模拟数据结构模型
Jun 12 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 Try Catch异常测试
2009/03/01 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
javascript里的条件判断
2007/02/27 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
python爬虫使用cookie登录详解
2017/12/27 Python
python学生信息管理系统(初级版)
2018/10/17 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
Django单元测试工具test client使用详解
2019/08/02 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
财务经理岗位职责
2013/11/09 职场文书
法制宣传教育方案
2014/05/09 职场文书
旅游文化节策划方案
2014/06/06 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
党员个人承诺书
2015/04/27 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis