需要帮助找到标签旁边的输入字段的xpath

Eni*_*ihr 2 selenium xpath

我有这样的dom结构

<tr class="">
<td class="labelCol requiredInput">
    <label for="name_lastacc2" class="">
        <span class="requiredMark">*</span>
    Last Name</label>
</td>
<td class="dataCol col02">
    <div class="requiredInput">
        <div class="requiredBlock"></div>
        <input id="name_lastacc2" maxlength="80" name="name_lastacc2" size="20" tabindex="3" type="text"></div>
    </td>
    <td class="labelCol">
        <label for="00NG0000008Rybp">Business Ext.</label>
    </td>
    <td class="dataCol">
        <input id="00NG0000008Rybp" maxlength="10" name="00NG0000008Rybp" size="20" tabindex="22" type="text"></td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

我试图找到其标签旁边的输入框.

例如:

姓: ________________

我尝试过使用xpath查询

//label[contains(text(),'Last Name']/../following-sibling::*/div/input[@type='text'] 
Run Code Online (Sandbox Code Playgroud)

但我收到[INVALID XPATH EXPRESSION]错误.我哪里错了?

Mat*_*ler 9

您的路径表达式缺少结束括号contains().

//label[contains(text(),'Last Name')]/../following-sibling::*/div/input[@type='text']
Run Code Online (Sandbox Code Playgroud)

但话虽如此,我认为你的路径表达现在并不正确.您的表达式将匹配父项的任何后续兄弟label[contains(text(),'Last Name')].你想要它找到的是input紧随其后的元素.

原始表达式只找到一个input元素的唯一原因是第二个嵌套在另一个元素中div.但我认为你不应该依赖它.

相反,尝试:

//label[contains(.,'Last Name')]/following::input[1]
Run Code Online (Sandbox Code Playgroud)

然后,结果是

<input id="name_lastacc2" maxlength="80" name="name_lastacc2" size="20" tabindex="3" type="text"/>
Run Code Online (Sandbox Code Playgroud)

  • 啊废话!我已经坐了一个小时了。我多么愚蠢。谢谢 ! (2认同)