Selenium Webdriver对象的xpath长度

时间:2012-08-28 14:27:17

标签: selenium webdriver selenium-webdriver xpath

我可以通过像//div[@id='menu-groups-group1']

这样的xpath找到我的对象

这是 -

//div[@id='menu']//div[@class='menu-items-block menu-groups']//div[@id='menu-groups-menu1']

相同的对象但更长的xpath。

对象的xpath长度是否重要?它会影响对象的搜索速度吗?

1 个答案:

答案 0 :(得分:5)

是的,这很重要,是的,它会影响速度。

  • //div[@id='menu-groups-group1']告诉WebDriver中的XPath处理器查找文档中<DIV>属性为id的所有menu-groups-group1元素。然后,根据您正在执行的操作(例如findElement()findElements()),在查找第一个操作后,它可能会也可能不会停止。
  • //div[@id='menu']//div[@class='menu-items-block menu-groups']//div[@id='menu-groups-menu1']告诉WebDriver中的XPath处理器查找文档中<DIV>属性为id的所有menu元素,然后查找所有{{1}嵌入在这些元素中任意深度且<DIV>属性为class的元素,然后找到嵌入内任意深度的所有menu-items-block menu-groups元素那些元素,<DIV>属性为id。然后,根据您正在执行的操作(例如menu-groups-group1'findElement()),在查找第一个操作后,它可能会也可能不会停止。

正如您所看到的,较长的XPath处理起来要复杂得多,并且可能会创建更大的元素集来进行检查。

使用XPath findElements(),甚至使用WebDriver的id('menu-groups-group1'),你会好得多。使用第二种形式的示例的唯一原因是By.id('menu-groups-group1') id不是唯一的。在这种情况下,开发人员应该为自己感到羞耻。