隐式等待和显式等待之间的内部工作区别是什么

2024-03-14

显式等待示例

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement= wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

隐式等待示例

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

假设 myDynamicElement 在第 6 秒可见, 因此,在这两种情况下,驱动程序都会等到第 6 秒,控制权将移至连续的书面语句,我想了解在这种情况下隐式等待和显式等待有何不同?他们内部如何运作?


隐式等待:

隐式等待 https://stackoverflow.com/questions/45672693/using-implicit-wait-in-selenium/45674706#45674706是配置的方式网络驱动程序 https://stackoverflow.com/questions/48079120/what-is-the-difference-between-chromedriver-and-webdriver-in-selenium/48080871#48080871实例来轮询HTML DOM https://www.w3schools.com/js/js_htmldom.asp当它尝试查找元素或查找元素组/集合(如果它们不能立即可用)时,会持续一段配置的时间。按照目前的W3C规范默认时间配置为0。我们可以配置时间隐式等待 https://stackoverflow.com/questions/48989984/selenium-implicitly-wait-doesnt-work/48991017#48991017我们的脚本/程序中的任何位置,并且可以根据我们的需要重新配置它。一旦我们设置隐式等待 https://stackoverflow.com/questions/46767355/implicit-wait-command-not-working-selenium-webdriver-c-sharp/46769081#46769081它将在该人的生命周期内有效网络驱动程序实例。

参考

一些参考资料:

  • 详细讨论 https://stackoverflow.com/questions/45672693/using-implicit-wait-in-selenium/45674706#45674706
  • 详细文档 http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits.

显式等待:

显式等待 https://stackoverflow.com/questions/52706693/how-to-combine-implicit-and-explicit-timeouts-in-selenium/52707885#52707885是您定义、配置和实现的代码块网络驱动程序实例等待满足特定条件,然后再继续下一行代码。 WebDriverWait 以及某些方法/子句预期条件 https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html是一种实现方法显式等待 https://stackoverflow.com/questions/45712431/replace-implicit-wait-with-explicit-wait-selenium-webdriver-java/45715759#45715759.

参考

一些参考资料:

  • 详细讨论 https://stackoverflow.com/questions/45712431/replace-implicit-wait-with-explicit-wait-selenium-webdriver-java/45715759#45715759
  • 详细文档 http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits.

变得细化:

根据您的查询...假设 myDynamicElement 在第 6 秒可见,因此在这两种情况下,驱动程序都会等到第 6 秒,控制权将移至连续的书面语句...

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

隐式等待会轮询DOM Tree https://javascript.info/dom-nodes对于整个10 secs无论是否我的动态元素(或与您的定位器匹配的多个元素)在第 4/6/8 秒可见。所以,在这种情况下,你的脚本得到延迟于4 secs.

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement= wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

显式等待会等待最长 10 秒对于元素someid变为可点击(显示并启用)。这网页元素一旦返回预期条件已满足。如果预期条件在配置的时间线的整个持续时间内未满足,您会看到正确的例外.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐式等待和显式等待之间的内部工作区别是什么 的相关文章

  • 找不到 jni.h 文件 - 在 OS X El Capitan 上安装 node-java 模块

    我正在尝试安装node java允许 Node js 连接到现有的模块Java蜜蜂 这是我用来安装此模块的命令 须藤 npm 安装 java g 这是我收到的错误的堆栈跟踪 gt email protected cdn cgi l emai
  • 更改在 docker 中运行的 selenium 节点的日志级别

    我们的团队正在使用 docker 部署 selenium 网格 默认日志级别似乎设置为 INFO 我想将其设置为更高的值 严重 或完全关闭它们 我已经进行了三次尝试 但到目前为止 没有效果 方法一 从 selenium 客户端 我尝试在 D
  • 如何在 Python 中使用 Selenium 运行无头 Chrome?

    我正在尝试使用 selenium 进行一些操作 我真的希望我的脚本能够快速运行 我认为使用无头 Chrome 运行我的脚本会使其速度更快 首先 这个假设是否正确 或者我是否使用无头驱动程序运行我的脚本并不重要 我希望无头 Chrome 能够
  • 使无头浏览器停止加载页面

    我正在使用 watir webdriver ruby gem 它启动浏览器 Chrome 并开始加载页面 页面加载速度太慢 watir webdriver 引发超时错误 如何让浏览器停止加载页面 require watir webdrive
  • 如何使用 XPath 和 Selenium Webdriver 提取 XML 数据

    我正在使用 Selenium Webdriver ver 2 31 2 0 Net 我正在尝试提取从 driver PageSource 返回的元素 XML 我的问题 如何使用下面的 xpath 获取项目列表 我可以使用 XPATH 插件在
  • 如何在 python 中将 selenium webelement 转换为字符串变量

    from selenium import webdriver from time import sleep from selenium common exceptions import NoSuchAttributeException fr
  • 带有隐藏输入的 Selenium 文件选择器[type=file]

    我有一个图像文件上传并想测试它硒 java 用户有两个选择 他可以通过从本地计算机拖放来推送图像 也可以单击 浏览 按钮 然后出现浏览器指定的文件选择器 In Selenium我尝试了不同的事情 据我所知Selenium不提供浏览器之外的操
  • Selenium - 运行 javascript

    我有一个愚蠢的问题 如何运行位于测试站点上的脚本 我可以运行警报 但我无权访问我编写的脚本 我尝试过 runscript geteval 没有任何效果 由于 Selenium 是用 JavaScript 编写的 因此 window 对象会移
  • SeleneseTestCase 已弃用 - 如何调用 verify* 方法?

    当我在 Selenium IDE 中使用 JUnit 4 格式化程序生成的代码时 我收到警告 称类 SeleneseTestCase 已弃用 这是有道理的 因为它应该采用 JUnit 4 语法并使用注释 而不是从测试类派生 问题是当我修改代
  • 如何滚动到 div 元素底部 Selenium Webdriver

    我有一个用例 其中网页上有一个 div 元素 只要您单击链接 它就会出现一个弹出对话框 它不是实际的弹出窗口 它类似于当您单击链接进行检查时在 Facebook 中打开的对话框 对您的帖子的反应等 我使用 Selenium WebDrive
  • Selenium 可以监控 XHR 请求吗

    Selenium 有什么方法可以监控来自应用程序的 XHR 请求 我想创建一个测试 其中测试单击按钮 然后检查是否发出了正确的 Ajax 请求 编辑 如果重要的话我正在使用 PHP Unit 您可以使用 Selenium 捕获网络流量 然后
  • docker 中的 Capybara headless chrome 返回 DevToolsActivePort 文件不存在

    我正在尝试配置系统测试以使用硒中的无头铬 我有以下水豚配置 spec support capybara rb Capybara server puma Silent true RSpec configure do config config
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见
  • Phantom JS 50% 的时间失败

    我搜索一个文本框 然后尝试用字符串填充它 这是代码 var fname driver FindElement By Name iFirstName 50 if fname null do System Threading Thread Sl
  • 如何使用 Selenium Webdriver .NET 绑定设置 Chrome 首选项?

    这是我正在使用的 用户代理可以成功设置 而下载首选项则不能 Windows 7 Chrome 26 Selenium dotnet 2 31 2 chromedriver win 26 0 1383 0 ChromeOptions chro
  • 硒 Twitter java

    我正在尝试使用 Selenium Webdriver 连接到我的 Twitter 帐户 WebDriver driver new FirefoxDriver driver get https www twitter com login We
  • 如何检查当前日期并移至下一个日期

    我遇到了一个我似乎无法理解的 python 问题 不确定是否需要使用 if 语句 但因为我是 python 新手 所以我实际上不确定如何编写这个小问题 事实上 这就是我遇到的问题 对于出发日历 我希望 python 能够执行以下操作 查看
  • 如何将 chromedriver 与 selenium webdriver 代理一起使用?

    我们的网络环境使用代理服务器连接到外部互联网 在IE gt Internet选项 gt 连接 gt LAN设置中配置 例如 10 212 20 11 8080 现在 我在 chrome 和 IE 上使用 selenium webdriver
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo

随机推荐