Cypress附带了一系列调试工具来帮助我们弄明白测试的经过,利于我们更好的调试。

具体这些工具的能力都有啥?

  • 回到每个命令的快照。
  • 可以看到特殊的已发生的page events
  • 接收关于每个命令的额外输出。
  • 在多个命令快照之间 向前/向后 步进。
  • 暂停命令并迭代地逐步执行。
  • 当找到隐藏的或者多个元素时,展示的更形象。

这里继续使用上一章的测试代码,来看下其中的一些具体操作。

describe('My First Test', () => {
it('Gets, types and asserts', () => {
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') // Get an input, type into it and verify that the value has been updated
cy.get('.action-email')
.type('fake@email.com')
.should('have.value', 'fake@email.com')
})
})

一、 Time travel

姑且叫它时间穿梭吧。期初我还有点莫名其妙,后来用了才知道,确实好用。就是当你的鼠标在左侧的命令日志上悬停时,cypress会自动回到那个命令解析时的快照,

于是乎,在右侧的预览窗口,就可以看到对应这个命令进行的动作。

二、 快照

在左侧的命令行也是可以交互的,这里就可以点击click命令,点击后就发现变紫色了,说明事情有古怪。

其实这里有3点需要大家关注到(对应图里的1,2,3标记):

  1. 固定快照

可以看到有个图钉标记,表示现在锁定了这个快照。这时候鼠标移动到其他命令上,快照也不会切换。

这就方便我们在创建快照时,手动检查被测试应用程序的DOM。

  1. 点击事件

由于.click()是一个操作命令,那么在事件发生的坐标处就可以看到一个红色的命中框。

  1. 快照菜单面板

这是一个新的菜单面板。一些命令(如操作命令)如果使用多个快照,那么可以通过点击:beforeafter,来回的切换快照。

before快照是在触发click事件之前进行的,after快照则是在点击事件发生后立即执行的。

比如现在点击type命令,单击before将以输入框之前的样子,应该显示占位符文本信息。单击after将显示TYPE命令完成后输入的样子,

显示fake@email.com

三、errors信息

调试代码,自然少不了看报错的error信息了。

在cypress中,如果发生了错误,会打印如下的信息(对应图里标记的序号阅读):

  1. Error name:这是错误的类型,比如AssertionError, CypressError
  2. Error message:通常会告诉我们哪里出了问题。

    它的长度不一,有些很短,而有些很长,可能会告诉我们应该如何准确地修正错误。
  3. Learn more:一些错误消息包含一个Learn more的链接,点击后跳转到相关的Cypress文档。
  4. Code frame file:通常是堆栈跟踪的顶部一行,显示了在下面的代码框架中突出显示的文件、行和列。
  5. Code frame:显示发生故障的代码片段,并突出显示了相关的行和列。
  6. View stack trace:单击此按钮可切换是否展示堆栈跟踪。
  7. Print to console button:单击此按钮将完整的错误打印到DevTools控制台,也就是F12的console。

四、页面事件

命令日志里还有2个看起来很有趣的日志:PAGE LOADNEW URL。这些不需要我们去加,当发生一些重要事件的时候,

cypress自己就会输出这些日志。

具体涉及到自动输出日志的事件有如下:

  • 发送了XHR的请求。
  • url改变。
  • 页面加载
  • 表单提交。

五、控制台的输出

cypress还可以将额外的调试信息输出到控制台。

比如F12打开你的Dev Tools并点击get来获取.action-email类选择器。

我们可以在控制台中看到Cypress输出额外的信息:

  • Command: 已发出的命令。
  • Yielded: 这个命令返回的内容。
  • Elements: 发现的元素数量。
  • Selector:使用的选择器。

六、调试专用命令

除了UI界面上的各种辅助工具之外,还有专门用于调试的命令,例如:

  • cy.pause()
  • cy.debug()

现在,在代码里加上一行cy.pause(),保存。

describe('My First Test', () => {
it('clicking "type" shows the right headings', () => {
cy.visit('https://example.cypress.io') cy.pause() cy.contains('type').click() // Should be on a new URL which includes '/commands/actions'
cy.url().should('include', '/commands/actions') // Get an input, type into it and verify that the value has been updated
cy.get('.action-email')
.type('fake@email.com')
.should('have.value', 'fake@email.com')
})
})

可以看到程序运行到cy.pause()就会暂停,可以手动点击继续,进行下一步操作。

【cypress】4. 丰富的调试工具的更多相关文章

  1. 发布:.NET开发人员必备的可视化调试工具(你值的拥有)

    1:如何使用 1:点击下载:.NET可视化调试工具 (更新于2016-12-29 19:11:00) (终于彻底兼容了部分VS环境下无法使用的问题) 2:解压RAR后执行:CYQ.VisualierS ...

  2. 自定义可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)

    前言: 最近飞机失联的太多,明天要飞北京处理服务器双机热备的问题,航空保险已买,单号是:TF10122913. 至于我的银行卡密码,在我枕头下面的字条里,要是我之后没再更新文章,请通知我家人,哈哈哈哈 ...

  3. 微信小程序开发调试工具

    为了帮助开发者简单和高效地开发微信小程序,我们推出了全新的 开发者工具 ,集成了开发调试.代码编辑及程序发布等功能. 扫码登录 启动工具时,开发者需要使用已在后台绑定成功的微信号扫描二维码登录,后续所 ...

  4. iOS 调试工具

    仪表  xcode5 引入了调试仪表,通过仪表可以直观的看出应用的CPU和内存占用量.运行一个程序,点击仪表栏.可以发现当程序处于运行状态时,调试导航面板会以柱状图显示CPU和内存占用量,并随着应用实 ...

  5. 在php中使用strace、gdb、tcpdump调试工具

    [转] http://www.syyong.com/php/Using-strace-GDB-and-tcpdump-debugging-tools-in-PHP.html 在php中我们最常使用调试 ...

  6. API调试工具推荐 - httpie

    API调试工具推荐 - httpie <HelloGitHub>第07期上面看到这个python项目,好东西 文档地址 但是安装的时候报错,google之后发现是个已知的bug,直接使用p ...

  7. 排名前 8 的 PHP 调试工具

    Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行.PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者 ...

  8. (转).NET开发人员必备的可视化调试工具(你值的拥有)

    1:如何使用 1:点击下载:.NET可视化调试工具 (更新于2016-11-05 20:55:00) 2:解压RAR后执行:CYQ.VisualierSetup.exe 成功后关掉提示窗口即可. PS ...

  9. JMeter学习-037-JMeter调试工具之四-BeanShell+jmeter.log

    前面三篇文章分别讲述了 HTTP Mirror Server . Debug PostProcessor 和 Debug Samper 的脚本调试实例.此文主要讲述第四种调试方法,通过 BeanShe ...

随机推荐

  1. 在Arch上使用Fcitx5

    目录 卸载Fcitx4 安装Fcitx5 配置 修改环境变量 系统登陆后默认启动Fcitx5输入法 配置主题 最终使用效果 参考文档 我是一个Arch+KDE的用户,所以下面的方法可能不适合所有的Li ...

  2. HDOJ-3065(AC自动机+每个模板串的出现次数)

    病毒侵袭持续中 HDOJ-3065 第一个需要注意的是树节点的个数也就是tree的第一维需要的空间是多少:模板串的个数*最长模板串的长度 一开始我的答案总时WA,原因是我的方法一开始不是这样做的,我是 ...

  3. 通达OA 页面敏感信息-2013/2015版本

    参考 http://wiki.0-sec.org/0day/%E9%80%9A%E8%BE%BEoa/4.html 漏洞影响 2013.2015版本 复现过程 POC: http://0-sec.or ...

  4. .NET 5学习笔记(11)—— Host Blazor WebAssembly in a Windows Service

    实在是被某软忽悠瘸了,愤而写此一篇.希望能让同样需求的同学们少走弯路.某软在<在 Windows 服务中托管 ASP.NET Core>中,介绍了通过创建Worker Service工程, ...

  5. python爬取考研专业信息

    伴随着2021考研成绩的公布,2021考研国家线也即将到来.大家是否有过考研的想法了?如果想考研我们就需要了解很多的信息,但是百度的上有太多信息需要我们去一一的鉴别,是比较浪费时间的.所以我们可以学习 ...

  6. 记一次 mysql主从复制安装配置 过程

    mysql主从复制安装配置 1.centos安装及准备 去centos官网下载相应source版本的镜像文件并在vmware中安装,安装中会遇到填写installation source,输入以下即可 ...

  7. 顶级开源项目 Sentry 20.x JS-SDK 设计艺术(Unified API篇)

    SDK 开发 顶级开源项目 Sentry 20.x JS-SDK 设计艺术(理念与设计原则篇) 顶级开源项目 Sentry 20.x JS-SDK 设计艺术(开发基础篇) 顶级开源项目 Sentry ...

  8. springboot 配置文件application

    application.properties # ----------------------------------------# 核心属性# --------------------------- ...

  9. P1014_Cantor表 (JAVA语言)

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/11/1 , 1/21/2 , 1/31/3 , 1/41/4, 1/51/ ...

  10. JAVA使用SizeOf

    研究一下JAVA的SizeOf 引用外部类实现JAVA的SizeOf JAVA本身是没有SizeOf的,因此我们需要去MavenRepository中下载JAR包(也可以使用maven等),因为这里只 ...