这个假期有些长,长到忘记了要学习,要找工作,好吧,在我每天无休止的追着偶像剧时,我确实没有负罪感,在听了小祥大佬的分享后,我连睡午觉都被吓醒。大佬跟我同一个班,在大厂工作,每天还抽时间学习,作业也没落下,看看自己,再对比下别人,终于明白,我拿不到高薪原来是有原因的,话不多说,从昨天开始我进入了web自动化的学习,今天整理了下三大等待方式,特此做个笔记吧,后续忘记了可以再review。

等待分为三种:

1.等待(俗称傻等) time.sleep(2)

这种等待就按照设定的时间,傻傻的等待,配合着第三种等待来使用

2.隐性等待  implicitly_wait(30)

放在开始与浏览器对话开始,对于当前页面来说,隐性的等待,超过了等待时间才会抛出异常

作用:1.等待元素被找到,2.等待命令执行完成

3.显式等待

所有条件都是明确指出来,等待条件存在之后,再进行后续的代码执行

等待:webdriverwait 条件:expected_condition

等待20秒 检测条件成立的间隔:默认是0.5秒

上段代码,就好理解了

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#开始与浏览器的会话
dr = webdriver.Chrome()
#当前页面,隐性等待30秒
dr.implicitly_wait(30) dr.get('http://www.baidu.com')
#动作,点击登录链接
dr.maximize_window() #窗口最大化
time.sleep(2) #查找元素,点击登录链接动作
loc = (By.XPATH,'//*[@id="u1"]//a[@name="tj_login"]')
dr.find_element(*loc).click()
time.sleep(3) #等待xxx元素可见
#1.元素定位表达式
loc = (By.ID,'TANGRAM__PSP_10__footerULoginBtn')
#1.WebDriverWait(dr,20,1),第一个参数把当前的会话传给它,第二个参数是等待的最长时间,第三个参数是轮询时间为1s,默认是0.5秒。可以不用填写
#2.until(EC.visibility_of_element_located(loc))直到元素可见时就执行,参数为:loc元组,一般用元组不可变来表达
WebDriverWait(dr,20,1).until(EC.visibility_of_element_located(loc)) #查找登录账号的元素,做点击操作
dr.find_element(*loc).click()
time.sleep(2)
#结束会话
dr.quit()
那么什么时候需要等待?
元素操作之前,稳妥起见,都需要等一等
 

web自动化之三大等待的更多相关文章

  1. web自动化的三大等待

    由于web网页打开后需要时间进行数据的传送,页面的渲染,所以我们在写web自动化脚本的时候,需要等待它加载完所有的页面元素,我们才进行操作或点击.同时这种等待也是为了提高脚本的稳定性. seleniu ...

  2. web自动化 -- 三种等待方式

    一.强制等待 二.隐式等待 注:隐式等待的作用域是全局,所以一般设置在整局代码的头几行. 如: 三.显示等待 元素存在: 元素可见: 元素可点击: 看到上图源码中有一个   element.is_en ...

  3. 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...

  4. 爬虫实战:爬虫之 web 自动化终极杀手 ( 上)

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:陈象 导语: 最近写了好几个简单的爬虫,踩了好几个深坑,在这里总结一下,给大家在编写爬虫时候能给点思路.本次爬虫内容有:静态页面的爬 ...

  5. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...

  6. Web自动化之Headless Chrome概览

    Web自动化 这里所说的Web自动化是所有跟页面相关的自动化,比如页面爬取,数据抓取,页面内容检测,页面功能测试,页面加载性能测试,页面回归测试等等,当前主要由如下几种解决方式: 文本数据获取 这就是 ...

  7. WEB自动化(Python+selenium)的API

    在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                         ...

  8. Selenium Web 自动化 - Selenium(Java)环境搭建

    Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/j ...

  9. Selenium Web 自动化 - Selenium常用API

    Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作  1.1 用webdriver打开一个浏览器  1.2 最大化浏览器&关闭浏览器 ...

随机推荐

  1. sqli_labs学习笔记(一)Less-1~Less-20

    开门见山 Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入) ·  方法一:手工UNION联合查询注入 输入单引号, ...

  2. ios---设置UITabBarController的字体颜色和大小

    +(void)load{ NSMutableDictionary *attr3=[NSMutableDictionary dictionary]; attr3[NSForegroundColorAtt ...

  3. 运行MapReduce任务

    1:运行MapReduce任务 1:原始数据准备 统计用户的登录次数: 源数据login_log.txt如下: 7whygb5m@linshiyouxiang.net nuahvuhuoia@qq.c ...

  4. 如何准备Java面试?如何把面试官的提问引导到自己准备好的范围内?

    Java能力和面试能力,这是两个方面的技能,可以这样说,如果不准备,一些大神或许也能通过面试,但能力和工资有可能被低估.再仔细分析下原因,面试中问的问题,虽然在职位介绍里已经给出了范围,但针对每个点, ...

  5. MyBatis基础_连接池与事务、动态SQL、注解开发

    一.MyBatis连接池及事务控制 1.连接池 在实际开发中,都会使用连接池,因为它可以减少获取连接缩消耗的时间.所谓连接池,就是存储数据库连接的容器.连接池中存储一定数量的数据库连接,当线程需要使用 ...

  6. Codeforces 924 A Tritonic Iridescence(暴力集合交集、相等)

    题目链接:点击打开链接 There is a rectangular grid of n rows of m initially-white cells each. Arkady performed ...

  7. Codeforces 977D Divide by three, multiply by two(拓扑排序)

      Polycarp likes to play with numbers. He takes some integer number xx, writes it down on the board, ...

  8. num07---工厂方法模式

    一.简单工厂模式 [之所以叫简单,说明没有完全做到 设计模式的要求] 前言:活字印刷术,面向对象思想 复用 维护 扩展 灵活 高内聚低耦合 以 实现 一个计算器 为例: 1.创建 抽象类count, ...

  9. 第3章 JDK并发包(五)

    3.3 不要重复发明轮子:JDK的并发容器 3.3.1 超好用的工具类:并发集合简介 JDK提供的这些容器大部分在java.util.concurrent包中. ConcurrentHashMap:这 ...

  10. 从底层入手,解析字节码增强和Btrace应用

    这篇文章聊下字节码和相关的应用. 1.机器码和字节码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据. 通常意义上来 ...