我在网上和文档中环顾四周,试图找到这个问题的具体答案,但到目前为止还没有运气。
假设我有一个自定义容器元素,它包含网站上的某些部分,比如说,其中有一堆嵌套元素。使用driver.findElement或WebElement.findElement查找内部元素会更快吗?他们每次都必须与浏览器交互,还是后者发生在内存中?
希望这个问题有道理。
干杯。
答案 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的子项。