首页 > 解决方案 > 赛普拉斯:期望元素包含一些文本

问题描述

我想检查第二个.item元素是否包含一些文本

cy.get('.item').then(($items) => {
  expect($items).to.have.length(2);
  expect($items[1]).to.contain('Published');
});

柏树抛出错误:TypeError: obj.is is not a function

我也试过expect($items[1]).text.to.contain('Published'); 这次错误是TypeError: Cannot read property 'contain' of undefined

标签: cypress

解决方案


由于它没有问题$items,因此您的问题出在您期望的数组中$items[1]。正如赛普拉斯所说,$items[1] 是未定义的,“不是函数”错误是同一个问题,但描述得更复杂:)。所以赛普拉斯找不到第二个元素,因此使用 Array 不起作用。如果你把它改成这样,它可能会通过:

cy.get('.item').then(($items) => {
  expect($items).to.have.length(2);
  expect($items).to.contain('Published');
});

您还可以以完全不同的方式检查特定元素:

cy.get('.item')
  .eq(2)
  .should('contain', 'Published')

这导致检索第二个“项目”并检查它是否包含“已发布”。当然,您可以将 eq() 更改为更高或更低的数字


推荐阅读