调用driver.findElement或WebElement.findElement会更快吗?

时间:2018-05-08 00:01:09

标签: java selenium selenium-webdriver

我在网上和文档中环顾四周,试图找到这个问题的具体答案,但到目前为止还没有运气。

假设我有一个自定义容器元素,它包含网站上的某些部分,比如说,其中有一堆嵌套元素。使用driver.findElement或WebElement.findElement查找内部元素会更快吗?他们每次都必须与浏览器交互,还是后者发生在内存中?

希望这个问题有道理。

干杯。

2 个答案:

答案 0 :(得分:2)

我会说,一般来说,这需要相同的时间/你不会注意到差异。除非它是一个非常复杂的页面,但在这种情况下,您可能已经在测试中管理页面状态时遇到了更大的问题。

你提到的两个调用都会产生对selenium服务器的远程HTTP调用,这会比实际搜索HTML树中的元素花费更多的时间。因此产生的时间大致相同。

现在考虑您的网页加载时间,通常比findElement调用...

慢几个订单

您是否正在尝试加速测试,或者这个问题仅仅是出于好奇?

答案 1 :(得分:0)

driver.findElement() webelement.findElement() 基本上使用相同的原则来查找使用给定方法的第一个WebElement。 findElement()调用将返回匹配的行,或重复尝试,直到达到配置的超时(通过implicitWait或explicitWait)。

因此,从效果的角度来看,使用 driver.findElement() webelement.findElement() 不会产生影响。

那重要的是什么?

最重要的是您选择的Locator Strategy以及实施方式。 documentation明确提到:

使用 xpath 时请注意webdriver遵循标准约定:

  • // 为前缀的搜索将搜索整个文档,而不仅仅是当前节点的子节点。
  • 使用 .// 将搜索范围限制为此WebElement的子级。

结论

使用 xpath 时,请使用前缀 .// 将搜索范围限制为仅引用的WebElement的子项。