将XPath选择器转换为jQuery

时间:2018-09-17 13:10:07

标签: jquery html xpath automated-tests

对于给定的(不完整的)HTML表:

<tr>
    ...
</tr>
<tr>
    <td><input type="radio"></td>
    <td>Red Hot Chili Peppers</td>
    <td></td>
</tr>
<tr>
    <td><input type="radio"></td>
    <td>Britney Spears</td>
    <td></td>
</tr>
<tr>
    ...
</tr>

我使用xpath选择器//td[contains(., 'Red Hot Chili Peppers')]//preceding-sibling::td//input单击单选按钮。

问题是我正在测试的页面上xpath有时会不稳定。我希望切换到jQuery。

如何在jQuery中做到这一点?

3 个答案:

答案 0 :(得分:2)

与之等效的jQuery将使用:containsprev()find(),如下所示:

$('td:contains("Red Hot Chili Peppers")').prev('td').find('input')

$('td:contains("Red Hot Chili Peppers")').prev('td').find('input').prop('checked', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td><input type="radio"></td>
    <td>Red Hot Chili Peppers</td>
    <td></td>
  </tr>
  <tr>
    <td><input type="radio"></td>
    <td>Britney Spears</td>
    <td></td>
  </tr>
</table>

答案 1 :(得分:1)

是的,你可以那样做 检查此https://api.jquery.com/contains-selector/

供您的代码使用

$('td:contains("Red Hot Chili Peppers")').prev('td').find('input');

我建议使用jQuery,因为我在其之上构建了许多库。您将轻松找到所需的东西。

答案 2 :(得分:1)

preceding-sibling应该与 all 个前面的兄弟姐妹匹配,最合适的jQuery等效项是prevAll

$("td:contains('Red Hot Chili Peppers')")
  .prevAll("td")
  .find("input")