什么是赛普拉斯别名?
Cypress别名是一个具有多种用途的重要组件。它们列在下面-
共享上下文
我们必须使用.as()给我们必须分享的东西取别名。为了给对象和基元设置别名,使用了Mocha上下文对象。别名对象可以通过-this.*访问。
默认情况下,Mocha共享适用于测试的所有钩子的上下文,并且在执行测试后刷新别名属性。
describe('element', () => {
beforeEach(() => {
cy.wrap('eleone').as('x')
})
context('subelement', () => {
beforeEach(() => {
cy.wrap('eletwo').as('y')
})
it('aliases properties', function () {
expect(this.x).to.eq(' eleone ')
expect(this.y).to.eq(' eleone ')
})
})
})
})我们可以通过共享上下文来处理设备。我们也可以使用(异步命令)在@符号的帮助下访问别名(而不是使用this.*(同步命令)。cy.get()
beforeEach(() => {
//别名装置
cy.fixture('users.json').as('u'})
it('scenario', function () {
//'@'处理别名
cy.get('@u').then((u) => {
//访问元素参数
const i = u[0]
//verification
cy.get('header').should('contain', u.name)
})
})元素
别名可以与DOM元素一起使用,以后可以重用。在下面的示例中,默认情况下,赛普拉斯引用作为别名cols获得的td集合。要使用相同的列,我们必须使用命令。cy.get()
//tr中的别名td
cy.get('tr').find('td').as('cols')
cy.get('@cols').first().click()正如我们在@in中使用的那样,赛普拉斯搜索当前别名(cols)并生成其引用。cy.get()
路线
别名可以与路由一起使用。它确保应用程序已发出请求,等待来自服务器的响应并访问请求以进行验证。
cy.intercept('POST', '/users', { id: 54 }).as('u')
cy.get('#btn').click()
cy.wait('@u').then(({ request }) => {
//assertion
expect(request.body).to.have.property('name', 'User')
})
cy.contains('User added')要求
别名可以用于请求。我们可以给请求取别名,然后再使用它的属性。
cy.request('https://jsonplaceholder.cypress.io/comments').as('c')
//其他实现(如果有)
cy.get('@c').should((response) => {
if (response.status === 404) {
//断言
expect(response).to.have.property('duration')
} else {
//做别的事
}
})
})