Cypress那些好用的写法

简介: Cypress那些好用的写法

大家好,我是阿萨。之前学习了cypress的最基本的用法。可是有些同学还是反馈不会写cypress,怎么办?

今天就列举一些常见的cypress的写法。


1. 常见单个元素定位方法


 // TagName 是h1
cy.get('h1')
 // css selector 是my-class
cy.get('.my-class')
 // 元素id是my-id
cy.get('#my-id')
 // 输入框的name 是field-name 
cy.get('input[name="field-name"]')
 //通过css selector 找到之后,根据text 去判断。
cy.get('.my-class').contains('text')
 //通过文本去获取元素。根据元素的文本获取元素。
cy.contains('text')


2. 常见定位多个元素方法

// 获取所有列表元素cy.get('li')
/// 通过CSS selector获取苏所有满足条件的元素cy.get('.list-item')
// 通过控件类型以及属性名称获取元素,cy.get('input[name="field-name"]')

3. 操作元素的方法

 // 单击
cy.get('button').click()
// 输入文本
cy.get('input').type('my text')
// 清空文本
cy.get('input').clear()
// 选中复选框的第一个
cy.get('[type="checkbox"]').first().check()
// 选中单选框中的第一个
cy.get('[type="radio"]').check('radio1')
// 取消选中第一个可操作对的元素
cy.get('[type="checkbox"]').not('[disabled]').first().uncheck()
// 选中dropdown中可选元素
cy.get('select[name="optionsList"]').select('my value')
// 滚动到可视区域
cy.get('#my-id').scrollIntoView()

4. 写断言的方法

// 判断列表被选中元素个数是不是3,自动重试cy.get('li.selected').should('have.length', 3)
// 输入框没有被disabled的class cy.get('form').find('input').should('not.have.class', 'disabled')
// 文本框的值是对的cy.get('textarea').should('have.value', 'foo bar baz')
// 元素的文本是期望的cy.get('#user-name').should('have.text', 'Joe Smith')
//元素包含某个文本cy.get('#address').should('include.text', 'Atlanta')
// span 不包含click mecy.get('a').parent('span.help').should('not.contain', 'click me')
// 元素文本没有从“Hello” 开始。cy.get('#greeting')  .invoke('text')  .should('match', /^Hello/)
//正则匹配元素。cy.contains('#a-greeting', /^Hello/)
//元素是否可见cy.get('button').should('be.visible')
//元素是否存在cy.get('#loading').should('not.exist')
 //元素状态是否被选中cy.get(':radio').should('be.checked')
//元素css 中是否包含某个属性cy.get('.completed').should('have.css', 'text-decoration', 'line-through')cy.get('#accordion').should('not.have.css', 'display', 'none')
//校验disabled 属性cy.get('#example-input')  .should('be.disabled')  .invoke('prop', 'disabled', false)
cy.get('#example-input')  .should('be.enabled')  .and('not.be.disabled')
//反向校验  不包含,不可见,cy.get('.todo').should('not.have.class', 'completed')cy.get('#loading').should('not.be.visible')

5. 无需等待,自动重试

不需要等待元素出现,自动重试。直到出现。


如果你正在用Cypress 写E2E的脚本,以上代码,赶快练习起来吧。

相关文章
|
7月前
|
Web App开发 缓存 JSON
35 # 模块的断点调试 require 语法实现过程
35 # 模块的断点调试 require 语法实现过程
26 0
|
6天前
react+typescript装饰器写法报错的解决办法
react+typescript装饰器写法报错的解决办法
24 1
|
7月前
|
JavaScript 前端开发
【前端】解决webstorm执行typescript脚本输出中文乱码问题
【前端】解决webstorm执行typescript脚本输出中文乱码问题
302 0
|
6天前
cypress如何写断言?
cypress如何写断言?
|
6月前
|
编译器
wepy踩坑-未发现相关 sass 编译器配置,请检查wepy.config.js文件
wepy踩坑-未发现相关 sass 编译器配置,请检查wepy.config.js文件
67 0
|
8月前
|
测试技术
创建第一个 Cypress 应用后使用命令行 npx Cypress open 报错的原因分析
大多数测试工具(如 Selenium)通过在浏览器外部运行并通过网络执行远程命令来运行。Cypress 正好相反。 Cypress 在与 Web 应用程序相同的运行循环(run loop)中执行。 Cypress 背后是一个 Node 服务器进程。 Cypress 和 Node 进程彼此不断通信、同步和执行任务。访问这两个部分(也就是对应的前后台操作)使我们能够实时响应 Web 应用程序的事件,同时在浏览器之外执行需要更高权限的任务。
38 0
Cypress 好用的用法
大家好,我是阿萨。之前学习了cypress的最基本的用法。可是有些同学还是反馈不会写cypress,怎么办? 今天就列举一些常见的cypress的写法。
219 0
Cypress如何写断言?
大家好,我是阿萨。之前写post的断言时写过一篇文章。[用Postman 如何设置断言?]文章提到过Postman 用chai 写断言。cypresss 其实也是用chai写断言的。
279 0
|
JavaScript 前端开发 Go
requireJS的基本用法(上)
requireJS的基本用法
130 0
requireJS的基本用法(上)
|
JavaScript 前端开发 C#
requireJS的基本用法(下)
requireJS的基本用法(下)
129 0
requireJS的基本用法(下)