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中执行shell命令的几个方法小结
Sep 18 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
基于python爬虫数据处理(详解)
Jun 10 Python
python实现动态创建类的方法分析
Jun 25 Python
给我一面国旗 python帮你实现
Sep 30 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
python多进程并发demo实例解析
Dec 13 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
5款实用的python 工具推荐
Oct 13 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 函数使用方法与函数定义方法
2010/05/09 PHP
ThinkPHP采用模块和操作分析
2011/04/18 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
Three.js快速入门教程
2016/09/09 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
Python3并发写文件与Python对比
2019/11/20 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python sep参数使用方法详解
2020/02/12 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Python 列表反转显示的四种方法
2020/11/16 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
int和Integer有什么区别
2013/05/25 面试题
高校毕业生登记表自我鉴定
2013/11/03 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
员工安全生产承诺书
2014/05/22 职场文书
个人违纪检讨书
2014/09/15 职场文书
2014年秘书工作总结
2014/11/25 职场文书
大学团日活动总结书
2015/05/11 职场文书