赛普拉斯期望字符串包含一个元素或另一个元素

时间:2019-06-06 18:35:56

标签: javascript cypress

我正在研究一些赛普拉斯断言,这些断言正在寻找一个包含字符串的值。现在,如果数据显示“ AM”是成功的,但是如果数据显示“ PM”,我也希望它是正确的。

cy.get('.v-list__tile__content')
  .then(($info) => {
    expect($info, 'Delivery Information').to.have.length(3)
    expect($info.eq(0), 'Address').to.contain('Chicago')
    expect($info.eq(1), 'Time').to.contain('AM')
    expect($info.eq(2), 'Year').to.contain('2019')
 })

数据实际上显示的是地址,全职,然后是年份。是否有一个断言可以检查包含两个或多个字符串的内容?也许是oneOf的版本,但包含吗?我正在努力寻找可以满足此类要求的文档。我认为执行条件操作会失败,因为我想断言这是AM / PM。通常情况下,数据会在中午12:00左右返回,因此很遗憾,我无法打出该数字并在那里声明。

我的JS性能中等,但也许做得到

arr = ["AM", "PM"];
var el = document.getElementByClassName('.v-list-tile__content')[1];
var txt = el.includes(arr);

那么我如何在Cypress中对多个字符串包含进行断言?

1 个答案:

答案 0 :(得分:0)

您可以尝试在for循环中沿这些方向使用某些内容。

let arr;
let element;
arr = ["AM", "PM", "Dog", "Cat", "Bug", "Whatever"]
element = '.v-list-tile__content'

   function checkAgainstArr(arr, element) {

     let i;
     for (i = 0; i < arr.length; i++) { 
       if (cy.get(element).contains(arr[i])) {
         return true;
       } else {
         if (i === arr.length) {
           return false; 
         }
       }
     }
   }

expect(checkAgainstArr).to.be.true;

基本上,它将检查数组的长度(此处为6),然后尝试多次以将元素的文本与数组中的每个项目进行比较。如果找到它,则返回true。然后,您可以调用该函数(带有两个参数,数组和元素)并检查是否真假。