selenium中的延时等待方式有三种:强制等待:sleep()  隐示等待:implicitly_wait()  显示等待 WebDriverWait()

1.强制等待:sleep(),time模块下的方法;只能够针对当前单步操作;缺点:无法很好的控制脚本的执行速度、并且只针对局部一步操作而言、如果每步需要添加则出现过多重复代码,且休眠时间如果超过5秒会出现浏览器回话链接断开;

from time import sleep

sleep(2)    #传入等待时间

2.隐示等待:implicitly_wait():隐式等待;webdriver驱动器对象下的方法;针对是一次会话所有操作,相当于是一个全局等待;只需要声明定义一次,通常在设计脚本中会应用于setUp方法;

from selenium import webdriver      #导包

driver = webdriver.Chrome()         #获取浏览器驱动对象

driver.implicitly_wait(20)          #隐示等待,传入等待时间

3.显示等待,WebDriverWait(驱动器对象,等待时间)

# 两种导入WebDriverWait方式
from selenium.webdriver.support.wait import WebDriverWait # 导包
from selenium.webdriver.support.ui import WebDriverWait # 导包
使用webdriverwait只能够与until和not until两个方法进行使用;until和not until中传入的参数可以是lambda匿名函数或者预置条件expected_conditions
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# WebDriverWait 需要传入的是驱动器对象,总体等待时间和刷新时间间隔时间间隔默认0.5
# Presence_of_element_located 表示元素是否存在 必须以元组的形式传入,所以使用到By方法进行定位
WebDriverWait(driver,30,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
如果unitl或者not unitl传入的方法定位元素查找到则会返回对应的对象,如果未找到则会抛出TimeoutException异常
EC预置条件模块具有很多类型的判断:
presence_of_element_located                  判断当前元素是否存在
Presence_of_all_elements_located             判断一组元素是否存在
Text_to_be_present_in_element_value       判断元素值是否有xx文本信息
Presence_of_all_elements_located             判断一组元素是否存在
 

selenium中延时等待三种方式的更多相关文章

  1. Python+Selenium自动化-设置等待三种等待方法

    Python+Selenium自动化-设置等待三种等待方法   如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候,就需要我们通过设置一个等待条件,等待页面元素加载完成,避免出现 ...

  2. C++使用命名空间中成员的三种方式

    通过简单的代码来介绍使用命名空间中成员的三种方式(我们最常用到的命名空间是是标准库std,下面的命名空间都以std为例): 使用作用域符:: #include<iostream> int ...

  3. JavaScript中创建对象的三种方式!

    JavaScript中创建对象的三种方式! 第一种 利用对象字面量! // 创建对象的三种方式! // 1 对象字面量. var obj = { // 对象的属性和方法! name: 'lvhang' ...

  4. javascript中构造函数的三种方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 实现JavaScript中继承的三种方式

    在JavaScript中,继承可以通过三种手法实现原型链继承 使用apply.call方法 对象实例间的继承.     一.原型链继承 在原型链继承方面,JavaScript与java.c#等语言类似 ...

  6. java找出1~1000中素数的三种方式

    第一种: public class Sushu { public static void main(String[] args) { // TODO Auto-generated method stu ...

  7. js中创建对象的三种方式

    1. 对象字面量 var obj={ name:"小小", age:3, car:{ brand:"baoma", } }; } 2.使用内置构造函数 var ...

  8. Struts2学习(二)运行Action中方法的三种方式

    1.运行execute()方法 一般的能够直接在action中书写execute,调用action时会自己主动运行此方法 2.配置method方法 在struts.xml中配置action时.写met ...

  9. Android - 页面返回上一页面的三种方式

    今年刚刚跳槽到了新公司,也开始转型做Android,由此开始Android的学习历程. 最近在解很多UI的bug,在解bug过程中,总结了在UI的实现过程中,页面返回上一页面的几种实现方式. 一. 自 ...

随机推荐

  1. 谢宝友: 手把手教你给Linux内核发patch

    本文系转载,著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 谢宝友 来源: 微信公众号 linux阅码场 (id: linuxdev) 本文简介       本文一步一 ...

  2. Centos中查找文件、目录、内容

    1.查找文件 find / -name 'filename' 2.查找文件夹(目录) find / -name 'path' -type d 3.查找内容 find . | xargs grep -r ...

  3. 百万年薪python之路 -- MySQL数据库之 Navicat工具和pymysql模块

    一. IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接 ...

  4. 五分钟后,你将学会在SpringBoot项目中如何集成CAT调用链

    买买买结算系统 一年一度的双十一购物狂欢节就要到了,又到剁手党们开始表演的时刻了.当我们把种草很久的商品放入购物车以后,点击"结算"按钮时,就来到了买买买必不可少的结算页面了.让我 ...

  5. ansible模块之yum、pip、service、corn、user、group

    ansible相关模块 yum rpm 和yum 的区别 rpm:全称redhat package manager (红帽包管理器) 不能解决包之间的依赖关系 yum:可以解决依赖关系 yum 源配置 ...

  6. 等距结点下的Newton插值多项式系数计算(向前差分)

    插值多项式的牛顿法 1.为何需要牛顿法? ​ 使用Lagrange插值法不具备继承性.当求好经过\(({x_0},{y_0})-({x_n},{y_n})\)共n+1个点的插值曲线时候,如果再增加一个 ...

  7. No such application config! Please add dubbo:application

    SpringBoot运行找不到application.properties配置文件 运行springBoot项目启动报错:java.lang.IllegalStateException: No suc ...

  8. apache+php+mysql搭建php环境

    1.首先准备解压包:zend-loader-php5.6-windows-x86_update1(nts版).php-5.6.37-nts-Win32-VC11-x86.mysql-5.5.19-wi ...

  9. CAP的学习和应用

    性能优化真言:队列缓存分布式  异步调优堆配置 前言:用CAP有一段时间了,这里简单记录一下,这么好用的东西,小伙伴们赶紧上车吧 一.CAP使用场景? 平时工作中经常使用到MQ,如(kafka,rab ...

  10. python 类内部装饰器的实现 与 参数解构学习

    学习了函数的装饰器的写法,然后想到如果要在类中初始化或获取信息时能用装饰器做过滤和验证应该怎么写呢, 在网上查了下相关信息,感觉这样也是可以的,不知道会不会有什么问题class Ctj(): clas ...