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程序设计入门(1)基本语法简介
Jun 13 Python
python基于socket实现网络广播的方法
Apr 29 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
python 反向输出字符串的方法
Jul 16 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
Python之变量类型和if判断方式
May 05 Python
如何卸载python插件
Jul 08 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
python3中for循环踩过的坑记录
Dec 14 Python
教你用python实现一个无界面的小型图书管理系统
May 21 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
一个简易需要注册的留言版程序
2006/10/09 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
php身份证号码检查类实例
2015/06/18 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
jQuery bind事件使用详解
2011/05/05 Javascript
js常用代码段收集
2011/10/28 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
nodejs中实现阻塞实例
2015/03/24 NodeJs
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
python文件操作整理汇总
2014/10/21 Python
对python中的argv和argc使用详解
2018/12/15 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
药学专业个人自我评价
2013/11/11 职场文书
开办饭店创业计划书
2013/12/28 职场文书
消防安全检查制度
2014/02/04 职场文书
科技节口号
2014/06/19 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
采购员岗位职责范本
2015/04/07 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
python 如何在list中找Topk的数值和索引
2021/05/20 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
Oracle锁表解决方法的详细记录
2022/06/05 Oracle
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python