持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
invoke作用
对前一条命令返回的结果进行调用方法
语法格式
.invoke(functionName)
.invoke(options, functionName)
.invoke(functionName, args...)
.invoke(options, functionName, args...)
参数说明
- functionName: 需要调用的方法名
- options: log 和 timeout
- args: 传递给函数的参数,数量没有限制
正确使用的小栗子
// 调用 animate 方法
cy.wrap({ animate: fn }).invoke('animate')
// 找到.modal 元素并调用 show 方法
cy.get('.modal').invoke('show')
栗子
断言函数的返回值
调用函数并传递参数
作为函数的属性被调用
wrap作用
- 返回传递给它的对象
- 返回的是一个 Promise 对象,可以直接接 Cypress 其他命令
- 如果传递给它的就是一个 Promise 对象,则返回它的值
语法格式
cy.wrap(subject)
cy.wrap(subject, options)
subject
需要返回的对象
options
- log: 是否将命令显示到命令日志中,默认 true
- timeout: 命令超时时间
最简单的栗子
// 声明一个整数
cy.wrap(123).should('eq', 123)
// 声明一个字符串
cy.wrap('abc').and('contain', 'a')
声明一个对象的栗子
对象属性值是函数的栗子
页面元素 Element 的栗子
如果想从头学起Cypress,可以看下面的系列文章哦
its作用
获取上一条命令结果的属性值
语法格式
.its(propertyName)
.its(propertyName, options)
参数说明
propertyName: 索引、属性名、要获取的嵌套属性名称
options: log、timeout
命令返回结果
属性值
正确写法
cy.wrap({ width: '50' }).its('width') // 获取宽度属性
cy.window().its('sessionStorage') // 获取 sessionStorage 属性
错误写法
cy.its('window') // 不能链接在 cy 后面
cy.clearCookies().its('length') // clearCookies 并不返回对象
各种栗子
获取字典对象的属性值
cy.wrap({age: 52}).its('age').should('eq', 52) // true
数组对象,根据索引取值
cy.wrap(['polo', 'yy']).its(1).should('eq', 'yy')
获取元素的属性值
cy
.get('ul li')
.its('length')
.should('be.gt',4)
获取字符串对象的属性值
cy
.url()
.its('length')
.should('be.gt', 20)
属性值是函数
const fn = () => {
return 42
}
cy.wrap({getNum: fn}).its('getNum').should('be.a', 'function')
返回的是函数对象本身,而不是 return 的值
获取嵌套属性值
const user = {
contacts: {
work: {
name: 'Kamil'
}
}
}
cy.wrap(user).its('contacts.work.name').should('eq', 'Kamil') // true