我可以通过像//div[@id='menu-groups-group1']
这是 -
//div[@id='menu']//div[@class='menu-items-block menu-groups']//div[@id='menu-groups-menu1']
相同的对象但更长的xpath。
对象的xpath长度是否重要?它会影响对象的搜索速度吗?
答案 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不是唯一的。在这种情况下,开发人员应该为自己感到羞耻。