首页 > 解决方案 > 赛普拉斯:访问列表中的最后一项

问题描述

我在一个简单的 html 文件中有一个列表,只有收到的电子邮件,我想从特定的电子邮件地址访问列表中的最后一封电子邮件。我尝试使用 last(),但它没有用,它只是没有引导我到最后一项,而是到列表中的第一项

cy.contains('test@test5.com').last().click() 

列表中的一项具有以下代码:

<br>
<a href="/Emails/2020-12-03%2016_40_54%20-%20test@test5.com.html">2020-12-03 16_40_54 - test@test5.com.html</a>

标签: javascriptautomationcypress

解决方案


这是赛普拉斯的一个问题,一些命令“产生”许多元素,而一些命令只“产生”一个元素。

您可以检查命令的contains() - Yields部分,该部分只为您提供一个元素,该元素将.first()在列表中。

.contains() 产生它找到的新 DOM 元素。

IMO 文档应该更明确。您可以通过经验来学习它,但可能会浪费大量时间尝试使用看似合法的命令进行破解。

尝试.get()and ,使用返回所有匹配元素.filter()的 jQuery 伪选择器:contains()

cy.get('a')
  .filter(':contains(test@test5.com)')  
  .last()

:contains().get()

cy.get('a:contains(test@test5.com)')
  .last()

推荐阅读