我有像这样的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]错误。我哪里错了?
答案 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"/>