【发布时间】:2021-12-08 20:51:19
【问题描述】:
在方法文档中是这样写的:
隐式等待时,只要找到的集合超过0个,该方法就会返回,如果超时则返回一个空列表
如我所见(如果我错了,请纠正我),当方法找到一个元素时,它会返回它而不搜索其他元素。 那么在使用 findElement 方法时,使用这种方法有什么好处呢?
【问题讨论】:
标签: selenium selenium-webdriver findelement
在方法文档中是这样写的:
隐式等待时,只要找到的集合超过0个,该方法就会返回,如果超时则返回一个空列表
如我所见(如果我错了,请纠正我),当方法找到一个元素时,它会返回它而不搜索其他元素。 那么在使用 findElement 方法时,使用这种方法有什么好处呢?
【问题讨论】:
标签: selenium selenium-webdriver findelement
findElements 方法返回与传递的定位器匹配的网络元素的列表,而findElement 方法将始终返回单个网络元素。
同样在许多情况下,您在已经完全加载的页面上应用findElement 和findElements 方法。在这种情况下,findElements 将向您返回与传递的定位器匹配的 所有 网络元素的列表。
但是,为了在加载页面中获取所有匹配元素,您不能有效地将 findElements 与隐式等待一起使用。
预期条件实现显式等待 应改为使用。
如果您知道与该页面上显示的传递定位器匹配的元素的确切数量,您可以使用此方法:
wait.until(ExpectedConditions.numberOfElementsToBe(element, expectedElementsAmount))
如果你知道它应该至少是一些已知数量的元素,你可以使用这个方法:
wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(element, expectedElementsAmount))
【讨论】:
您需要在整个上下文中阅读该行。
- findElements(): 使用给定机制查找当前页面中的所有元素。 此方法受“隐式等待”时间的影响 执行时间。当隐式等待时,此方法将返回为 一旦找到的集合中有超过 0 个项目,或者将 如果达到超时,则返回一个空列表。
这里,超过 0 个项目 意味着 大于 0 即 n > 0 但肯定会找到当前页面中的所有元素,直到超时到达。
【讨论】:
findElements 方法将返回捕获的匹配元素,并且不会等到定义的超时!