通过Firebug找到相对的XPath:它创建类似
sort -n -k 1.10,1.23 filename
---------如果我们在开始时不使用dot表示该怎么办?
只需在Xpath中添加.//*[@id='Passwd']
-
它突出了---各种页面元素----------它意味着什么?
以下是Gmail密码字段的XPath。 //*
的重要性是什么?
*
.//*[@id='Passwd']
答案 0 :(得分:30)
这里有几个不同的关键XPath概念......
绝对与相对XPath(/
vs .
)
/
引入绝对位置路径,从文档的根开始。.
引入了一个相对位置路径,从上下文节点开始。 命名元素与任何元素(ename
vs *
)
/ename
选择ename
根元素
./ename
选择当前节点的所有ename
子元素。/*
选择根元素,无论名称如何。
./*
或*
选择上下文节点的所有子元素,无论名称如何。 后代或自我轴(//*
)
//ename
选择文档中的所有ename
元素。
.//ename
选择上下文节点或其下的所有ename
元素。//*
选择文档中的所有元素,无论名称如何。
.//*
选择上下文节点或其下的所有元素,无论名称如何。考虑到这些概念,以下是您具体问题的答案......
.//*[@id='Passwd']
表示选择所有元素
当前上下文节点,其id
属性值等于
'Passwd'
。//child::input[@type='password']
可以简化为
//input[@type='password']
并且意味着选择所有input
元素
在type
属性值等于'password'
的文档中。答案 1 :(得分:20)
这些表达式都选择不同的节点集:
.//* [@ ID ='的passwd']
'。'在开头意味着当前处理从当前节点开始。 ' *'选择从当前节点下降的所有元素节点,@id
- 属性值等于' Passwd'。
如果我们在开始时不使用dot表示该怎么办?
然后,您选择@id
- 属性值等于' Passwd'的所有元素节点。在整个文档中。
只需在XPath中添加// * - 它会突出显示---各种页面元素
这将选择整个文档中的所有元素节点。
下面提到:Gmail密码字段的XPatht是真的有什么意义*?
.//*[@id='Passwd']
这将选择从当前节点下降的所有元素节点@id
- 属性值等于' Passwd'。
//子::输入[@type ='密码']
这将选择名为input
的所有子元素节点@type
- 属性值等于'密码'。可以省略child::
轴前缀,因为它是默认行为。
here at w3school.com解释了选择适当表达式的语法。
并解释了Axes(处理中的当前点)here at another w3school.com page。
答案 2 :(得分:2)
XPath中的点称为“上下文项表达式”。如果在表达式的开头加上一个点,它将使其特定于上下文。换句话说,它将在您通过XPath调用“find元素”方法的节点的上下文中使用id="Passwd"
搜索元素。
*
中的.//*[@id='Passwd']
有助于将任何元素与id='Passwd'
匹配。
答案 3 :(得分:1)