如果您对Cypress系列和16-查找页面元素的基本方法感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Cypress系列的各种细节,并对16-查找页面元素的基本方法进行深入的分析,此外还有关于
如果您对Cypress系列和16- 查找页面元素的基本方法感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Cypress系列的各种细节,并对16- 查找页面元素的基本方法进行深入的分析,此外还有关于Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解、Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例、Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例、Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言的实用技巧。
本文目录一览:- Cypress系列(16)- 查找页面元素的基本方法(查找页面元素的快捷键)
- Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
- Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例
- Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例
- Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言
Cypress系列(16)- 查找页面元素的基本方法(查找页面元素的快捷键)
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前端页面代码
后面写的 Cypress 代码,都会基于这个 html 页面来定位元素哦,文件位置随意放,代码需要手动自己敲一遍
.get(selector)
该用法用来在 DOM 树中查找 selector 对应的 DOM 元素
两种语法格式
// 以选择器定位 cy.get(selector) 以别名定位,后续会讲到 cy.get(alias)
简单的栗子
测试结果
如果可以匹配多个元素,则返回多个元素
.find(selector)
该定位方法用来在 DOM 树中搜索已被定位到的元素的后代,并将匹配到的元素返回为一个新的 jQuery 对象【注意,不是返回元素对象】
实际栗子-测试文件代码
测试结果
解析错误信息(重点,懂了这个就不会再犯同样的错误了)
- 英文:A child command must be chained after a parent because it operates on a prevIoUs subject
- 中文:子命令需要链接到父命令之后,因为他需要作用于上一个对象
- 通俗理解:需要找到元素才能对元素执行某些命令【针对元素的操作】
- 重点:很多命令都需要通过元素去调用的,所以需要先定位到元素,才能调用那些命令,否则元素都没有,怎么操作元素呢
.contains()
该方法可用来获取包含指定文本的 DOM 元素
两种语法格式
.contains(content)
.contains(selector,content)
实际栗子-测试文件代码
测试代码
重点:只会返回第一个匹配到的元素
结尾
本文是博主基于对蔡超老师的《Cypress 从入门到精通》阅读理解完后输出的博文,并附上了自己的理解
对书籍感兴趣的,大家可以参考本篇博客:https://www.cnblogs.com/poloyy/p/13052972.html,考虑自身需求进行购买
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=12vd92hxgwgj1
Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
官方地址
https://github.com/abramenal/cypress-file-upload
安装方式
npm
npm install --save-dev cypress-file-upload
项目导入插件
在 cypress/support/commands.js 文件下添加下面语句
import 'cypress-file-upload';
实际栗子
测试代码
运行结果
注意事项
- 因为这里用的是 mock,命令是 cy.route() ,但如果换成最新的 cy.intercept() 会失败
- 可以观察下实际项目中是否存在这个问题(主要是上传文件的接口的域名需要和网站同源)
Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- 上一节只讲了如何跳过执行 or 只执行某些测试用例集 or 测试用例
- 在实际项目中,可能存在需要在运行中动态地去决定某个测试是否需要执行
如何动跳过执行某些测试用例
测试代码
运行以下命令
进入 Cypress 安装目录,cmd敲
yarn cypress:open --env flag=1
打开 Cypress Test Runner 之后运行上面的代码文件
测试结果
当 flag != 1 时的测试结果
知识点
- 我们可以通过指定环境变量来动态判断是否执行指定的测试用例
- 设置环境变量有很多种方法,这里用的是命令行方式,格式: --env key=val1,key2=val2 ,若需要指定多个环境变量则需要逗号来隔开,而不是空格
- this.skip() ,当测试用例内调用该方法时,方法后面的代码都不会执行,方法前面若是调用 Cypress 的方法则也不会执行(如: cy.visit() 、 cy.log() ),只有非 Cypress 方法才会执行(如: console.log("1234") )
备注:后面再讲环境变量不同的配置方式
Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- 自动化测试中,数据驱动是很重要的一个点
- 实际项目中,肯定会出现这种情况:多条测试用例的执行步骤,断言步骤完全一致,只有输入和输出数据不一样
- 这个时候依靠数据驱动(数据参数化)来解决这个问题可以提升我们的测试效率
- 在 Cypress,可以通过数据来动态生成测试用例,以达到数据驱动的效果
动态生成测试用例的步骤
前提
这边用的还是 Cypress 提供的被测应用哦
# 进入被测应用的目录 cd C:\Users\user\Desktop\py\cypress-example-recipes\examples\logging-in__html-web-forms # 启动本地服务 npm start
启动成功后,cmd窗口将显示服务器的地址和端口
创建一个数据文件
在 Cypress安装目录/cypress/integration 文件夹下,创建一个子目录 datas ,在该目录下创建一个 testLogin.data.js 文件,代码如下
export const testLoginUser = [ { summary: "登录成功",username:"jane.lane"},{ summary: "登录失败" 文件 在 integration 文件夹下创建一个 testLogin.js 文件,代码如下
运行测试文件
进入 Cypress 安装文件夹,cmd执行命令
yarn cypress:open
单击 testLogin.js,Cypress 会启动 Test Runner 运行测试,运行成功后,将看到运行结果页面
测试结果
可以看到第一条用例是测试通过,第二条用例是执行失败了(因为账号密码是错的,失败理所当然)
总结
- 根据测试数据动态生成测试用例,是一种数据驱动的做法
- 可以提升我们的测试效率,当我们测试数据本身改变时,无须更改测试代码,只要改测试数据文件
总结
以上是小编为你收集整理的Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
原文地址:https://www.cnblogs.com/poloyy
Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- 断言是测试用例的必要组成部分
- 没有断言,咱们就不知道测试用例的有效性,到底通过没通过
- Cypress 的断言基于 Chai 断言库,并且增加了对 Sinon-Chai、Chai-jQuery 断言库的支持,其中就包括 BDD 和 TDD 格式的断言
BDD 格式的断言
- expect
- should
TDD 格式的断言
assert
常见的断言方式
以下列出了常见的元素断言
长度(Length)
// 重试,直至找到3个匹配的<li.selected> cy.get('li.selected').should('have.length',3)
重点: hava.length
类(Class)
重试,直至这个input不再有disabled的class
cy.get('form').find('input').should('not.hava.class','disabled')
重点: not.hava.class
值(Value)
重试,直至这个textarea的值为 poloyy
cy.get('textarea').should('have.value','poloyy')
重点: have.value
文本内容(Text Content)
重试,直至这个span不再包含'click me'
cy.get('a').parent('span.help').should('not.contain','click me')
重点: not.contain
针对元素是否可见(Visibility)
重试,直至button可见
cy.get('button').should('be.visible')
重点: be.visible
针对元素是否存在(Existence)
重试,直至 id=loading 元素不再存在
cy.get('#loading').should('not.exist')
重点: not.exist
针对元素状态(State)
重试,直至radio状态是checked
cy.get(':radio').should('be.checked')
重点: be.checked
针对 CSS
重试,直至complete这个类有匹配的css为止
cy.get('.completed').should('have.css','text-decoration','line-through')
重点: hava.css
针对回调函数(callback)
如果内建的断言没有满足你的需求,可以自己写断言函数,然后作为一个回调以参数的形式传给 .should()
假设源HTML如下
<div class="main-abc123 heading-xyz987">Introduction</div>
自己写的断言函数
我们今天的关于Cypress系列和16- 查找页面元素的基本方法的分享已经告一段落,感谢您的关注,如果您想了解更多关于Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解、Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例、Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例、Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言的相关信息,请在本站查询。
本文标签: