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. Cesium动态绘制实体(点、标注、面、线、圆、矩形)

    //自定义绘制图形,支持 点,线,面,矩形,圆,标识,可自定义绘制过程中的和绘制完的预览 this.drawGraphic = function(view,_mode,_callback,_Graph ...

  2. Linux上安装软件

    Linux发行版的两大系列 debian:代表的比如Ubuntu,软件包管理工具apt.apt-get.dpkg,软件包名.deb redhat:代表的比如CentOS(所以在VMware上安装Cen ...

  3. OpenCV检测Marker位姿

    Marker检测采用小觅相机,可以实时检测Marker的位置和姿态,效果如下: 参考代码如下: #include "pch.h" #include <Eigen/Dense& ...

  4. Kubernetes CI/CD(1)

    本文通过在kubernetes上启动Jenkins服务,并将宿主机上的docker.docker.sock挂载到Jenkins容器中,实现在Jenkins容器中直接打镜像的形式实现CI功能. Kube ...

  5. 【python基础语法】国庆扩展练习题

    ''' 一.国庆知识小拓展 1. 用户登陆程序需求: 1. 输入用户名和密码; 2. 判断用户名和密码是否正确? (name='root', password='123') 3. 为了防止暴力破解, ...

  6. centos7系统中忘记了root管理员账号密码的解决方式

    随着计算机的使用越来越普遍,现在的用户都会有多个密码,不是这软件的密码就是那个的,QQ.邮箱.游戏,还有系统的登录密码!每一个密码都不一样!所以越来越多的密码需要去记住!也因为这样,只要其中一个长时间 ...

  7. 基于topsis和熵权法

    % % X 数据矩阵 % % n 数据矩阵行数即评价对象数目 % % m 数据矩阵列数即经济指标数目 % % B 乘以熵权的数据矩阵 % % Dist_max D+ 与最大值的距离向量 % % Dis ...

  8. Vue中vue-i18n结合vant-ui实现国际化

    (一)添加依赖模块 在package.json文件中添加vant模块的依赖,如: // package.json { "dependencies": { "vant&qu ...

  9. Jacoco收集单元测试、集成测试和系统功能测试覆盖率

    Jacoco收集单元测试.集成测试和系统功能测试覆盖率 2020-02-27  目录 1 安装版本2 被测系统代码示例3 收集单元测试覆盖率4 收集集成和功能测试覆盖率 代码覆盖率可在单元测试.系统测 ...

  10. Apache Flink 任意 Jar 包上传致 RCE 漏洞复现

    0x00 简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布.数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任 ...