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连接sql server乱码的解决方法
Jan 28 Python
python解析中国天气网的天气数据
Mar 21 Python
python读取二进制mnist实例详解
May 31 Python
Python实现的端口扫描功能示例
Apr 08 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
对django中foreignkey的简单使用详解
Jul 28 Python
python hash每次调用结果不同的原因
Nov 21 Python
Python3 读取Word文件方式
Feb 13 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
Python开发.exe小工具的详细步骤
Jan 27 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字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
javascript实现时钟动画
2020/12/03 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python绘图方法实例入门
2015/05/19 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
为什么相对PHP黑python的更少
2020/06/21 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
槐乡的孩子教学反思
2014/04/27 职场文书
自主招生教师推荐信
2014/05/10 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
银行业务授权委托书
2014/10/10 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
详细介绍python类及类的用法
2021/05/31 Python
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang