Cypress自动化测试系列之三
本文技术难度★★★,如果前编内容顺利执行,请继续。
如果Selenium尚无法灵活运用的读者,本文可能难度较大。
“理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机。
不记得没关系,只需要知道:有这么一位IT老司机,
穿上西装,带大家打拼职场!
操起键盘,带大家打磨技术!
上一篇IT老司机带着各位已经成功安装了Cypress,并且让Cypress成功运行起来了。上篇任意门☛Cypress自动化测试系列之二
本篇,IT老司机教你写第一个Cypress测试用例。
上次说到,老司机成功带着大家完成了第一个真正意义上的测试用例,点击网页上的链接,跳转到新网页,设置断言验证结果。
当然,仅仅是这样,显然是不够的。
老司机这次带着各位继续扩展第一个测试用例,操作网页上其他元素。
上次的测试用例,看起来这样的:
describe('A real test case', function() { it('Visits the webpage', function() { cy.visit('https://example.cypress.io'); cy.contains('type').click(); cy.url().should('include', '/commands/actions') }) }) |
默认大家已经打开了编辑js文件的IDE,并且已经启动了cypress(npx cypress open)
跟着老司机一步一步扩展。
今天讲的内容,将用一个例子教会大家:
• 怎么CSS定位到元素;
• 怎么输入内容;
• 怎么编写断言验证结果。
按照上面TestCase内容,Cypress自动打开了网页:
https://example.cypress.io/commands/actions
网页右侧有两个文本框:
打开浏览器的“开发者工具”,可以看到该DOM元素类型为“input”,class属性为:“form-control action-email”。
本次试验,我们将往input类型DOM中输入一些内容。
在Cypress框架中,用cy.get()方法选择一个DOM元素,选择方法必须是CSSSelector,跟Selenium一样的思路。
用 .type() 方法写入内容进选中的DOM。
最后用 .should()方法完成断言验证,完成TestCase过程。
加上以上三步后,测试用例看起来这样的:
describe('My First Test', function() { it('clicking "type" navigates to a new url', function() { cy.visit('https://example.cypress.io') cy.contains('type').click() // Should be on a new URL which includes '/commands/actions' cy.url().should('include', '/commands/actions') cy.get('.action-email') .type('fake@email.com') .should('have.value', ' fake@email.com') }) }) |
基本可以望文生义了,对吧?
测试结果:
如果想输入完毕,让浏览器反应一会儿,怎么办?
修改 .type() 方法成:.type('fake@email.com',{ delay: 100 })
记得delay 的单位是毫秒,以上写的100,实际上让浏览器等待了 0.1 秒。
到此为止,第一个TestCase才真正完成。
总结一下:
1. cy.get() 通过 CSSSelector 方式选择DOM元素;
2. 再通过 .type()输入内容;
3. 聪明的读者,是不是可以举一反三地尝试着点出“click()”、“dbclick()”、“check()”、“uncheck()”、“select()”、“clear()”等等?
4. 如果是提交,则需要注意:cy.get('.action-form').submit() 之后,需要 .next() 再可以 .should('contain', 'Sth. You want to exam.') 断言判断。
各位读者,您们的阅读量是我的动力!
如果您觉得本文还可以一读,请不吝转发!IT老司机继续带各位一起探究Cypress!
谢谢!!
作 者:Testfan Arthur
出 处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接
Cypress自动化测试系列之三的更多相关文章
- Cypress自动化测试系列之二
本文技术难度★★★,如果前编内容顺利执行,请继续. 如果Selenium尚无法灵活运用的读者,本文可能难度较大. “理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打 ...
- angularjs自动化测试系列之jasmine
angularjs自动化测试系列之jasmine jasmine参考 html <!DOCTYPE html> <html lang="en"> <h ...
- angularjs自动化测试系列之karma
angularjs自动化测试系列之karma karma test with jasmine 更好的利用工具是为了让生活更美好. 需要安装的东西: npm install karma -g mkdir ...
- DataSnap 2009 系列之三 (生命周期篇)
DataSnap 2009 系列之三 (生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置 当DSServer启动时从DSServerClass组 ...
- Sql Server来龙去脉系列之三 查询过程跟踪
我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...
- 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完毕port(Completion Port)具体解释 ...
- Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程
原文:Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列之三 SQL S ...
- .NET 4 并行(多核)编程系列之三 从Task的取消
原文:.NET 4 并行(多核)编程系列之三 从Task的取消 .NET 4 并行(多核)编程系列之三 从Task的取消 前言:因为Task是.NET 4并行编程最为核心的一个类,也我们在是在并行编程 ...
- RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难
消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速 ...
随机推荐
- (转)java8实现对象列表去重
java8实现列表去重,java8的stream和lambda的使用实例 通过普通的方式也可以达到去重的效果,但是借助java8新特性可以很方便的实现列表去重,测试demo如下 实体类: public ...
- CentOS下安装完php外网无法访问的问题
1. cd /etc/selinux/ vim config SELINUX=disabled 2.通过界面关闭防火墙
- Document、HTMLDocument关系的探究
首先贴上代码: console.log(Object.getPrototypeOf(document)); console.log(Object.getPrototypeOf(Object.getPr ...
- PTA --- 天梯赛 L1-064 估值一亿的AI核心代码
L1-064 估值一亿的AI核心代码 (20 point(s)) 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 无论用户说什么,首先把对方说的话在一行中原样打印出来: 消除原文中多 ...
- Metinfo5.1 /include/common.php 变量覆盖+SQL注入漏洞
- 分享个昨天学的,sqlserver查表的所有列的列名,类型,长度的sql
select a.name as 列名, a.length as 长度,b.name as 类型 from syscolumns a left join systypes b on a.xtype ...
- 完全理解js中的&&和||
阅读代码时对一行代码很困惑 step > max_step && (step = min_step); 查阅资料后发现它等价于 if (step > max_step) { ...
- shell作业01
1.判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.” ...
- spring5源码分析系列(三)——IOC容器的初始化(一)
前言: IOC容器的初始化包括BeanDefinition的Resource定位.载入.注册三个基本过程. 本文以ApplicationContext为例讲解,XmlWebApplicationCon ...
- FFmpeg4.0笔记:本地媒体文件解码、帧格式转换、重采样、编码、封装、转封装、avio、硬解码等例子
Github https://github.com/gongluck/FFmpeg4.0-study/blob/master/official%20example/my_example.cpp #in ...