Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom 硒元素位置实现_Dom_Selenium - Fatal编程技术网

Dom 硒元素位置实现

Dom 硒元素位置实现,dom,selenium,Dom,Selenium,这听起来可能是一个相当基本的问题,但我找不到一个正确的答案来回答我的问题。Selenium元素位置实现是如何工作的?例如:-当按ID执行findElement时,seleniumsome引擎或实现是否遍历整个DOM?我想是的 在这种情况下,通过ID的findElement如何比通过Xpath的findElement快。因为如果我提供类似于//input[@id=]的Xpath,则某些引擎或实现将不会遍历整个DOM并直接搜索输入元素,从而导致更快的搜索。Xpath和id等所有BY的实现都不同,这取

这听起来可能是一个相当基本的问题,但我找不到一个正确的答案来回答我的问题。Selenium元素位置实现是如何工作的?例如:-当按ID执行findElement时,seleniumsome引擎或实现是否遍历整个DOM?我想是的


在这种情况下,通过ID的findElement如何比通过Xpath的findElement快。因为如果我提供类似于//input[@id=]的Xpath,则某些引擎或实现将不会遍历整个DOM并直接搜索输入元素,从而导致更快的搜索。

Xpath和id等所有BY的实现都不同,这取决于您运行的浏览器,某些浏览器运行某些BY的速度比其他浏览器快,因为当其他浏览器需要selenium伪造实现以使其工作时,它们本机支持通过这种方式进行搜索。这方面的一个例子是xpath,如果我没记错的话,它不是在IE中本机实现的,因此使用xpath要比id慢得多。

WebDriver对浏览器的底层Javascript实现进行了密切的建模

例如,根据W3C WebDriver草案,ID定位符在功能上应等同于javascript document.getElementById调用

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

参考文献和进一步阅读:


在google.com上,通过搜索按钮的ID和Xpath来测量查找删除的时间。正如预期的那样,Xpath花费的时间更少;线程5000;长启动时间=System.currentTimeMillis;WebElement btnSearch=driver.findElementBy.idgbqfba;long estimatedTime=System.currentTimeMillis-startTime;System.out.PrintlEstimatedTime;startTime=System.currentTimeMillis;btnSearch=driver.findElementBy.xpath//button[@id='gbqfba'];estimatedTime=System.currentTimeMillis-startTime;System.out.PrintlEstimatedTime;谢谢你们两位的回答。我上面发布的代码实际上是在Firefox上测试的。我现在试图找出各种浏览器实现对本地位置策略的支持。如果你之前有任何关于这方面的信息,请发布。