XPath中的.//和//*有什么区别?

TES*_*T-M 21 xml selenium xpath automated-tests selenium-webdriver

通过Firebug找到相对的XPath:它创建了类似的

  1. .//*[@id='Passwd']---------如果我们在开始时不使用dot表示什么呢?

  2. 只需添加//*Xpath - 它突出显示---各种页面元素----------它表示什么?

以下是Gmail密码字段的XPath.有什么意义*

  • .//*[@id='Passwd']

  • //child::input[@type='password']

kjh*_*hes 41

这里有几个不同的关键XPath概念......

绝对vs相对XPath(/vs .)

  • / 引入绝对位置路径,从文档的根开始.
  • . 从上下文节点开始引入相对位置路径.

命名元素vs任何元素(enamevs *)

  • /ename选择一个ename根元素
    • ./ename选择ename当前节点的所有子元素.
  • /* 选择根元素,无论名称如何.
    • ./*或者*选择上下文节点的所有子元素,而不管名称.

后代或自我轴(//*)

  • //ename选择ename文档中的所有元素.
    • .//ename选择ename上下文节点或其下的所有元素.
  • //* 选择文档中的所有元素,无论名称如何.
    • .//* 选择上下文节点处或下方的所有元素,无论名称如何.

考虑到这些概念,以下是您具体问题的答案......

  • .//*[@id='Passwd']表示选择当前上下文节点或其下具有id属性值等于的 所有元素'Passwd'.
  • //child::input[@type='password']可以简化为, //input[@type='password']并且意味着选择input文档中type属性值等于的所有元素'password'.

  • 这个答案应该是被接受的答案,因为在我看来,它是最准确和最完整的. (9认同)

zx4*_*485 27

这些表达式都选择不同的节点集:

.//*[@id='Passwd']

'.' 在开始时意味着当前处理在当前节点处开始.'*'选择从当前节点下降的所有元素节点,@id-attribute-value等于'Passwd'.

如果我们在开始时不使用dot表示什么呢?

然后,您将@id整个文档中选择-attribute-value等于'Passwd'的所有元素节点.

只需在XPath中添加//* - 它突出显示---各种页面元素

这将选择整个文档中的所有元素节点.

下面提到:XPatht的Gmail密码字段是真的有什么意义*?

.//*[@id='Passwd']
Run Code Online (Sandbox Code Playgroud)

这将选择从当前节点下降的所有元素节点,其中@id-attribute-value等于'Passwd'.

//子::输入[@类型= '密码']

这将选择名为所有子元素节点input,其@type-attribute值等于"密码".该child::轴前缀可以被省略,因为它是默认的行为.

w3school.com上解释了选择适当表达式的语法.

Axes(处理中的当前点)在另一个w3school.com页面上进行了解释.

  • 如有疑问,请在下面查看@kjhughes的良好答案。 (2认同)