使用follow-sibling构造xpath?

时间:2017-11-04 20:13:06

标签: html xpath

我有以下html

<table id="registration">
   <tbody>
      <tr>
         <td class="registration-label"><span class="size13">Password</span>
         </td>
         <td>
         </td>
         <td class="form">
            <input autocomplete="off" class="title wide-input" name="icgdtval" value="" size="50" maxlength="50" type="password"/>
         </td>
      </tr>
      <tr>
         <td class="registration-label"><span class="size13">Email</span></td>
         <td></td>
         <td><input class="title wide-input" name="hkogplva" value="" maxlength="150" size="26" type="text"/></td>
      </tr>
      <tr>
         <td class="registration-label"><span class="size13">Confirm Email</span></td>
         <td></td>
         <td><input class="title wide-input" name="EmailB" value="" size="26" maxlength="150" type="text"/></td>
      </tr>
   </tbody>
</table>

渲染版本如下所示

enter image description here

我正在尝试构建一个xpath,它使用文本框之前的文本来匹配文本框。

例如:构造一个xpath,通过使用Email作为参考,在Email前面找到输入标记。我无法找到文本框本身,因为id或名称是动态生成的。

我构建了这个有效的xpath,但是我在使用文本框之前的文本时失败了

//tr[td][3]/td[contains(@class,'registration-label')]/following-sibling::td[2]

1 个答案:

答案 0 :(得分:1)

您可以尝试使用following代替following-sibling

//td[.="Password"]/following::input
//td[.="Email"]/following::input
//td[.="Confirm Email"]/following::input

或者如果您仍想使用following-sibling

//td[.="Password"]/following-sibling::td/input
//td[.="Email"]/following-sibling::td/input
//td[.="Confirm Email"]/following-sibling::td/input