有人可以说使用的区别是:
driver.manage().wait(long timeout)
和
WebDriverWait wait = new WebDriverWait(driver, WAIT_IN_SECONDS)
(EXPLICIT WAIT)了解我将来的参考资料。
请原谅我在自动化方面对我自己的新蜜蜂的问题很愚蠢。
它是显式等待的简单形式吗?
答案 0 :(得分:0)
driver.manage.wait(long timeout)
强> driver.manage.wait(long timeout)
实际上来自java.lang.Object.wait()
的java.lang.Object
Class
方法导致当前线程等待另一个线程调用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.
在一个参数版本中,中断和虚假唤醒是可能的,因此该方法应始终在循环中使用,如下所示:
synchronized (obj) {
while (<condition does not hold>)
obj.wait();
... // Perform action appropriate to condition
}
此方法只能由作为此对象监视器所有者的线程调用。
抛出:
InterruptedException
:如果另一个线程中断了当前线程。抛出此异常时,将清除当前线程的中断状态。IllegalArgumentException
:如果超时值为负。IllegalMonitorStateException
:如果当前主题不是对象监视器的所有者。Explicit Wait
强> Explicit Wait
是您为WebDriver实例定义,配置和实现的代码块,以便在继续下一行代码之前等待满足某个条件。有一些方法可以帮助我们实现只在需要时才会等待的ExplicitWait。 WebDriverWait与ExpectedCondition结合使用是ExplicitWait可以实现的方式之一。
您可以在质量保证Replace implicit wait with explicit wait (selenium webdriver & java)
Explicit Wait
及其实施的详细讨论
obj.wait()
与 WebDriverWait
无关。 obj.wait()
处理线程级别的内部逻辑,其中 WebDriverWait
在 HTML DOM
范围内处理强>
答案 1 :(得分:0)
有不同的方法让硒等待。 Inlicit和Explicit以及另一种更高级的等待形式是Fluent Wait。
答案 2 :(得分:0)
隐含等待
@('D:/NewFolder','D:/NewFolder1/NewFolder_app','D:/NewFolder1/NewFolder_app_pool','C:/NewTestFolder101') | foreach {New-Item -Path $_ -ItemType Directory -Force}
隐式等待将告诉Web驱动程序在抛出异常之前等待一段时间。明确等待时间应用于脚本中的所有元素。隐式等待的缺点是,即使页面也是如此并且在时间单位之前加载元素,Webdriver保持执行直到达到该时间。
明确等待
显式等待用于告诉Web驱动程序在抛出异常之前等待某些条件(预期条件)或超过最大时间。显式等待是一种智能等待,但它只能应用于指定的元素。显式等待提供比隐式等待更好的选项,因为它将等待动态加载的元素。
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
请参阅此链接了解更多信息: https://www.guru99.com/implicit-explicit-waits-selenium.html