Selenium的显示等待和隐式等待

隐式等待

当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,
换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找DOM,默认的时间是0

from selenium import webdriverbrowser = webdriver.Chrome()
browser.implicitly_wait(10)  # 等待十秒加载不出来就会抛出异常,10秒内加载出来正常返回
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input)

显示等待

指定一个等待条件,和一个最长等待时间,程序会判断在等待时间内条件是否满足,如果满足则返回,如果不满足会继续等待,超过时间就会抛出异常

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECbrowser = webdriver.Chrome()
browser.get('https://www.taobao.com/')
wait = WebDriverWait(browser, 10)
input = wait.until(EC.presence_of_element_located((By.ID, 'q')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))
print(input, button)

样例2

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions driver = webdriver.Chrome()
driver.get('http://www.baidu')element = WebDriverWait(driver,5,0.5).util(expected_conditions.presence_of_element_located((By.ID,'kw')))
element.send_keys('hello')
driver.quit()

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔(步长)时间,默认为0.5S
ignored_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException异常
WebDriverWait()一般由until()或 until_not()方法配合使用
until(method, message=’ ‘):调用该方法提供的驱动程序作为一个参数,直到返回值为True
until_not(method, message=’ '):调用该方法提供的驱动程序作为一个参数,直到返回值为False

常用的一些函数。

title_is 标题是某内容
title_contains 标题包含某内容
presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')
visibility_of_element_located 元素可见,传入定位元组
visibility_of 可见,传入元素对象
presence_of_all_elements_located 所有元素加载出
text_to_be_present_in_element 某个元素文本包含某文字
text_to_be_present_in_element_value 某个元素值包含某文字
frame_to_be_available_and_switch_to_it frame加载并切换
invisibility_of_element_located 元素不可见
element_to_be_clickable 元素可点击
staleness_of 判断一个元素是否仍在DOM,可判断页面是否已经刷新
element_to_be_selected 元素可选择,传元素对象
element_located_to_be_selected 元素可选择,传入定位元组
element_selection_state_to_be 传入元素对象以及状态,相等返回True,否则返回False
element_located_selection_state_to_be 传入定位元组以及状态,相等返回True,否则返回False
alert_is_present 是否出现Alert

参考文章

https://www.jianshu.com/p/fa5477a2e0dd

Selenium的显示等待和隐式等待相关推荐

  1. python显示等待和隐式等待_荐selenium内的隐式等待和显示等待的区别

    selenium的页面等待有显示等待和隐式等待 大多数Web应用程序都是使用Ajax和Javascript开发的.当浏览器加载页面时,我们想要与之交互的元素可能以不同的时间间隔加载. 它不仅难以识别元 ...

  2. Selenium显示等待和隐式等待

    在调试代码的时候经常会遇到,selenium元素定位有时有效有时无效,先比较下 Selenium显示等待和隐式等待的区别 1.selenium的显示等待 原理:显示等待,就是明确的要等到某个元素的出现 ...

  3. selenium 的显示等待与隐式等待

    现在很多的网页都采用了 Ajax 技术,那么采用一般的静态爬虫技术会出现抓取不到页面的元素.比如歌曲的主页会有评论数量,一般评论数量是动态加载的. 所以这就涉及到selenium,支持各种浏览器,包括 ...

  4. selenium中的三种等待方式以及显示等待和隐式等待区别

    selenium的三种等待方式 selenium中一般分为三种等待方式:显示等待.隐式等待.sleep强制等待 1.显示等待(有条件) 程序提前指定等待条件和等待时间,在查找元素时,判断规定时间内是否 ...

  5. Selenium 显示等待、隐式等待及流畅等待

    目录 等待 显式等待 选项 预期的条件 隐式等待 流畅等待 等待 WebDriver通常可以说有一个阻塞API.因为它是一个指示浏览器做什么的进程外库,而且web平台本质上是异步的,所以WebDriv ...

  6. selenium的三种等待方式(显示等待,隐式等待,强制等待)简单了解与总结

    1.强制等待(无条件等待) 使用方法:time.sleep(delay) delay的单位为秒,delay设置多少秒页面就会等待多少秒(死等),这个方法很容易让线程挂掉,使程序抛异常,所以要慎用此方法 ...

  7. python selenium 中显示等待与隐式等待同时存在,发生冲突时,解决方法

    当我们在一个基类中写了一句隐式等待,如下面的 self.driver.implicitly_wait(30) 可以为整个程序都设置一个30秒的等待时间,但是当我们有段代码不想等待30秒这么久,那该怎么 ...

  8. selenium中强制等待,隐式等待,显示等待的区别

    1.强制等待:time.sleep() 最简单的等待方式,缺点:设置时间短了没用,长了又浪费时间 2.隐式等待: 隐式等待是全局的是针对所有元素,设置等待时间如10秒,如果10 秒内出现,则继续向下, ...

  9. Appium+PythonUI自动化之webdriver 的三种等待方式(强制等待、隐式等待、显示等待)

    在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定的超时时间,大致应该在1-3秒的样子,如果这个时间内仍然定位不到元素,就会抛出异常,中止脚本执行.我们可以通过在 ...

最新文章

  1. EP39 全局静态ApplicationContext的问题
  2. Spring Cloud Gateway 突发高危漏洞,下一代云原生网关恰逢其时?
  3. flush方法和close方法的区别
  4. 324. Wiggle Sort II | 324. 摆动排序 II(降序穿插)
  5. 如何评估深度学习模型效果?阿里工程师这么做 1
  6. JSF 网站汇总(转)
  7. linux目录详解i-node,i-node节点与链接
  8. mysql percona 密码设置_Percona mysql5.7 默认密码
  9. b+树 b-树的区别
  10. java集合框架(set)
  11. linux cd 命令详解,Linux命令详解之–cd命令
  12. sqlserver字符串拼接
  13. Janusgraph索引
  14. UG NX 12鼠标和键盘操作
  15. 解决因多网卡导致dubbo注册到ZK的IP错误问题,dubbox(当当,2.8.4)升级至dubbo(Apache,2.7.15)并集成
  16. 软件设计模式—命令模式
  17. 网售个人隐私开房记录都可查 信息黑市如此猖獗
  18. 数据化运营04 DAU、MAU、UV:谁是最有参考价值的活跃指标?
  19. 【润乾报表2018】如何为参数报表增加重置功能
  20. springboot 2.x升级后出现Spring Security – There is no PasswordEncoder mapped for the id “null”的解决方案

热门文章

  1. 基于STM32的照片查看器课程报告
  2. 模拟计算机打字,JS实现电脑虚拟键盘打字测试
  3. hbase 常用命令行操作总结
  4. Linux lseek函数
  5. const指针的一些总结
  6. 电源知识——LDO线性电源、开关电源(基础)
  7. 机器学习中数据预处理——标准化/归一化方法(scaler)
  8. 计算机缺少opencl.dll,opencl.dll损坏,如何修复
  9. 什么是双亲委派,有什么好处?
  10. python生成视频_成为视频分析专家:自动生成视频集锦(Python实现)