Cypress 简明教程

Cypress - Assertions

Cypress 拥有多种断言类型,这些类型来自不同的库,例如 Mocha、Chai 等等。断言类型分为显式和隐式。

Implicit Assertions

如果一个断言适用于链中从父命令获取的对象,则称为隐式断言。流行的隐式断言包括 .and/.should。

这些命令不能作为独立命令使用。通常,当我们必须对特定对象执行多个检查时,我们使用它们。

让我们通过下面的示例来说明隐式断言 −

// test suite
describe('Tutorialspoint', function () {
   it('Scenario 1', function (){
      // test step to launch a URL
      cy.visit("https://www.tutorialspoint.com/videotutorials/index.php")
		// assertion to validate count of sub-elements and class attribute value
		cy.get('.toc chapters').find('li').should('have.length',5)
		.and('have.class', 'dropdown')
   });
});

Execution Results

输出如下 −

implicit assertions

输出日志显示了使用 should 和命令获得的两个断言。

Explicit Assertions

如果一个断言适用于对象本身,则称为显式断言。流行的显式断言包括 assert/expect。

用于显式断言的命令如下 −

// test suite
describe('Tutorialspoint', function () {
// it function to identify test
   it('Scenario 1', function (){
      // test step to launch a URL
      cy.visit("https://accounts.google.com")
		// identify element
      cy.get('h1#headingText').find('span').then(function(e){
         const t = e.text()
         // assertion expect
         expect(t).to.contains('Sign')
      })
   })
})

Execution Results

输出如下 −

explicit assertions

输出日志显示了使用 expect 命令直接应用于对象的断言。

Cypress 拥有默认断言,这些断言在内部处理,不需要专门调用。

以下是一些示例 −

  1. cy.visit () − 期望页面以 200 状态码显示内容。

  2. cy.request () − 期望远程服务器可用并发送响应。

  3. cy.contains() - 预计 Web 元素及其属性在 DOM 中可用。

  4. cy.get() - 预计 Web 元素在 DOM 中可用。

  5. .find () − Expects the web element to be available in DOM.

  6. .type () − Expects the web element to turn to a type able state.

  7. .click () − Expects the web element to turn to a clickable state.

  8. .its () − Expects for a web element property on the existing subject.

Other Cypress assertions

其他 Cypress 断言如下:

length

It 检查从先前链接命令中获得的元素的计数。

例如,

cy.get('#txt-fld').should('have.length',5)

value

It 检查 Web 元素是否具有某个值。

例如,

cy.get('#txt-fld').should('have.length',5)

value

It 检查 Web 元素是否具有某个值。

例如,

cy.get(' #txt-fld').should('have.value', 'Cypress')

class

It 检查 Web 元素是否具有某个 class。

例如,

cy.get('#txt-fld'').should('have.class', 'txt')

contain

It 检查 Web 元素是否具有某个文本。

例如,

cy.get('#txt-fld'').should('contain', 'Cypress')

visible

It 检查 Web 元素是否可见。

例如,

cy.get('#txt-fld'').should('be.visible')

exist

It 检查 Web 元素是否在文档对象模型 (DOM) 中可用。

例如,

cy.get('#txt-fld'').should('not.exist');

css

It 检查 Web 元素是否具有某个 CSS 属性。

例如,

cy.get('#txt-fld'').should('have.css', 'display', 'block');