【发布时间】:2015-12-16 00:41:15
【问题描述】:
我有两个 xpath 选择器可以找到完全相同的元素,但我想知道从代码、执行速度、可读性等角度来看哪个更好。
第一个 Xpath:
//*[@id="some_id"]/table/tbody/tr[td[contains(., "Stuff_01")]]//ancestor-or-self::td/input[@value="Stuff_02"]
第二个 Xpath:
//tr[td[@title="Stuff_01"]]//ancestor-or-self::td/input[@value="Stuff_02"]
例如参数是,如果页面的代码将被更改,例如某些"tbody" 将被移动,那么第一个将不起作用,这是真的吗?
那么,哪种代码变体更好,为什么?
我将不胜感激,因为这对工作流程至关重要。
【问题讨论】:
-
也许我的老问题的答案会有所帮助! stackoverflow.com/questions/34092985/…
-
部分是这样,谢谢,但不是全部......
-
我会将其添加为帮助其他用户的答案
-
1 如果正如您所说,这 至关重要,您应该花时间包含目标 HTML 的简化示例和确切的描述您要选择什么,因为 XPath 都可能不是理想的。 2 性能不太重要;先测量。 3 ...特别是如果您在进一步限制选择空间之前使用
@id或其他锚点来磨练缩减的子树。 -
请显示您的 HTML 文档的minimal, complete and verifiable 示例。否则,没有人能比@kjhughes 告诉你更多。 XPath 表达式的有用性在很大程度上取决于您应用它们的文档。 (为了再次强调这一点,我们还需要知道您在寻找什么。)