5

我同时使用wait(until.elementLocated(element, timeout))wait(until.elementVisible(element, timeout))。“等到可见”在“等到找到”没有的地方失败。为什么?

4

3 回答 3

3

wait(until.elementLocated(element, timeout))由于您的问题是和您没有标记任何 Selenium 绑定之间的区别wait(until.elementVisible(element, timeout)),我将从 Java 的角度解释它。

  • until.elementLocated()相当于presenceOfElementLocated()Java。它检查页面的 HTML DOM 中是否存在元素。这并不一定意味着元素是可见的。所以不能保证它是可交互的。
  • until.elementVisible()相当于visibilityOfElementLocated()Java。它检查一个元素是否存在于页面的 HTML DOM 中并且是可见的。可见性意味着元素不仅被显示,而且具有大于 0的高度和宽度。同样,这并不一定意味着该元素是可交互的,即可点击的。

有关ExpectedConditionsJava 的更多详细信息,请参阅文档

于 2018-01-25T08:35:08.730 回答
1

until.elementLocated(element, timeout) 和 until.elementVisible(element, timeout) 都用于获取元素。

但我猜 elementLocated 会更快,因为它只是检查页面的 DOM 上是否存在元素,并不一定意味着该元素是可见的。而 elementVisible 必须检查一个元素是否存在于页面的 DOM 上并且可见。可见性意味着元素不仅被显示,而且还具有高度和宽度。

希望这将解释差异。

于 2018-01-25T09:53:47.153 回答
1

等到可见确实做到了。它一直等到元素可见。元素可以在 DOM 中,但可以隐藏。在这种情况下,它将能够被定位但不可见。

于 2018-01-25T02:12:26.283 回答