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中的包和模块实例
Nov 22 Python
Python 类的继承实例详解
Mar 25 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
简单了解python模块概念
Jan 11 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
transform python环境快速配置方法
Sep 27 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
python cumsum函数的具体使用
Jul 29 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 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
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
js 通用订单代码
2013/12/23 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
node上的redis调用优化示例详解
2018/10/30 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python实现远程调用MetaSploit的方法
2014/08/22 Python
python绘制双柱形图代码实例
2017/12/14 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
Python中的With语句的使用及原理
2020/07/29 Python
利用python 读写csv文件
2020/09/10 Python
python中pop()函数的语法与实例
2020/12/01 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
销售冠军获奖感言
2014/02/03 职场文书
合同协议书格式
2014/04/18 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
员工手册董事长致辞
2015/07/29 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书