如何在赛普拉斯中比较阵列?

时间:2019-09-26 05:52:18

标签: cypress

我想将数组中的数据与使用cypress中的.each从类检索的数据进行比较吗?

我使用下面的代码尝试使用下面的代码遍历FileType数组。

const Filetype = ['Access', 'Excel', 'Text/CSV','PDF','JSON','dsdsd'];
const te = cy.wrap($bodyFind).find('.data-sourcename').should('have.length',6).each(($li) => { cy.log($li.text()); });

te.each(($text)=> {
cy.log("Te" + $text); 
//prints ['Access','Excel','Text/CSV','PDF','JSON','XML'];
});

// Converted FileType Array to Cypress object using cy.wrap command.
const cywrap = cy.wrap(Filetype);
      te.each((e1)=>cywrap.each((e2)=> {
      if(e1 == e2) {
         expect(e1).equals(e2);
       }
     }));

但是e1和e2的值相同。 期望应该失败,并且“ dsdsd”等于“ XML” 而它传递的'dsdsd'等于'dsdsd'

2 个答案:

答案 0 :(得分:1)

您可以在此处使用map

const filetypes = ['Access', 'Excel', 'Text/CSV','PDF','JSON','dsdsd'];
cy.get('.data-sourcename').should(($els) => {
  // map jquery elements to array of their innerText
  const elsText = $els.toArray().map(el => el.innerText)
  expect(elsText).to.deep.eq(filetypes)
})

答案 1 :(得分:0)

我希望现在您必须已经找到解决方案。但是,仍然没有选定的答案,以为我会添加一个。

const Filetype = ['Access', 'Excel', 'Text/CSV','PDF','JSON','dsdsd'];

cy
   .get('whatever element')
   .each(($span, i) => {
        expect($span.text()).to.equal(Filetype[i]);
   });

$span将遍历每个元素,而.text()将获取该元素的文本值。