大牛整理,前端自动化测试框架Cypress之基础知识,5G音视频时代还不学NDK开发吗

    • 1.单击事件click
  • 2.悬浮事件hover

  • 3.双加事件dblclick

  • 4.右击事件rightclick

  • 5.聚焦事件focus

  • 6.失焦事件blur

  • 总结案例

  • 七、断言should、expect

    • (一)、should断言
    • 1. dom断言
  • 2. 回调函数

  • (二)、expect断言

    • 1. 断言入参不是dom对象时
  • 2. 断言入参是dom对象时

  • 3.断言对象是 cy.stub() 或 cy.spy()时

  • (三)、assert断言

  • 八、项目常见报错解决方案

一、Cypress目录及环境搭建

===============================================================================

(一)、安装Cypress


  • 在线安装使用npm

npm install cypress --save-dev

  • 离线安装

第一步,官网上下载cpress.zip压缩包 ☟点击下载

第二步,配置系统环境变量

CYPRESS_INSTALL_BINARY 下载并安装的Cypress二进制文件的目标位置

第三步,执行安装命令

CYPRESS_INSTALL_BINARY=2.0.1 npm install cypress@2.0.3

☞官网api

(二)、目录结构


在这里插入图片描述

  • support文件夹中存,指定集合

/**

  • 编写人:

  • 日期:

  • 目的:登录

  • 参数说明:

*/

Cypress.Commands.add(“login”, (userName, password) => {

cy.visit(‘/#/login-page’)

cy.get(“#app > div input”).type(userName)

cy.get(“#secpwd”).type(password)

cy.get(“#app > button”).click()

})

  • specs目录中存放测试案例

describe(‘My First Test’, function() {

before(() => {

// 在全部案例执行之前执行一次

// 浏览器模式访问时,可按照自己的需要设置窗口大小,如 cy.viewport(1920,1100)

// 访问首页

cy.visit(‘http://localhost:2000/#/input-demo’)

})

after(() => {

// 在全部案例执行完成之后执行一次

})

beforeEach(() => {

// 在每一条案例之前执行

})

afterEach(() => {

// 在每一条案例执行完成之后执行

})

it(‘Does not do much!’, function() {

expect(true).to.equal(false)

})

it(‘Gets, types and asserts’, function() {

cy.visit(‘https://example.cypress.io’)

cy.contains(‘type’).click()

// 应该存在一个包含’/commands/actions’的新URL

cy.url().should(‘include’, ‘/commands/actions’)

// 获取一个输入, 输入进去并且验证文本值已经更新了

cy.get(‘.action-email’)

.type(‘fake@email.com’)

.should(‘have.value’, ‘fake@email.com’)

})

})

二、运行案例测试

=======================================================================

  • 配置指令

"test:e2e-gui": "vue-cli-service test:e2e --mode development"

  • 页面操作

在这里插入图片描述

点击需要测试文件如下

在这里插入图片描述

三、Cypress闭包环境变量

==============================================================================

1. describe


describe(’’, () => {

// 各种钩子函数

before(() => {

// 在全部案例执行之前执行一次

})

after(() => {

// 在全部案例执行完成之后执行一次

})

beforeEach(() => {

// 在每一条案例之前执行

})

afterEach(() => {

// 在每一条案例执行完成之后执行

})

it(‘测试表单验证案例’, () => {})

// 只执行该案例

it.only(‘测试表单验证案例’, () => {})

// 忽略该案例

it.skip(‘测试表单验证案例’, () => {})

})

2. 钩子函数里环境变量


  1. 可以访问cy对象

const $cyElement = cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)

  1. 类似jquery可以链式调用

样式选择器连接如是

cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)

.should(‘have.value’, ‘’)

.focus()

.blur()

  1. js基本变量语法

js基本语法api都支持,但稍有不同

const arr = [];

arr.forEach 可以访问

[].forEach 不可以访问

  1. expect asset断言

assert.isOk(‘everything’, ‘everything is ok’)

expect(‘Jane’).to.not.equal(‘Jane’)

  1. Cypress对象

Cypress提供了cy的一切api,另外多了.$()方法用于返回jquery对象

便于操作dom

3. should里环境变量


可以访问Cypress对象

js基本变量语法

const $cyElement = cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)

c y E l e m e n t . s h o u l d ( cyElement.should( cyElement.should(el => {

// 闭包环境里可以访问Cypress是个可以操作dom集合

// Cypress.dom 返回dom的api

// Cypress.$(dom) 返回jquery对象

const isDom = Cypress.dom.isDom($el)

const j q E l = C y p r e s s . jqEl = Cypress. jqEl=Cypress.($el[0])

expect(isDom).to.be.true

})

  • Cypress.$()返回jQuery对象,可以访问jquery 的api

  • Cypress.dom 返回dom的api

  • Cpress.cy返回cy实例,可以类似钩子函数里断言

4. 案例


代码如下:

// https://docs.cypress.io/api/introduction/api.html

describe(‘自动化测试表单验证案例’, () => {

before(() => {

// 在全部案例执行之前执行一次

// 浏览器模式访问时,可按照自己的需要设置窗口大小,如 cy.viewport(1920,1100)

// 访问首页

cy.visit(‘http://localhost:2000/#/input-demo’)

})

after(() => {

// 在全部案例执行完成之后执行一次

})

beforeEach(() => {

// 在每一条案例之前执行

})

afterEach(() => {

// 在每一条案例执行完成之后执行

})

// 案例一、测试表单验证案例

it(‘测试表单验证案例’, () => {

cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)

.should(‘have.value’, ‘’)

.focus()

.blur()

cy.get(‘.demo-ruleForm .el-form-item__error’)

.should(‘contain’, ‘请输入活动名称’)

cy.get(‘.demo-ruleForm > .el-form-item:first-child input’).type(‘测试数据’)

.blur()

cy.get(‘.demo-ruleForm .el-form-item__error’)

.should(‘not.be.visible’)

cy.get(‘.demo-ruleForm > .el-form-item:first-child input’).type(‘测试数据测试数据’)

.blur()

cy.get(‘.demo-ruleForm .el-form-item__error’)

.should(‘contain’, ‘长度在 3 到 5 个字符’)

})

// 案例二、测试一些闭包环境变量及api

it(‘测试表单验证案例’, () => {

// This is fine, jQuery returns the element synchronously.

// const $jqElement = $(‘.demo-ruleForm > .el-form-item:first-child input’)

// This will not work! Cypress does not return the element synchronously.

const $cyElement = cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)

// cy操作类型jquery传入selector选择器,但不可以直接操作dom

// 类似jquery可以链式调用

// js基本变量语法

// 但稍有不同

const arr = [];

// arr.forEach 可以访问

// [].forEach 不可以访问

c y E l e m e n t . s h o u l d ( cyElement.should( cyElement.should(el => {

// 闭包环境里可以访问Cypress是个可以操作dom集合

// Cypress.dom 返回dom的api

// Cypress.$(dom) 返回jquery对象

const isDom = Cypress.dom.isDom($el)

const j q E l = C y p r e s s . jqEl = Cypress. jqEl=Cypress.($el[0])

expect(isDom).to.be.true

})

})

})

四、获取dom元素

========================================================================

1.get


用法一、选择器定位

cy.get(selector)

用法二、以别名定位

cy.get(alias)

匹配多个元素时,返回多个对象

2.find


cy.get(selector).find(selector1)

定位方法,用来在 DOM 树中搜索已被定位到的元素的后代,例如get选中的后代元素

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

ip1024c (备注前端)**
[外链图片转存中…(img-mw3assBH-1712513264948)]

跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-6jqclWIG-1712513264948)]

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值