Java Selenium WebDriverWait 等待的时间比指定的等待时间长

时间:2021-07-19 15:20:01

标签: java selenium webdriver selenium-chromedriver webdriverwait

我不明白新版 Selenium 的 WebDriverWait 发生了什么,但据我所知,它的行为与我预期的不一样。

我已经尝试了 4.0.0-beta-1 - 4.0.0-beta-4 的所有版本,我刚刚更新到 4.0.0-beta-4 作为我的首选版本。

我在自己的函数中使用这些方法:

isPresent
isVisible
isClickable

他们每个人都有他们各自调用的构造函数:

WebDriverWait Presence = new WebDriverWait(webDriver, Duration.ofSeconds(1L));
WebDriverWait Visible = new WebDriverWait(webDriver, Duration.ofMillis(1L));
WebDriverWait Clickable = new WebDriverWait(webDriver, Duration.ofMillis(1L));

我发现的一些事情:

  1. 旧的构造函数将接受以 Long 类型和以秒为单位提供的持续时间
  2. 新的构造函数接受以 Duration 类型提供的持续时间
  3. Duration 有自己的方法,接受类型 Long

以前,你可以这样写:

WebDriverWait Presence = new WebDriverWait(webDriver, 1L);

现在看起来像这样(如上所示):

WebDriverWait Presence = new WebDriverWait(webDriver, Duration.ofSeconds(1L));

唯一的区别在于您如何定义等待。

使用Duration,您可以指定“类型”:

Duration.ofDays(1L)
Duration.ofHours(1L)
Duration.ofMinutes(1L)
Duration.ofSeconds(1L)
Duration.ofMillis(1L)
Duration.ofNanos(1L)

在我上面的代码示例中,我使用 WebDriverWait 定义了 Duration.ofSeconds(1L),这意味着它应该只等待 1 秒,但是,它会等待 10 秒

事实上,无论它是否设置为 Duration.ofMillisDuration.ofNanos,它都会等待 10 秒。

所以,要么我真的没有正确理解实现,要么我遗漏了什么,或者实际的 WebDriverWait 类存在问题。

还值得一提的是,无论 WebElement 是否存在,它都不会等待 10 秒,如果 WebElement 不存在,它只会等待整个持续时间。

希望有人能提供帮助。

0 个答案:

没有答案