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. Java 异常处理的 20 个最佳实践,你知道几个?

    异常处理是 Java 开发中的一个重要部分,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java 提供了几个异常处理特性,以try,catch 和 finally 关键字的形式内建 ...

  2. 用深度优先搜索(DFS)解决多数图论问题

    前言 本文大概是作者对图论大部分内容的分析和总结吧,\(\text{OI}\)和语文能力有限,且部分说明和推导可能有错误和不足,希望能指出. 创作本文是为了提供彼此学习交流的机会,也算是作者在忙碌的中 ...

  3. Spring 源码阅读之 深入理解 finishBeanFactoryInitialization

    源码入口 上篇博文中我们看到了将Spring环境中的 BeanPostProcessor找出来,添加到BeanFactory中的beanPostProcessors中,统一维护,本片博文继续往下拓展, ...

  4. hdfs 文件系统命令操作

    hdfs 文件系统命令操作 [1]hdfs dfs -ls [目录]. 显示所有文件 hdfs dfs -ls -h /user/20170214.txt 显示文件时,文件大小以人易读的形式显示 [2 ...

  5. Element filtername is not allowed here-web.xml version="3.0"-intellij idea

    Element filtername is not allowed here-web.xml version="3.0"-intellij idea Intellij IDEA 报 ...

  6. 虚拟机--python环境配置

    1.安装VMware 2.安装Ubantu (1)打开VMware,打开编辑-->首选项,更改虚拟机存储的位置. (2)创建新的虚拟机(自定义): (3)编辑虚拟机--点击CD/VCD--更改成 ...

  7. js控制进度条数据

    <style><!-- #time{ width:500px; height: 20px; background: red; border-radius: 10px; } --> ...

  8. js自增图片切换

    使用js自增进行图片的切换 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=& ...

  9. 【MySQL】MySQL服务启动失解决方法

    写在前面的话:前段时间,为了更加流畅愉快的玩PUBG,我在任务管理器中,关闭了mysqld服务.后来我在使用MySQL数据库服务的时候,发现去到MySQL安装目录下双击运行mysqld.exe(数据库 ...

  10. 在虚拟机上的关于Apache(阿帕奇)(4)基于域名访问网站

    这篇随笔是基于域名访问网站,和前后两篇文章基于ip和基于端口一起练习效果更好 首先配置网卡Ip地址与hosts文件 输入命令:  vi  /etc/hosts/ (每行只能写一条,格式为IP地址+空格 ...