【问题标题】:Cypress - click hyperlink on row based on value of two cells赛普拉斯 - 根据两个单元格的值单击行上的超链接
【发布时间】:2020-06-22 17:13:22
【问题描述】:

试图让 Cypress 脚本基于两个值单击超链接 - 第一列中的超链接文本和第二列中单元格的值:

<tbody>
  <tr>
    <td><a href="/id/343408">Anything</a></td>
    <td>Casualty</td>
  </tr>
  <tr>
    <td><a href="/id/338494">Declined Prospect</a></td>
    <td>Casualty</td>
  </tr>
  <tr>
    <td><a href="/id/343408">Declined Prospect</a></td>
    <td>Package</td>
  </tr>
  <tr>
    <td><a href="/id/338494">Declined Prospect</a></td>
    <td>Casualty</td>
  </tr>
  <tr>
    <td><a href="/id/338432">Irrelevant</a></td>
    <td>Package</td>
  </tr>
</tbody>

cy.get('a').contains('Declined Prospect').click()

失败,因为具有该值的超链接不止一个。 id 没有用,因为它是动态的。

在上面的示例中,我想在第二列为 Casualty 时点击 Declined Prospect(但行的顺序可能会有所不同,并且第一和第二列中的值列重复 - 但组合只重复一次)。

有什么想法吗?

【问题讨论】:

    标签: cypress e2e-testing


    【解决方案1】:

    我认为这很有用:https://github.com/cypress-io/cypress-xpath

    您可以在 xpath 而不是 css 中创建选择器,并且在 xpath 中您可以按文本搜索树。例如:

    cy.xpath("//text() = 'Declined Prospect'")
    

    ===================================编辑============ ======== 你可以合并几个 xpatch 选择器:它看起来像这样//tr[td='Casualty']/td/a

    Playgroud

    【讨论】:

    • 嗯...找到第一个被拒绝的潜在客户。当第二个单元格是 Casualty 时,我如何单击 Declined Prospect?
    【解决方案2】:

    诀窍是定位&lt;td&gt;Casualty&lt;/td&gt;,然后单击前面的&lt;td&gt;&lt;a&gt;

    有很多方法可以获取同级元素,在这种情况下最简单的是prev()

    cy.contains('td', 'Casualty')  // target the 'marker' element
      .prev()                      // move to the previous sibling
      .click()
    

    从行接近并向内移动

    要在某些单元格中定位具有特定文本组合的行,只需连接文本并使用contains()

    cy.contains('tr', 'Declined Prospect Casualty')  // target unique text within children
    

    这甚至适用于其他单元格的文本与搜索无关的情况,例如

    <tr>
      <td><a href="/id/338494">Declined Prospect</a></td>
      <td>Casualty</td>
      <td>Irrelevent text here</td>
    </tr>
    

    然后你可以沿着 HTML 树往下走,

    cy.contains('tr', 'Declined Prospect Casualty') // target unique text within children
      .find('td a')                                 // descendant of previous subject
      .click()
    

    【讨论】:

    • 不幸的是,在这一列之前的第二列中可能有许多伤亡事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多