如何根据另一个元素的文本单击一个元素

How to click an element based on another element's text

给定多行用户table...

<tr>
  <td class="cell--select">
    <input class="choice__input" type="checkbox">
  </td>
  <td>
    <div class="user">
      <ul class="user-info">
        <li class="name">Jane Doe</li>
      </ul>
    </div>
  </td>
</tr><tr>
...

我想 select 具有给定用户名的行,然后单击该行上的复选框。我已经尝试了多种方法来做到这一点,包括 withText and/or parent() and/or find() 等......但没有任何效果。

通常,我会抓取所有 li.name,检查名称是否正确并使用索引来检查正确的复选框,但我也想不出一种方法来完成此操作。

卡住了……想法?

好的,我找到方法了。这比我想要的要脆弱一些,但它确实有效。如果有更好的解决方案,请添加答案!

const checkboxToClick = await Selector('.name')
      .withText('Jane Doe')
      .parent("tr")
      .find(".choice__input");

await t.click(checkboxToClick);

有一种更简单的方法可以实现所需的行为。您可以使用 withText 方法来识别 table 行:

const checkboxToClick = await Selector('tr')
  .withText('Jane Doe')
  .find(".choice__input");

await t.click(checkboxToClick);