我有一个像这样的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] 错误。我哪里出错了?
最佳答案
您的路径表达式缺少 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"/>
关于selenium - 需要帮助查找标签旁边输入字段的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216225/