我想跳过一个基于If Else语句的测试用例.我分享了下面的代码,但尽管它找不到元素rather than skipping,it's failing,但测试用例随后继续进行以下测试.你对如何实现 skip 有什么建议吗?

提前谢谢!

it('verifies the release carousel', function () {
      cy.get("body").then($body => {
        //Checks whether release carousel is displayed and acts accordingly
        if ($body.find('[data-cy="release-heading"]').length > 0) {
          loginPage.releaseHeader()
                    .should('be.visible');

          loginPage.releaseImage()
                   .should('be.visible');

          loginPage.releaseTitle()
                   .should('be.visible');
        } else {
          this.skip()
      }})
    })

Note:我也判断了这个主题Skipping a test in Cypress conditionally,并try 编辑1T答案中提到的代码,但无法实现:(

我也问了ChatGPT,它建议使用Cypress.runner.stop();,但这会停止整个测试.

enter image description here

推荐答案

linked answer是一个很好的 Select ,但情况有点复杂.使用相同的模式,但使用控制台判断您的条件语句.

我会将可见性测试添加到if()语句中,因为目前您只有existence条件.

it('verifies the release carousel', function () {

  //Checks whether release carousel is displayed
  const releaseHeadingVisible = Cypress.$('body')
    .find('[data-cy="release-heading"].is(":visible")').length > 0;

  console.log(releaseHeadingVisible)      // check and adjust condition

  if (!releaseHeadingVisible) {
    this.skip()
  }

  loginPage.releaseHeader().should('be.visible');
  loginPage.releaseImage().should('be.visible');
  loginPage.releaseTitle().should('be.visible');
})

Javascript相关问答推荐

如何解决(不忽略)reaction详尽的linter规则,而不会在获取数据时导致无限的reender循环

单击按钮后未清除 Select

为什么JavaScript双边字符串文字插值不是二次的?

一次仅播放一个音频

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

我不知道为什么我的JavaScript没有验证我的表单

如何访问Json返回的ASP.NET Core 6中的导航图像属性

按下同意按钮与 puppeteer 师

为什么promise对js中的错误有一个奇怪的优先级?

查找最长的子序列-无法重置数组

使用GraphQL查询Uniswap的ETH价格

Web Crypto API解密失败,RSA-OAEP

在Matter.js中添加从点A到另一个约束的约束

TypeError:无法读取未定义的属性(正在读取';宽度';)

搜索功能不是在分页的每一页上进行搜索

使用插件构建包含chart.js提供程序的Angular 库?

为什么在函数中添加粒子的速率大于删除粒子的速率?

如何找到带有特定文本和测试ID的div?

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时

我怎样才能点击一个元素,并获得一个与 puppeteer 师导航页面的URL?