【问题标题】:Asserting a DOM element if it has a specific text如果 DOM 元素具有特定文本,则断言它
【发布时间】:2022-01-14 14:52:05
【问题描述】:

我从 Cypress 开始,我正在尝试使用以下文本选择一个元素:

用户名丢失

我的代码是:

cy.get('[data-id="error"]').should('have.text', 'is missing')

有没有一种方法可以让我只使用字符串的特定部分(在这种情况下,“缺失”)并且仍然能够使用.should() 断言?我希望仅使用字符串的特定部分来传递断言。

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    您可以使用包含关键字来查找包含子字符串的字符串

    应该直接执行断言

    cy.get('[data-id="error"]').should('contain', 'is missing')
    

    或仅获取包含带有 contains 的文本的元素

    cy.get('[data-id="error"]').contains('is missing')
    

    他们对其执行所需的断言

    【讨论】:

    • 请注意 containsshould 不同...它返回一个元素,不检查它是否存在...有点不同,您可以阅读更多关于它在这里:stackoverflow.com/questions/50042670/…
    • 返回一个元素,不检查它是否存在没有任何意义。
    【解决方案2】:

    您可以将正则表达式与match 一起使用,而不是have.text

    例如文本应该包含test:

    cy.get('[data-id="error"]').should('match', /test/)
    

    或者干脆

    cy.get('[data-id="error"]').should('contain', 'test')
    

    【讨论】:

      【解决方案3】:

      如果你想用should 断言部分文本,那么你可以使用include.text

      cy.get('[data-id="error"]').should('include.text', 'is missing')
      

      【讨论】:

        猜你喜欢
        • 2019-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-10
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多