如何使用赛普拉斯获得同一班级的2div

时间:2019-07-25 13:51:28

标签: cypress

我有一个聊天机器人应用程序,想要与Cypress进行测试。我正在研究机器人是否正确响应客户端的情况。因此,单击后检查,我应该得到一个具有 bot-message 类的div。

cy.get('.bot-message').should('have.text','I want to send invoice to my email')
CypressError: Timed out retrying: expected
[ <div.bot-message>, 3 more... ] to have text 
I want to send invoice to my email. , but the text was 
I want to see my profile.I want to see my invoices.
I want to send invoice to my email

这里的问题是,赛普拉斯将所有div都归入名为 bot-message 的类中。

所以我想做的就是说获得同一个班级的第3个div。如果不是这种情况,那么我认为我应该为每个机器人消息div赋予数据属性

2 个答案:

答案 0 :(得分:1)

使用eq在元素数组中的特定索引处获取DOM元素。

来自API docs

  

此命令的查询行为与.eq()在jQuery中的工作方式完全匹配。其行为也类似于CSS伪类:nth-​​child()选择器。

cy.get('.bot-message')
  .eq(1) // to get 2nd element. array index (counting) starts from 0
  .should('have.text','I want to send invoice to my email');

答案 1 :(得分:0)

contains呢?

cy.get('.bot-message').contains('I want to send invoice to my email')