CYPRESS - 不能做出 THEN => IF VISIBLE 声明

Posted

技术标签:

【中文标题】CYPRESS - 不能做出 THEN => IF VISIBLE 声明【英文标题】:CYPRESS - Cant make a THEN => IF VISIBLE statement 【发布时间】:2020-05-27 18:49:14 【问题描述】:

好的,

情况如下:

在我在网站上进行的测试中,它总是有一个表格,但是当该表格没有元素时,它会被隐藏。仅当该表具有可见元素时,我才需要执行操作。如果没有,请继续下一个测试。

所以,例如,如果表是空的,我写这个 --- cy.get('element', timeout: 60000).should('be.visible') --- 测试时间out,这是正确的,因为表是空的,因此不会变得可见。

但是,当然,我需要测试不要超时,我需要在规定的时间过去后,继续进行下一个测试。

所以,我想到了这个:


cy.get('element').then(($table) =>   
    if ($table.is(':visible'))
        cy.log('JUST TESTING')
    
) 

问题是,它总是输入 if 并打印控制台日志 JUST TESTING。这意味着 if visible 条件不起作用。

有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

所以你有两种情况要测试,一种是表格有元素,另一种是表格没有元素。我会将其拆分为两个测试用例并填充/不填充表格,以便它显示或不显示。恕我直言,在一个测试用例中执行此操作并不能证明该表是否正常工作,因为您如何知道您所看到的内容是正确的。您可能会遇到表格应该显示的情况,因为它有内容,但没有,但是您的测试将始终通过,因为它不知道表格的状态应该是什么。所以像......

describe('Testing my table', () => 
  context('table is populated', () => 
  beforeEach 
  // populate the table with data
  
  it('should show the table, () => 
    // Some testing stuff in here to check the table is showing
  );

  context('table is NOT populated', () => 
  beforeEach 
  // Any set up you need for a non-populated table
  
  it('shouldn't show the table, () => 
    // Check we can't see the table
  );

【讨论】:

以上是关于CYPRESS - 不能做出 THEN => IF VISIBLE 声明的主要内容,如果未能解决你的问题,请参考以下文章

如何在cypress Cucumber中编写Given,When,Then等可以使用的通用步骤定义

Cypress博客

Cypress:不可见数组的长度

赛普拉斯,页面内容和变量

Cypress学习16-参数化,数据驱动测试案例

Cypress学习16-参数化,数据驱动测试案例