【问题标题】:Cypress conditional assertions赛普拉斯条件断言
【发布时间】:2021-12-22 20:50:44
【问题描述】:

我有一张像这样的桌子

1       /   2
abc     /    abc
abc     /    bca
abc     /    cda

现在我的代码是这样的

cy.get('[role="row"]').each(($el) => {

            cy.get($el).children()
            .should('contain', 'abc')
          })

但是如何检查第二列是否包含(abc,bca,cda)之一 html 长得像地狱,但在中间它有类似 aria-label = "abc" 的东西 正则表达式是好的解决方案吗?我不擅长这个,你能告诉我它应该是什么样子(开始时有很多 attr,中间有 aria-label = "abc" 和最后有一些属性)?还是有更好的解决方案? 我不太了解 js,下面的代码中可能有问题,因为第一个条件始终为真,它不应该

cy.get($el).then(($try) => {
              if ($try.html('aria-label' == "abc")) {
                cy.log('it contains abc')}
              else if ($try.html('aria-label' == "bca")) {
                cy.log('it contains bca')}
              else if ($try.html('aria-label' == "bca")) {
                cy.log('it contains cda')}
              
              else{
                cy.log("DONT WORK")
              }
          })
                  }

【问题讨论】:

  • 请为您的表格添加html。
  • 对不起,我不能,因为这不是我的私人项目。

标签: javascript cypress assertion


【解决方案1】:

$try.html().includes('xxx') 成功了。

【讨论】:

    【解决方案2】:

    这是假设,因为我不知道 html 的样子。一种方法是使用expect(2).to.be.oneOf([1,2,3])。我假设您正在验证属性 aria-label

    的值
    cy.get('[role="row"]').each(($el) => {
      expect($el.attr('aria-label').trim()).to.be.oneOf(['abc', 'bca', 'cda'])
    })
    

    如果您正在检查可以使用的元素的 innerText:

    cy.get('[role="row"]').each(($el) => {
      expect($el.text().trim()).to.be.oneOf(['abc', 'bca', 'cda'])
    })
    

    【讨论】:

    • 我会试一试的。给您带来的不便,谢谢,抱歉
    猜你喜欢
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 2022-07-11
    相关资源
    最近更新 更多