如何处理很长的XPATH,对此是否有其他选择

问题描述 投票:0回答:2

强调文本

// div [@ class ='preheader'] //以下兄弟姐妹:: table / tbody / tr [7] / td / table [1] / tbody / tr / td / table / tbody / tr / td /表/ tbody / tr / td / table / tbody / tr / td / table / tbody / tr [4] / td / table / tbody / tr / td [1] / table / tbody / tr / td / table / tbody / tr / td / table / tbody / tr / td

java xpath webdriver selenium-chromedriver service-locator
2个回答
0
投票
[是,如果目标元素的整个继承关系不重要,则可以通过descendent-or-self轴(//)或元素通配符*轻松删除它;两者都可以与谓词组合,当然:

这里有一些例子;您可以选择通过...

    id属性值://td[@id="wantedId"]
  • 字符串值://td[.="targeted text"]
  • 相邻文字://td[preceding-sibling::td[1]="targeted label"]
  • 部分遗产://div[@id="d1"]/table[@id='t1']//tr[2]/td[1]
  • 但是,正如您所看到的,确切地如何缩短取决于目标节点的上下文以及该上下文在文档实例之间如何变化。

  • 0
    投票
    没有更短的XPath表达式恰好与此等效。

    [较短的XPath在某些文档上可能会得到相同的结果,但是没有XPath在每个可能的文档中都可以得到相同的结果。

    [如果您仅关注一个文档,那么类似(//*)[872]的路径可能会为您提供正确的元素。但是通常,使用XPath的全部目的是找到一个表达式,如果文档略有不同,该表达式仍然可以使用。为此,有必要知道要查询的文档类的结构。的确是查询的

    intent。

    © www.soinside.com 2019 - 2024. All rights reserved.