Html XPath:设置显式属性id会提高测试性能(速度)

Html XPath:设置显式属性id会提高测试性能(速度),html,xml,xpath,junit,Html,Xml,Xpath,Junit,我一直在做一些单元测试,作为测试XML脚本的一部分,我用Xpath定位HTML元素 其他测试人员告诉我,包括显式id(如[@id=“IDName”])将提高性能,因为它将允许应用程序更快地找到元素 这是真的,还是神话 举个例子,下面是我正在处理的几个XPath: 不带ID的XPATH: /html/body/div[2]/div/div/div[3]/div/table/tbody//tr //body[@id= "body"]/div[@id= "wrapper"]/div[@id= "Ma

我一直在做一些单元测试,作为测试XML脚本的一部分,我用Xpath定位HTML元素

其他测试人员告诉我,包括显式id(如
[@id=“IDName”]
)将提高性能,因为它将允许应用程序更快地找到元素

这是真的,还是神话

举个例子,下面是我正在处理的几个XPath:

不带ID的XPATH:

/html/body/div[2]/div/div/div[3]/div/table/tbody//tr
//body[@id= "body"]/div[@id= "wrapper"]/div[@id= "MainContent"]/div[@id="Grid"]/div[@id="DataTableContainer"]/div/table/thead
带ID的XPath:

/html/body/div[2]/div/div/div[3]/div/table/tbody//tr
//body[@id= "body"]/div[@id= "wrapper"]/div[@id= "MainContent"]/div[@id="Grid"]/div[@id="DataTableContainer"]/div/table/thead

Java真的能够比第一个更快地找到第二个元素吗?

这完全取决于您使用的XPath处理器

量一下看

使用id()函数比使用谓词更有可能提供快速访问,但这取决于它是DTD定义的id属性


如果您想确保索引访问,请使用XSLT和key()函数。

您可能需要执行
/html/body[@id=“body”]/…
/
,a.k.a
/genderant或self::node()/
有成本您尝试过测量它吗?@MatthewFarwell我没有。“我不知道这样的工具是否存在。”保罗。谢谢你,保罗。有道理,我们会注意到这一点。