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

时间:2014-11-30 17:46:10

标签: 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>

我正在尝试找到其标签旁边的输入框。

例如:

姓氏:________________

我尝试过使用像

这样的xpath查询
//label[contains(text(),'Last Name']/../following-sibling::*/div/input[@type='text'] 

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

1 个答案:

答案 0 :(得分:9)

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

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

但是那说,我不认为你的路径表达现在是正确的。您的表达式将匹配label[contains(text(),'Last Name')]的父级兄弟之后的任何。您希望它找到的是紧随其后的input元素。

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

相反,请尝试:

//label[contains(.,'Last Name')]/following::input[1]

然后,结果是

<input id="name_lastacc2" maxlength="80" name="name_lastacc2" size="20" tabindex="3" type="text"/>