本文技术难度★★★,如果前编内容顺利执行,请继续。

如果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自动化测试系列之三的更多相关文章

  1. Cypress自动化测试系列之二

    本文技术难度★★★,如果前编内容顺利执行,请继续. 如果Selenium尚无法灵活运用的读者,本文可能难度较大. “理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打 ...

  2. angularjs自动化测试系列之jasmine

    angularjs自动化测试系列之jasmine jasmine参考 html <!DOCTYPE html> <html lang="en"> <h ...

  3. angularjs自动化测试系列之karma

    angularjs自动化测试系列之karma karma test with jasmine 更好的利用工具是为了让生活更美好. 需要安装的东西: npm install karma -g mkdir ...

  4. DataSnap 2009 系列之三 (生命周期篇)

    DataSnap 2009 系列之三 (生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置 当DSServer启动时从DSServerClass组 ...

  5. Sql Server来龙去脉系列之三 查询过程跟踪

    我们在读写数据库文件时,当文件被读.写或者出现错误时,这些过程活动都会触发一些运行时事件.从一个用户角度来看,有些时候会关注这些事件,特别是我们调试.审核.服务维护.例如,当数据库错误出现.列数据被更 ...

  6. 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

       手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                    ...

  7. 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 ...

  8. .NET 4 并行(多核)编程系列之三 从Task的取消

    原文:.NET 4 并行(多核)编程系列之三 从Task的取消 .NET 4 并行(多核)编程系列之三 从Task的取消 前言:因为Task是.NET 4并行编程最为核心的一个类,也我们在是在并行编程 ...

  9. RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

    消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速 ...

随机推荐

  1. ACO 蚁群算法(算法流程,TSP例子解析)

    算法 计算机 超级计算 高性能 科学探索 1. 算法背景——蚁群的自组织行为特征 高度结构化的组织——虽然蚂蚁的个体行为极其简单,但由个体组成的蚁群却构成高度结构化的社会组织,蚂蚁社会的成员有分工,有 ...

  2. Git 常用命令大全-转载

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  3. Core 3 WPF MVVM框架 Prism系列之数据绑定

    一.安装Prism 1.使用程序包管理控制台# Install-Package Prism.Unity -Version 7.2.0.1367 也可以去掉‘-Version 7.2.0.1367’获取 ...

  4. 组件推荐Forloop.HtmlHelpers 用来实现MVC的js加载顺序

    最近在开发的时候遇到js加载顺序的问题,layui在底部声明了js,但是我想在页面其他地方使用分布视图,分布视图内有自己的js逻辑,发现不能执行,一看就发现,这里的js应该加在layui后面执行才能有 ...

  5. go语言20小时从入门到精通(六、工程管理)

    在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系.如果这样一个文件一个文件逐步编译,那不亚于一场灾难. Go语 ...

  6. yolo3 车辆检测

    1. 使用原在imagenet上训练好的weights用于特征提取 darknet53.conv.74 可从yolo官网下载 2. 车辆检测数据集及其label制作 a. voc car类包含1161 ...

  7. NOIp2017D1T2 时间复杂度【模拟】

    说一说 题目分析请从目录空降... 没想到模拟题还会卡这么久...菜得真实... 这是一个励志的故事:从$0pts->9pts->18pts->27pts->36tps-> ...

  8. vue中 Vue.set 的使用

    Vue.set(vm.items, indexOfItem, newValue) 1.vm.items :源数据:2.indexOfItem : 要修改的数据的键3.newValue : 要修改的数据 ...

  9. Java架构师 成长之路 -- 跳出程序员陷阱(转载)

    本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路. 如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序 ...

  10. RS232与RS485的功能与区别!

    转载于:http://blog.csdn.net/kevinhg/article/details/7367144 RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调器厂家及计 ...