// 在全部案例执行之前执行一次
})
after(() => {
// 在全部案例执行完成之后执行一次
})
beforeEach(() => {
// 在每一条案例之前执行
})
afterEach(() => {
// 在每一条案例执行完成之后执行
})
it(‘测试表单验证案例’, () => {})
// 只执行该案例
it.only(‘测试表单验证案例’, () => {})
// 忽略该案例
it.skip(‘测试表单验证案例’, () => {})
})
- 可以访问cy对象
const $cyElement = cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)
- 类似jquery可以链式调用
cy.get(‘.demo-ruleForm > .el-form-item:first-child input’)
.should(‘have.value’, ‘’)
.focus()
.blur()
- js基本变量语法
js基本语法api都支持,但稍有不同
const arr = [];
arr.forEach 可以访问
[].forEach 不可以访问
- expect asset断言
assert.isOk(‘everything’, ‘everything is ok’)
expect(‘Jane’).to.not.equal(‘Jane’)
- Cypress对象
Cypress提供了cy的一切api,另外多了.$()方法用于返回jquery对象
便于操作dom
可以访问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实例,可以类似钩子函数里断言
代码如下:
// 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
})
})
})
========================================================================
用法一、选择器定位
cy.get(selector)
用法二、以别名定位
cy.get(alias)
匹配多个元素时,返回多个对象
cy.get(selector).find(selector1)
定位方法,用来在 DOM 树中搜索已被定位到的元素的后代,例如get选中的后代元素
// 错误写法
cy.find(selector)
会报错,需要一个父类选中元素
两种用法,如下:
.contains(content)
.contains(selector, content)
支持cy.contains,及cy.get().contains
重点:只会返回第一个匹配到的元素
类似jquery的first方法
类似jquery的eq方法,eq(index) index从0开始获取第几个元素子元素
=================================================================================
1. cy.$$(selector,context) ☆☆☆
cy.$$(‘input’) // 返回input元素的jquery对象
cy.$$(‘input’).value() // 可用用jquery的api
cy.$$(‘input’).text() // 例子,等等
cy对象挂载在window下,故环境变量this指向window时可用访问,一般顶级作用域指向这个window,可用通过箭头函数将内部作用域指向window,访问cy
Cypress.$(‘input’) // 返回input元素的jquery对象
Cypress.$(‘input’).value() // 可用用jquery的api
Cypress.$(‘input’).text() // 例子,等等
Cypress对象挂载在window下,故环境变量this指向window时可用访问,一般顶级作用域指向这个window,可用通过箭头函数将内部作用域指向window,访问Cypresss
-
形参$e为jquery对象
-
Cpress.$ 返回jquery对象
利用jquery的api可以获取元素的dom属性
cy.get(‘.dom-demo’)
.should($e => {
// $e jquery对象
// Cpress.$ 返回jquery对象
const text = $e.find(‘.item’).first().text();
const text1 = Cypress. ( ( (e[0]).find(‘.item’).first().text();
console.log(text === text1) // true
})
对input输入框的输入
cy.get(‘input’).type(‘text’)
cy.get(‘input’).type(‘2222’)
=====================================================================
// 点击事件
cy.get(‘#btn’).click()
版本不支持该事件,有代替方案如下:
cy.get(‘#btn’)
.trigger(‘mouserover’)
.wait(3000)
.rightclick()
.wait(3000)
.should(‘have.css’, ‘color’, ‘rgb(255, 255, 255)’)
// 双击事件
cy.get(‘#btn’).dblclick()
// 右击事件
cy.get(‘#btn’).rightclick()
// 聚焦事件
cy.get(‘input’).focus()
// 失焦事件
cy.get(‘input’).blur()
// 案例三、测试鼠标一些事件
it(‘测试鼠标一些事件’, () => {
// 点击事件
cy.get(‘#btn’)
.click()
// 双击事件
cy.get(‘#btn’)
.dblclick()
// 右击事件
cy.get(‘#btn’)
.rightclick()
// 悬浮事件
// cy.get(‘#btn’).hover()
// 该事件本版本不支持
// 代替方案如下:
cy.get(‘#btn’)
.trigger(‘mouserover’)
.wait(3000)
.rightclick()
.wait(3000)
.should(‘have.css’, ‘color’, ‘rgb(255, 255, 255)’)
// 聚焦事件
cy.get(‘#int’)
.focus()
// 失焦事件
cy.get(‘#int’)
.blur()
})
================================================================================
每条案例都需要加断言,及验证点,否则是一条不完整的案例
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-kxKW8YUz-1712751078925)]
[外链图片转存中…(img-rDqXqb2L-1712751078926)]
[外链图片转存中…(img-XW8K4hFt-1712751078927)]
[外链图片转存中…(img-th3LYKDa-1712751078927)]
[外链图片转存中…(img-f9WMacss-1712751078928)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-BVzgi0fN-1712751078928)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!