Cypress笔记-连接命令

本文介绍了Cypress测试框架中的几个常用命令:.each()用于遍历数组数据结构;.its()用于获取对象属性值;.invoke()用于调用当前对象的方法;.spread()将数组内容作为单独参数传回;.then()将前一命令结果注入下一命令。
摘要由CSDN通过智能技术生成

.each()

作用

遍历数组数据结构(具有 length 属性的数组或对象)
在这里插入图片描述

cy.get('.connectors-each-ul>li')
  .each(function($el, index, $list){ //遍历每个li元素
    console.log($el, index, $list)
  })

在这里插入图片描述

.its()

作用

获取对象的属性值

示例代码

在这里插入图片描述

cy.get('.connectors-its-ul>li')
  // calls the 'length' property returning that value
  .its('length')
  .should('be.gt', 2)

在这里插入图片描述

.invoke()

作用

To invoke a function on a current subject, use the .invoke() command.
对当前对象调用命令

示例代码

在这里插入图片描述

cy.get('.connectors-div').should('be.hidden') //断言元素是隐藏状态
  // call the jquery method 'show' on the 'div.container' 调用jquery的show方法
  .invoke('show')
  .should('be.visible') //断言元素是可见状态

在这里插入图片描述

.spread()

作用

将数组内容作为单独的参数传回到回调函数
在这里插入图片描述

const arr = ['foo', 'bar', 'baz']

cy.wrap(arr).spread(function(foo, bar, baz){
  expect(foo).to.eq('foo')
  expect(bar).to.eq('bar')
  expect(baz).to.eq('baz')
})

.then()

作用

将上一条命令返回的结果注入到下一个命令中
在 Cypress 中,保存一个值或者引用的最好方式是使用闭包
then() 就是 Cypress 对闭包的一个典型应用
then() 返回的是上一个命令的结果,并将其注入到下一个命令中

示例代码1-调用回调函数

在这里插入图片描述

cy.get('.connectors-list>li').then(function($lis){
  expect($lis).to.have.length(3)
  expect($lis.eq(0)).to.contain('Walk the dog')
  expect($lis.eq(1)).to.contain('Feed the cat')
  expect($lis.eq(2)).to.contain('Write JavaScript')
})

示例代码2-把返回值传递给下一个命令

If the callback function returns a value, it is yielded to the next callback, just like in a Promise callback.

cy.wrap(1)
  .then((num) => {
    expect(num).to.equal(1)

    return 2
  })
  .then((num) => {
    expect(num).to.equal(2)
  })

示例代码3

But unlike a Promise, if undefined is returned, then the original value passed into the .then(cb) is yielded to the next callback.

cy.wrap(1)
  .then((num) => {
    expect(num).to.equal(1)
    // note that nothing is returned from this callback
  })
  .then((num) => {
    // this callback receives the original unchanged value 1
    expect(num).to.equal(1)
  })

示例代码4

If there are Cypress commands in the .then(cb) callback, then the value yielded by the last command will be passed to the next callback.
如果then的回调函数里有cypress命令,上一个命令的返回值会传递给下一个回调函数

cy.wrap(1)
  .then((num) => {
    expect(num).to.equal(1)
    // note how we run a Cypress command
    // the result yielded by this Cypress command
    // will be passed to the second ".then"
    cy.wrap(2)
  })
  .then((num) => {
    // this callback receives the value yielded by "cy.wrap(2)"
    expect(num).to.equal(2)
  })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值