硒元素定位实施

时间:2014-01-01 10:14:47

标签: dom selenium

这听起来像是一个非常基本的问题,但我无法找到问题的正确答案。 Selenium元素位置实现如何工作?例如: - 按ID执行findElement时,selenium(某些引擎或实现)是否遍历整个DOM?我认为确实如此。

在这种情况下,如果ID findElement比Xpath更快findElement。因为如果我提供像//input[@id='']这样的Xpath,那么Selenium(某些引擎或实现)将不会遍历整个DOM并直接搜索输入元素,从而导致更快的搜索。

2 个答案:

答案 0 :(得分:0)

xpath和id等(所有Bys)的实现是不同的,具体取决于您运行的浏览器,某些浏览器比其他浏览器运行速度更快,因为当其他浏览器需要selenium时,它们本身支持通过这种方式进行搜索捏造实施,使其有效。一个例子是xpath,如果我没记错的话,在IE中本身没有实现,所以使用xpath比id慢得多。

答案 1 :(得分:0)

WebDriver密切模拟浏览器的底层Javascript实现。

例如,根据W3C WebDriver草案,ID的定位器应该在功能上等同于javascript document.getElementById()调用。

针对不同浏览器的WebDriver实现应该使用对xpath等位置策略的本机支持。如果本机支持不可用,则可以使用纯JS实现。由于各种浏览器及其原生实现,每种位置策略的性能在浏览器和定位器策略的每个组合中都会有所不同。

参考文献,并进一步阅读:

WebDriver - W3C Editor's Draft - Element Location Strategies

Selenium Webdriver Architecture - Simon Stewart