【问题标题】:Cypress expect string to contain one element or another element赛普拉斯期望字符串包含一个元素或另一个元素
【发布时间】:2019-06-06 18:35:56
【问题描述】:

我正在处理一些赛普拉斯断言,这些断言正在查看包含字符串的值。现在如果数据显示“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 中对多个字符串的 contains 进行断言?

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    您可以尝试在 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。然后,您可以调用该函数(带有两个参数,数组和元素)并检查真/假。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 2021-09-09
      • 2022-01-07
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      相关资源
      最近更新 更多