【问题标题】:Difference between presenceOfElementLocated() and presenceOfAllElementsLocatedBy() is SeleniumpresentOfElementLocated() 和 presentOfAllElementsLocatedBy() 之间的区别是 Selenium
【发布时间】:2021-02-25 13:14:31
【问题描述】:

Documentation 我看到
presenceOfElementLocated​(By locator) 是“期望检查元素是否存在于页面的 DOM 上”,而
presenceOfAllElementsLocatedBy​(By locator) 是“期望检查是否存在网页上至少存在一个元素"
那么这两种方法的实际区别是什么?

【问题讨论】:

  • 一个主要区别是第一个返回 webelement 第二个返回 webelements 列表
  • 好的。但是presenceOfAllElementsLocatedBy​(By locator)仍然不会等待页面上传递的定位器定位的所有元素的存在

标签: selenium


【解决方案1】:

https://github.com/SeleniumHQ/selenium/blob/bf2fc564eeaeecfd980984119bd18d0a00bdb29e/java/client/src/org/openqa/selenium/support/ui/ExpectedConditions.java

这是一个有趣的问题,没有太大区别,如果你检查源代码,第一个返回一个 webelement 第二个返回一个 webelement 数组/列表。

这是它唯一的作用。 IT 不会等待它返回 true 的所有元素,只要 elements.size>0

更新:

如果有人想知道为什么存在元素在找不到元素的情况下起作用:

如果查看 webdriver 等待码,可以看到 elementnotfound 有一个 ignoreexception

https://github.com/SeleniumHQ/selenium/blob/0f197cbd4fa9acdd2ac3ddebbe0cc9b4ca26bff8/java/client/src/org/openqa/selenium/support/ui/WebDriverWait.java

所以代码一直等到找到元素并在轮询期间忽略 elementnotfound

【讨论】:

  • 我明白了,所以presenceOfAllElementsLocatedBy​(By locator) 实际上不会等待页面上传递的定位器定位的所有元素的存在
  • 没错,它只是返回非空的webelement数组
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2011-07-22
  • 2014-05-18
  • 2014-02-18
  • 2017-03-17
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多