作用

  • 创建一个断言,断言将自动重试,直到它们通过或超时
  • 和 should() 一个用法

语法格式

  1. .and(chainers)
  2. .and(chainers, value)
  3. .and(chainers, method, value)
  4. .and(callbackFn)

参数说明

  • chainers:断言器
  • value:需要断言的值
  • method:需要调用到的方法
  • callbackFn:回调方法,可以满足自己想要断言的内容;且总是返回前一个 cy 命令返回的结果,方法内的 return 是无效的;会一直运行直到里面没有断言

and() 返回的结果

在大多数情况下,.and() 返回与上一个命令相同的结果

  1. cy
  2. .get('nav') // 返回 <nav>
  3. .should('be.visible') // 返回 <nav>
  4. .and('have.class', 'open') // 返回 <nav>


但是,某些 chainer 会改变返回的结果

  1. cy
  2. .get('nav') // 返回 <nav>
  3. .should('be.visible') // 返回 <nav>
  4. .and('have.css', 'font-family') // 返回 'sans-serif'
  5. .and('match', /serif/) // 返回 'sans-serif'

简单的栗子

对同一结果操作的栗子(button 元素)

  1. cy.get('button').should('have.class', 'active').and('not.be.disabled')

chainer 改变返回结果的栗子

html 代码

  1. <li>
  2. <a href="users/123/edit">Edit User</a>
  3. </li>

cypress 代码

  1. cy
  2. .get('a')
  3. .should('contain', 'Edit User') // 返回的是 <a>
  4. .and('have.attr', 'href') // 返回的是 href 的值
  5. .and('match', /users/) // 返回的是 href 的值
  6. .and('not.include', '#') // 返回的是 href 的值

method + value 参数的栗子

断言 href 属性值是否等于 /users

  1. cy
  2. .get('a')
  3. .should('have.class', 'active')
  4. .and('have.attr', 'href', '/users')

https://www.cnblogs.com/poloyy/p/13678233.html