import time

一、强制等待

sleep(秒)

二、显示等待

使WebDriver等待指定元素条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)

1. 导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
2. 导包 判断条件 --> from selenium.webdriver.support import expected_conditions as EC
(将expected_conditions 通过as关键字起个别名:EC)
3. WebDriverWait(driver, timeout, poll_frequency=0.5)
1). driver:浏览器对象
2). timeout:超时的时长,单位:秒
3). poll_frequency:检测间隔时间,默认为0.5秒
4. 调用方法 until(method):直到..时
1). method:调用EC.presence_of_element_located(element)
element:调用By类方法进行定位

WebDriverWait(driver,30).until(EC.presence_of_element_located((By.ID,'userA')))

 # 导selenium包显示等待
from selenium import webdriver
from time import sleep # 访问chromedriver.exe
chromedriver = (r"C:\Users\Administrator.PC-20181218JDBK\AppData\Local\Google\Chrome\Application\chromedriver.exe") # 访问驱动
driver = webdriver.Chrome(chromedriver)
# 实例化浏览器对象
# driver=webdriver.Chrome() # 定义url
url='D:\\pycharm\\lebohtml\\自动化05期-007-Selenium常用定位方法\\html\\注册A.html'
# 实例化浏览器对象
# driver=webdriver.Chrome() # 打开url
driver.get(url) from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By # 调用显式等待
ele=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'userA')))
ele.send_keys('admin') # 第一种写法
# driver.find_element_by_id('userA').send_keys('admin') # 等待3秒
sleep(3) # 关闭浏览器
driver.quit()

显示等待

显示等待的优缺点:

优点:显示等待比隐式等待更节约测试脚本执行时间

缺点:每个操作需要单独判断

三、隐式等待

如果定位某一元素定位失败,那么就会触发隐式等待有效时长,如果在指定时长内加载完毕,则继续执行,否则

抛出NoSuchElementException异常,如果元素在第一次就定位到则不会触发隐式等待时长;

driver.implicitly_wait(timeout);

 # 导selenium包
from selenium import webdriver
from time import sleep # 访问chromedriver.exe
chromedriver = (r"C:\Users\Administrator.PC-20181218JDBK\AppData\Local\Google\Chrome\Application\chromedriver.exe") # 访问驱动
driver = webdriver.Chrome(chromedriver)
# 实例化浏览器对象
# driver=webdriver.Chrome() # 定义url
url='D:\\pycharm\\lebohtml\\自动化05期-007-Selenium常用定位方法\\html\\注册A.html'
# 实例化浏览器对象
# driver=webdriver.Chrome() # 打开url
driver.get(url) # 调用饮食等待
driver.implicitly_wait(10)
driver.find_element_by_id('userA').send_keys('admin')
# 等待3秒
sleep(3) # 关闭浏览器
driver.quit()

隐式等待

隐式等待的优缺点:

优点:只需要设置一次,在driver的整个生命周期起作用

缺点:程序会一直等待整个页面加载完成,也就是说浏览器窗口标签栏中不在出现转动的小圆圈,才会继续执行下一步。这样,想要获取的元素即使已经加载完成,也需要等待整个页面加载完成才能继续执行下一步

Selenium3+python自动化007-等待时间的更多相关文章

  1. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  2. selenium3+python自动化50-环境搭建(firefox)【转载】

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  3. web端自动化——Selenium3+python自动化(3.7版本)-火狐62版本环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  4. web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  5. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  6. Selenium3+python自动化006+自动化测试概述

    自动化测试概述 1.自动化分类: (1)单元测试自动化: 单元测试(Unit):模拟各种异常场景,外部依赖较少,且可以做测试单元到最小的一种测试方法. Java单元测试框架Junit.TestNG; ...

  7. Selenium3+python自动化006-环境搭建

    一.selenium简介 1.Selenium历史 (1)Selenium 1.0: Selenium IDE      Selenium Grid    Selenium RC(核心功能) Sele ...

  8. Selenium3+python自动化 -JS处理滚动条

    selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候需要借 ...

  9. Selenium3+python自动化 单选框和复选框

    一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了,可以先抽他了. 二.radio和 ...

  10. Selenium3+python自动化016-多线程

    1.进程 什么是进程? 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基 ...

随机推荐

  1. JavaScript DOMEvent 对象

    Event 对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件通常与函数结合使用,函数不会在事件发生前被执行! 事件句柄 (Event ...

  2. open xml 导出excel遇到的问题

    我有一个需求:使用ajax 下载excel文件 结果:失败 原因:下载文件是通过浏览器解析二级制流下载的,而ajax返回的是文本 方法: 1.如果你下载不需要参数,那直接写个a标签链接到地址就行 2. ...

  3. Python_2_daythree2_CyclicStructure

    """Function_1: for-in循环用for循环实现1~100之间的奇数求和 Time: 2020.1.27Author: YaoXie"" ...

  4. SSL证书基础知识

    公司要为一个英国的客户提供由HTTP升级到HTTPS的服务,于是接触查询并学习了相关的SSL证书方面的内容,并整理了一翻. I.SSL证书说明 SSL 证书按大类一般可分为 DV SSL .OV SS ...

  5. Java连载86-List集合详解

    一.List集合 1.List集合存储元素的特点: (1)有序(List集合中存储有下标)​:存进去是这样的顺序,取出来还是按照这个顺序取出​. (2)可重复 2.深入ListJ集合 ArrayLis ...

  6. selenium等待机制

    等待机制 ​ 因为你要查找的标签由于网速等原因迟迟没有加载出来,你就直接获取这个标签,很明显是报错,现有的简单粗暴的解决办法就是time.sleep(3),睡几秒,也就是设置线程等待,等这个标签加载出 ...

  7. JS宣传页项目-综合实战

    按照国际惯例先放图 index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. drf 接口文档

    coreapi 参考点击 swagger风格接口文档 参考 参考用例 swagger 使用参考

  9. scrapy框架综合运用 爬取天气预报 + 定时任务

    爬取目标网站: http://www.weather.com.cn/ 具体区域天气地址: http://www.weather.com.cn/weather1d/101280601.shtm(深圳) ...

  10. .net mvc接收对象数组 通过ajax提交

    ajax代码 var obj = {}; obj.RoomName = ""; obj.RoomCode = ""; $.ajax({ type: " ...