【问题标题】:How do you make a conditional test if an element exists in Cypress?如果赛普拉斯中存在元素,您如何进行条件测试?
【发布时间】:2022-10-24 06:57:06
【问题描述】:

网上有很多关于测试元素是否存在的内容,但我找不到任何对我的情况有帮助的真正具体的东西。

对于上下文,我正在开发一个包含某些元素的网站(例如待办事项列表)。 我想编写一个名为editItem 的方法/函数,它在搜索栏中过滤itemName,然后单击过滤后的项目。

问题是,如果由于某种原因搜索栏中已经有某些内容,我无法使用函数.clear() 清除搜索栏中的文本。所以我试图解决这个问题,现在我使用内置的“x”按钮来清除点击时的搜索栏。

这里的问题是我需要实现一个 if-Condition 来检查是否显示了“x”按钮,但我不知道如何实现它。

在伪代码中:

if (searchbar.exists) searchbar.click()

【问题讨论】:

    标签: conditional-statements cypress cypress-conditional-testing


    【解决方案1】:

    使用https://github.com/bahmutov/cypress-if 这种测试变得非常容易。

    按钮示例(取决于按钮是隐藏还是从 DOM 中删除)

    cy.contains('button', 'x')
      .if(':visible')
      .click()
    
    // or
    
    cy.contains('button', 'x')
      .if('exists')
      .click()
    

    然而

    最好还是知道测试时页面的状态,否则最终可能会得到假阳性结果。

    始终在.if() 命令之前测试该命令,以确保它确实有效。

    【讨论】:

    • 首先感谢您的回答,但这并不是我真正想要的。我需要一个 if 语句。如果(按钮存在)然后单击它。然后其余的代码应该运行。
    • if() 命令是在赛普拉斯链中执行此操作的方法,它将完全按照您的描述进行。
    • 哦,哇,好吧,我什至没有看到它。但是有没有办法在不安装任何外部的情况下做到这一点?
    猜你喜欢
    • 2022-01-25
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2018-11-11
    • 2021-06-13
    • 2021-03-24
    • 2020-09-20
    相关资源
    最近更新 更多