2

谁能说出以下用法的区别:

driver.manage().wait(long timeout)

WebDriverWait wait = new WebDriverWait(driver, WAIT_IN_SECONDS) 

(显式等待)了解我未来的参考。

请原谅我的问题对于我自己在自动化方面的新蜜蜂来说是愚蠢的。

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

4

3 回答 3

1

driver.manage.wait(long timeout)

driver.manage.wait(long timeout)实际上java.lang.Object.wait()方法是从导致当前线程等待直到另一个线程调用该方法或该对象的方法或经过指定的时间量。当前线程必须拥有该对象的监视器。线程释放此监视器的所有权并等待,直到另一个线程通过调用 notify 方法或 notifyAll 方法通知在此对象的监视器上等待的线程唤醒。然后线程等待直到它可以重新获得监视器的所有权并恢复执行。java.lang.Object Classnotify()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.

用法

在一个参数版本中,中断和虚假唤醒是可能的,因此此方法应始终在循环中使用,如下所示:

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

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

例外

抛出:

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

Explicit Wait

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

Explicit Wait您可以在 QA中找到有关其实施的详细讨论Replace implicit wait with explicit wait (selenium webdriver & java)


回答这个问题

obj.wait()与 没有关系WebDriverWaitobj.wait()处理线程级别的内部逻辑,其中 asWebDriverWait处理HTML DOM.

于 2018-01-20T13:56:45.187 回答
0

有不同的方法可以在 selenium 中等待。隐式和显式以及另一种高级形式的等待是流利的等待。

于 2018-01-22T00:56:59.457 回答
0

隐式等待

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

隐式等待会告诉 Web 驱动程序在抛出异常之前等待一定的时间。隐式等待时间适用于脚本中的所有元素。隐式等待的缺点是,即使页面和元素在在时间单位之前加载,Webdriver 会保持执行,直到达到该时间。

显式等待

显式等待用于告诉 Web Driver 等待某些条件(预期条件)或在抛出异常之前超过的最长时间。显式等待是一种智能等待,但它只能应用于指定的元素。显式等待比隐式等待提供更好的选择,因为它将等待动态加载的元素。

WebDriverWait wait = new WebDriverWait(driver, 40);

WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("*xpath*")));
el.click();

有关更多信息,请参阅此链接: https ://www.guru99.com/implicit-explicit-waits-selenium.html

于 2018-01-22T12:52:37.480 回答