自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间:

1 time.sleep()  固定等待时间,需import time

2 webdriver隐式等待 无需引入包

driver.implicitly_wait(10) 最多等待10s,10s内监测到元素则继续执行,超过10s抛出超时异常。driver生命周期内都有效

3 webdriver显示等待,需引包from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver, 10).until()或until_not() 10s内每500ms监测一次条件是否成立,超过10s超时

下面尝试未设置时间,设置固定时间,设置隐式等待和显示等待四种方式:

1 未设置等待时间,抛出异常未找到元素

#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
#未等待
dr.find_element_by_partial_link_text("Web Browser Automation").click()
dr.quit()

2 设置固定等待时间2s

#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
#固定等待时间
time.sleep(2)
dr.find_element_by_partial_link_text("Web Browser Automation").click()
dr.quit()

3 隐式等待

#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys dr = webdriver.Firefox()
dr.implicitly_wait(10) #设置页面元素的隐式等待时间10s
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
dr.find_element_by_partial_link_text("Web Browser Automation").click()
dr.quit()

4 显示等待

#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
#显示等待
element = WebDriverWait(dr,10).until(
EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,'Web Browser Automation'))
)
element.click()
dr.quit()

webdriver提供了很多预期条件:

the end!

Selenium入门20 等待时间的更多相关文章

  1. 自动化测试Java一:Selenium入门

    From: https://blog.csdn.net/u013258415/article/details/77750214 Selenium入门 欢迎阅读Selenium入门讲义,本讲义将会重点介 ...

  2. Selenium自动化测试Python一:Selenium入门

    Selenium入门 欢迎阅读Selenium入门讲义,本讲义将会重点介绍Selenium的入门知识以及Selenium的前置知识. 自动化测试的基础 在Selenium的课程以前,我们先回顾一下软件 ...

  3. Selenium 入门到精通系列:六

    Selenium 入门到精通系列 PS:Checkbox方法 例子 HTML: <html> <head> <title>测试页面</title> &l ...

  4. Selenium 入门到精通系列:五

    Selenium 入门到精通系列 PS:显式等待.隐式等待.强制等待方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019 ...

  5. Selenium 入门到精通系列:四

    Selenium 入门到精通系列 PS:鼠标右键.鼠标悬停.键盘操作方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019 ...

  6. Selenium 入门到精通系列:三

    Selenium 入门到精通系列 PS:Driver_Element 常用方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2 ...

  7. Selenium 入门到精通系列:二

    Selenium 入门到精通系列 PS:用户登录 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12 ...

  8. Selenium 入门到精通系列:一

    Selenium 入门到精通系列 PS:控制浏览器窗口大小.前进.后退.刷新 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 20 ...

  9. Selenium入门6 操作元素,获取元素属性

    取元素的text,属性get_attribute,标签名tag_name 操作元素:send_keys输入,click点击,submit提交,clear清除输入 状态判断:is_display,is_ ...

随机推荐

  1. 随性练习:python字典实现文本合并

    主要用到,字典.字符串分割和连接.文件等操作 例如:有以下两个txt文本,要合并成一个 代码: address_book1 = {} address_book2 = {} def read_addre ...

  2. ssis error at other ssis.pipeline "ole db destination" failed validation and returned validation status

    我在修改一个ssis的包,发现这个destination的表被改过了.所以就重建了表.就导致了这个错误. 打开包重新检查下表结构的匹配就好了

  3. mysql 安装以及卸载 CentOS 7

    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 安装:mkdir ...

  4. “随机数”函数的 ES6 实现

    生成一个指定长度的数字数组 const getNumArray = len => [...new Array(len).keys()]; const getNumArray = len => ...

  5. 树形dp学习

    学习博客:https://www.cnblogs.com/qq936584671/p/10274268.html 树的性质:n个点,n-1条边,任意两个点之间只存在一条路径,可以人为设置根节点,对于任 ...

  6. AndroidStudio项目提交到github最详细步骤

    在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方式(cmd)进行提交,最近发现studio其实是自带这种功能的,终于可以摆脱命令行了. 因为自己也没 ...

  7. Python 元组 (tuple)

    作者博文地址:https://www.cnblogs.com/liu-shuai/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号 ...

  8. jade 入门

    推荐网站: jade官网 html在线转换为jade 参考文章1 参考文章2     node的模板常用的有两个,一个是ejs,另外一个就是jade,相对来说,ejs更容易理解,像原生的html,很多 ...

  9. C语言测试int型数据的最大值最小值

    #include<stdio.h> int int_min(){    int i=0;    int j=0;    while(i>=j)    {        i=j;    ...

  10. Java学生管理系统(连接数据库查询)超详细

    这几天逼着交Java,借鉴各位师傅的做出来这么个简陋的东西,各位大师傅不要笑我.(学都没有学过Java的我,QAQ~) 下面针对的都是SQL Server系列的连接,如果你使用MySQL那么不必看关于 ...