- Cypress教程
- Cypress - 主页
- Cypress - 简介
- Cypress - 架构和环境设置
- Cypress - 测试运行者
- Cypress - 构建第一个测试
- Cypress - 支持的浏览器
- Cypress - 基本命令
- Cypress - 变量
- Cypress - 别名
- Cypress - 定位器
- Cypress - 断言
- Cypress - 文本验证
- Cypress - 异步Behave
- Cypress - 使用 XHR
- Cypress - jQuery
- Cypress - 复选框
- Cypress - 标签
- Cypress - 下拉菜单
- Cypress - 警报
- Cypress - 子窗口
- Cypress - 隐藏元素
- Cypress - 框架
- Cypress - 网络表
- Cypress - 鼠标操作
- Cypress - cookie
- Cypress - 获取和发布
- Cypress - 文件上传
- Cypress - 数据驱动测试
- Cypress - 提示弹窗
- Cypress - 仪表板
- Cypress - 屏幕截图和视频
- Cypress - 调试
- Cypress - 自定义命令
- Cypress - 装置
- Cypress - 环境变量
- Cypress - 挂钩
- Cypress - JSON 文件的配置
- Cypress - 报告
- Cypress - 插件
- Cypress - GitHub
- Cypress有用资源
- Cypress - 快速指南
- Cypress - 有用的资源
- Cypress - 讨论
Cypress - 别名
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 ') }) }) }) })
我们可以通过共享上下文来处理固定装置。我们还可以使用 cy.get(),这是一个异步命令,借助 @ 符号来访问别名(而不是使用 this.*),这是一个同步命令。
beforeEach(() => { // alias fixtures cy.fixture('users.json').as('u') }) it('scenario', function () { // '@' to handle aliases cy.get('@u').then((u) => { // access element argument const i = u[0] //verification cy.get('header').should('contain', u.name) }) })
元素
别名可以与文档对象模型 (DOM) 元素一起使用,并在以后重用。在下面的示例中,默认情况下,Cypress 会引用作为别名 cols 获得的 td 集合。要使用相同的列,我们必须使用 cy.get() 命令。
// alias td in tr cy.get('tr').find('td').as('cols') cy.get('@cols').first().click()
当我们在 cy.get() 中使用 @ 时,Cypress 会搜索当前别名 (cols) 并生成其引用。
路线
别名可以与路由一起使用。它确保应用程序已发出请求。然后,它等待服务器的响应并访问请求以进行验证。
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') // other implementations if any cy.get('@c').should((response) => { if (response.status === 404) { // assertion expect(response).to.have.property('duration') } else { // do something else } }) })