Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何正确使用'XPath'定位符,例如'parent'、'child'、兄弟'?_Html_Xpath - Fatal编程技术网

Html 如何正确使用'XPath'定位符,例如'parent'、'child'、兄弟'?

Html 如何正确使用'XPath'定位符,例如'parent'、'child'、兄弟'?,html,xpath,Html,Xpath,我有一些表格: <div class="form_item--2c8WB"> <label> <span class="label--2VxxL required--2nkmI"> "Text" ::after </span> <br> <input type="password" name="newPass

我有一些表格:

<div class="form_item--2c8WB">
    <label>
        <span class="label--2VxxL required--2nkmI">
            "Text"
            ::after
        </span> 
        <br> 
        <input type="password" name="newPasswordRepeat" autocomplete="new-password" 
               aria-invalid="true" aria-required="true" 
               aria-errormessage="vee_Text2">
    </label> 
    <div class="errors--qVgtm">
        <div>Text3</div>
    </div>
</div>
路径是有效的,但还有很长的路要走,我想使用
follow sibling
命令。但我不能那样做

例如,我尝试使用
父项::
路径:

//input[@name='newPasswordRepeat']/parent::
//input[@name='newPasswordRepeat']::parent::
//input[@name='newPasswordRepeat']::parent
//input[@name='newPasswordRepeat']/parent
//input[@name='newPasswordRepeat']/::parent
这个订单上没有人不工作,只有

//input[@name='newPasswordRepeat']/..
我也不能使用
跟随兄弟姐妹
,但在这种情况下,不存在另一种方式(

  • 如何正确使用
    XPath
    定位器,例如
    父项
    子项
    、兄弟项`

始终是轴::节点测试(比较)

比如说

  • parent::div
    选择父节点如果它是
    (这是节点测试)
  • 祖先::div
    选择属于
    s的所有(!)祖先节点
  • following sibling::div
    选择
    s的所有(!)following sibling
大多数情况下,不能保证只选择一个节点。因此,使用某种
[谓词]
来缩小选择范围以防止误报是明智的-例如,我们可以验证
@class
属性

//input[@name='newPasswordRepeat']/parent::label/following-sibling::div[starts-with(@class, 'errors')]/div

当然<代码>父::标签可以缩短为<代码> .<代码>如果我们不关心父元素是什么元素。

而不是选择一个目标,并且必须遍历父类,首先考虑在父上使用谓词:

//label[input/@name='newPasswordRepeat']/following-sibling::*[1]/div
将选择紧跟在包含目标
输入
元素的
标签之后的元素的
div
子元素。无
父项::
轴是必需的

//label[input/@name='newPasswordRepeat']/following-sibling::*[1]/div