driver.manage.wait(long timeout) 和显式等待之间的区别

2023-12-22

谁能说出以下的区别:

driver.manage().wait(long timeout)

and

WebDriverWait wait = new WebDriverWait(driver, WAIT_IN_SECONDS) 

(明确等待)了解我未来的参考。

请原谅我,对于我这个自动化领域的新手来说,这些问题很愚蠢。

它是显式等待的简单形式吗?


driver.manage.wait(long timeout)

driver.manage.wait(long timeout)实际上是java.lang.Object.wait() https://www.tutorialspoint.com/java/lang/object_wait_timeout.htm方法是来自java.lang.Object Class https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html这会导致当前线程等待,直到另一个线程调用notify()方法或notifyAll()该对象的方法或已经过了指定的时间。当前线程必须拥有该对象的监视器。该线程释放此监视器的所有权并等待,直到另一个线程通过调用notify 方法或notifyAll 方法通知在此对象的监视器上等待的线程被唤醒。然后,线程等待,直到它可以重新获得监视器的所有权并恢复执行。

宣言

的声明java.lang.Object.wait()方法如下:

public final void wait() throws InterruptedException
{
    //code logic
}

参数

timeout - the maximum time to wait in milliseconds.

返回值

This method does not return a value.

Usage

在单参数版本中,可能会出现中断和虚假唤醒,因此应始终在循环中使用此方法,如下所示:

 synchronized (obj) {
     while (<condition does not hold>)
         obj.wait();
     ... // Perform action appropriate to condition
 }

此方法只能由该对象监视器的所有者的线程调用。

例外

Throws :

  • InterruptedException:如果另一个线程中断了当前线程。当抛出该异常时,当前线程的中断状态被清除。
  • IllegalArgumentException:如果超时值为负数。
  • IllegalMonitorStateException:如果当前线程不是对象监视器的所有者。

Explicit Wait

Explicit Wait是您为 WebDriver 实例定义、配置和实现的代码块,用于等待满足特定条件,然后再继续执行下一行代码。有一些方法可以帮助我们实现 ExplicitWait,它只等待需要的时间。 WebDriverWait 与 ExpectedCondition 的结合是实现 ExplicitWait 的方式之一。

您可以找到有关的详细讨论Explicit Wait以及它在质量检查中的实施


回答这个问题

obj.wait()与 没有关系WebDriverWait. obj.wait()处理线程级别的内部逻辑,其中WebDriverWait交易范围内HTML DOM.

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

driver.manage.wait(long timeout) 和显式等待之间的区别 的相关文章

  • cucumber.json 报告被重新运行场景报告覆盖

    我有一个具有相同技术堆栈 JAVA1 8 Cucumber JVM JUnit Maven 的 UI 测试项目和一个 API 测试项目 这两个项目都向我展示了这个问题 可能是因为两者都存在相同的依赖关系集 我使用了使用 maven sure
  • 为什么 Java 中需要 String[] args?

    我知道 String args 是作为参数传递到 main 的字符串数组 java Print Hello World class Print public static void main String args System out p
  • 用Java截取网页的屏幕截图[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一个免费的工具可以读取给定的网页并截取它的屏幕截图 我使用 VirtualFramebuffer 和 Firefox Binary
  • CDI 对象无法使用注入的构造函数进行代理

    当尝试将参数注入 CDI bean ApplicationScoped 的构造函数时 我遇到以下问题 Caused by org jboss weld exceptions UnproxyableResolutionException WE
  • Java 密钥库 - 以编程方式从密钥库文件中选择要使用的证书

    我有一个 java 密钥库文件 其中包含多个客户端证书 我希望在 Java 应用程序中仅选择其中一个证书来连接到服务 有没有一种简单的方法可以做到这一点 到目前为止 我找到解决方案的唯一方法是使用原始密钥库文件中的客户端证书详细信息 通过其
  • 规范路径和绝对路径有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 中的 getPath getAbsolutePath 和 getCanonicalPath 有什么区别 https stackoverflow com questions 1099300 w
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • 如何使用 Selenium WebDriver 和 Java 滚动特定的 DIV?

    WebDriver 无法识别某些 WebElement WebDriver 无法找到浏览器可见区域中不可见的元素 In order to make the WebElement viewable by WebDriver We need t
  • 为什么在java中加载JNI是在静态初始化程序中完成的?

    在许多使用 JNI 的示例中 我看到类似以下内容 class SampleClass static System loadLibrary somelib 这种特殊语法的目的是什么 为什么使用这个 而不仅仅是在类构造函数或类似的东西中 我想你
  • 使用 IntelliJ 调试 Java 进程 - 连接到套接字但不连接到目标 VM

    现在已解决 请参阅问题末尾 我正在尝试使用 IntelliJ Community Edition 的调试器来调试 Java 进程 套接字正在侦听 但是当我尝试连接时 调试过程显示以下内容 连接到目标虚拟机 地址 8003 传输 socket
  • 结果显示图像上有衬里

    我正在使用 opencv 和 android ndk 下面是我的 jni 代码 void Vignete Mat img1 Mat img2 Mat out resize img1 img1 img2 size img1 convertTo
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • Java JDT 解析器。获取VariableDeclarationFragment的变量类型

    我一直在用 JDT 实现 Java 解析器 但我不知道当变量的节点类型为变量声明片段 我只有在涉及到时才发现如何获取变量类型变量声明 我的代码如下 public boolean visit VariableDeclarationFragme
  • 参数列表中的“...”是什么意思? doInBackground(字符串...参数)

    我不明白那个语法 尝试用谷歌搜索各种单词加上 是没有用的 它被称为varargs http java sun com j2se 1 5 0 docs guide language varargs html 这个事实应该产生更好的谷歌结果 h
  • 通过命令行参数更改默认的 ant 目标

    最近我被分配了一个任务 让ant能够为不同的环境构建war包 除了一项功能外 我几乎完成了 蚂蚁接受一个env参数类似 Denv DEV 并使用不同的配置文件来制作war包 但默认目标是start它将构建 部署并启动 tomcat 我不希望
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • 为什么永久代空间不断增长?

    我读过几篇文章 我理解以下内容 如果我错了 请纠正我和 或编辑问题 java堆是这样分段的 年轻代 创建的对象放在这里 这部分被频繁且廉价地垃圾收集 老一代 在年轻代的垃圾收集中幸存下来的对象会移到此处 该区域的垃圾收集频率较低 并且使用对
  • Java中精确的时间测量

    Java 提供了两种获取当前时间的方法 System nanoTime and System currentTimeMillis 第一个给出的结果以纳秒为单位 但实际精度比这要差得多 许多微秒 JVM 是否已经为每台特定机器提供了最佳的价值
  • 所有语言中特殊字符的 Java 正则表达式

    在我的用户输入字段中 我想允许某些特殊字符 字母和数字的组合 我应该确保正则表达式模式在输入时允许此设置任何语言 基本上我构建的这个正则表达式也应该支持 unicode 表示 如何使用 Java 中的 Pattern 类来实现这一点 这里给
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具

随机推荐

  • 如何使 JS 错误不会阻止 Trix 工作?

    This is 与这个问题相关 https stackoverflow com questions 61471679 i cant get trix editor to show properly in bootstrap theme 我发
  • 在keras中实现跳跃连接

    I am implementing ApesNet in keras It has an ApesBlock that has skip connections How do I add this to a sequential model
  • 在哪里可以下载 jQuery 计时器?

    它似乎已经从谷歌的高层消失了 我搜索了 jQuery 网站 没有结果 Google 上的顶级结果要么是死链接 上的链接http plugins jquery com node 3656 release http plugins jquery
  • Grails 2.3 - 新示例项目不起作用

    我创建了一个新的 grails 2 3 示例项目 刷新依赖项或运行应用程序时出现错误 Loading Grails 2 3 0 M1 Configuring classpath Error org sonatype aether colle
  • 对一维字符串数组中找到的所有 & 符号进行 URL 编码

    我想对数组中的所有项目进行字符串替换 我所拥有的是 row c1 str replace amp row c1 row c2 str replace amp row c2 row c3 str replace amp row c3 row
  • Vb.net - 文件夹浏览器对话框

    我遇到了一些麻烦FolderBrowserDialog我已经尝试了我能在这里找到的所有帖子 而且就我想要的而言 我几乎就在那里 以下是我的代码 Private Sub ButtonBrowseOutput Click sender As O
  • 使 3D 模型透明

    如何使特定的 3D 模型透明 就像改变模型材质的不透明度一样简单吗 我尝试了以下方法 SolidColorBrush br SolidColorBrush matDif Brush matDif DiffuseMaterial br Opa
  • 捕获包含致命 PHP 错误的 ErrorException

    在我自制的 PHP MVC 框架中 我编写了一个小错误处理程序 它将 PHP 错误包装在异常中 然后抛出它 class ErrorController extends ControllerAbstract public static fun
  • 选中复选框后获取 servlet 中 jsp 行的更新值列表

    当我尝试在更新两行或更多行列后获取值并尝试进入 servlet 时 我在 servlet 中仅获取一个值 并且我必须发送两行或更多行 或者我们可以将更新后的项目列表发送给另一个 servlet 什么我正在尝试做 我已经写信给她了 请帮助我
  • Android 4.4上解密错误

    我有加密 解密文件的算法 private static byte encrypt byte raw byte clear throws Exception SecretKeySpec skeySpec new SecretKeySpec r
  • 如何为 ListView 的 ContextActions 的 MenuItem 添加可见性绑定

    我正在尝试在选择任何列表视图项时显示上下文操作菜单项 我在那里添加了三个菜单项 但我需要绑定这些菜单项的可见性 根据选择 特定的菜单项应该可见 有没有办法在列表视图中添加 contextActions 菜单项的绑定 Since a Cont
  • 警告:没有为模块“Myproject”指定 JDK。在 Android studio 中运行我的项目时

    当我运行我的项目时 我发现该模块有错误 然后我点击发现错误 警告 没有为模块 Myproject 指定 JDK 当运行我的项目时 vI 设置JAVA HOME and JDK HOME在我的道路上 希望有人可以分享你的想法吗 当我删除jdk
  • 如何使用 Apache Ant 提取文件名的一部分?

    我想从 Ant 脚本外部生成的文件名中提取版本号 外部构建工具 PDE 构建 创建以下形式的文件artifactid 1 2 3 201101010101 jar在一个众所周知的目录中 但我无法事先告知版本控制信息 我需要提取版本部分 1
  • 如何根据索引向量求和

    我有 3 个向量 一个和向量 一个贡献向量和一个值向量 我想根据它们的贡献向量对值向量进行求和 并将它们放在和向量中相应的索引中 一个例子是 A 0 0 sum vector B 0 0 1 1 contribution vector C
  • CodeBlocks、GCC:更改项目语言 c 和 c++?

    当我选择开始控制台项目时 它允许您选择 C 或 C 但一旦创建 我不知道如何更改它 另外 当您创建 Win32 GUI 应用程序时 它根本不提供该选项 并且其默认值为 C 哪里可以改成C 我多年来一直在寻找所有项目设置 将我的文件重命名为
  • OpenCart:如何创建全局变量?

    我正在尝试在 OpenCart 中创建两个全局变量 我基本上希望能够在我的任何 tpl files 我尝试过编辑 library system php并且config php通过增加 global1 test 在我的文件中 然而调用它 tp
  • CMake 中 OpenSSL Crypto 的静态链接

    我需要为 MIPS 设备制作交叉编译的 OpenSSL 我尝试按照文档进行操作 放OPENSSL USE STATIC LIBS为 true 并设置target link libraries到您需要的库文件 CMakeLists txt c
  • elasticsearch.ElasticsearchException:标语无效或丢失(OpenSearch)

    从 Elasticsearch 迁移到 AWS OpenSearch 后 通过调用 OpenSearch 时出现以下错误Elasticsearch Rest High Level Client elasticsearch Elasticse
  • 如何删除谷歌图表中的默认错误消息

    如何删除谷歌图表中显示的默认错误 如下所示 要删除谷歌错误 请听 error 图表或其他对象上的事件 当事件被触发时 使用google visualization errors removeError 这里 我故意造成错误 将其从googl
  • driver.manage.wait(long timeout) 和显式等待之间的区别

    谁能说出以下的区别 driver manage wait long timeout and WebDriverWait wait new WebDriverWait driver WAIT IN SECONDS 明确等待 了解我未来的参考