cypress中丰富的调试工具使用方法

目录
  • cypress调试工具
    • 一、 Time travel
    • 二、 快照
    • 三、errors信息
    • 四、页面事件
    • 五、控制台的输出
    • 六、调试专用命令

cypress调试工具

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标记):

  • 固定快照

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

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

  • 点击事件

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

  • 快照菜单面板

这是一个新的菜单面板。一些命令(如操作命令)如果使用多个快照,那么可以通过点击: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中丰富的调试工具使用方法的详细内容,更多关于cypress调试工具的资料请关注我们其它相关文章!

(0)

相关推荐

  • 使用cypress编写第一个测试用例

    目录 cypress测试编写 一.新建一个文件 二.编写第一个测试文件 1. 编写一个测试通过的代码 2. 编写一个测试失败的代码 3. 测试文件中的describe, it, 和expect 是什么 三.编写一个真实的测试文件 1. 步骤一:访问一个页面 2. 步骤二:查询一个元素 3. 步骤三:点击一个元素 4. 步骤四:断言 添加更多的交互命令和断言 回顾测试 关于页面转换 cypress测试编写 当环境安装好了之后,就可以着手尝试第一个测试的编写了. 一.新建一个文件 在你的项目下的cy

  • windows系统下安装Cypress及cypress open报错解决

    目录 一.操作系统 二.安装依赖 1.node.js 2.linux 三.安装 四.安装完成,打开cypress 安装cypress. 一.操作系统 先确认下你的系统,是否在cypress支持范围之内: macOS 10.9 以上 (仅64-bit)Linux Ubuntu 12.04及以上版本,Fedora 21和Debian 8(仅64位)windows7 以上 二.安装依赖 1.node.js 如果使用npm来安装Cypress,需要Node.js 12 或者 14 以上.不知道啥是nod

  • cypress测试工具使用介绍

    目录 cypress测试工具 一.什么是cypress 二.cypress独有特点 其他亮点 cypress测试工具 cypress现在可谓是越来越火爆了,github上已经30.2K star了.作为一名曾使用selenium做web自动化的.测试人员,很想去一探究竟. 一.什么是cypress Cypress称自己是下一代的web前端测试工具,并且解决了开发和测试人员在测试当下应用程序时的关键痛点. 很多时候,cypress会被拿来与Selenium作比较,但是从根本上来说,这两个是不一样的

  • cypress测试本地web应用

    目录 cypress测试本地web应用 一.启动本地应用 二.访问本地应用 三.配置Cypress 四.Seeding data 1. Stubbing the server 2. 解决登录问题 cypress测试本地web应用 在之前的cypress介绍里曾提到过,cypress虽然也可以测试部署好的应用,但是它最大的能力还是发挥在测试本地应用上.本章主要内容就是关于如何测试本地web应用的概述: cypress与后台应用之间的关系. 如何配置cypress使其适合我们的应用 更好的绕过应用的

  • cypress中丰富的调试工具使用方法

    目录 cypress调试工具 一. Time travel 二. 快照 三.errors信息 四.页面事件 五.控制台的输出 六.调试专用命令 cypress调试工具 Cypress附带了一系列调试工具来帮助我们弄明白测试的经过,利于我们更好的调试.具体这些工具的能力都有啥? 回到每个命令的快照. 可以看到特殊的已发生的page events. 接收关于每个命令的额外输出. 在多个命令快照之间 向前/向后 步进. 暂停命令并迭代地逐步执行. 当找到隐藏的或者多个元素时,展示的更形象. 这里继续使

  • java selenium使用浏览器调试工具实现方法

    在基于UI元素的自动化测试中, 无论是桌面的UI自动化测试,还是Web的UI自动化测试.   首先我们需要查找和识别UI元素. 在基于Web UI 自动化测试中, 测试人员需要了解HTML, CSS和Javascript的一些知识, 还需要学会使用各种浏览器的调试功能 查找Web UI 页面上的元素, 必须先了解页面的DOM结构, 元素的属性, 甚至一些JavaScript的调用信息.  现在主流的浏览器都自带了很多强有力的工具 阅读目录 Google Chrome Internet Explo

  • 原生JavaScrpit中异步请求Ajax实现方法

    在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需要ajax功能而引入Jquery比较不划算. 所以接下来便用原生JavaScrpit实现一个简单的Ajax请求,并说明ajax请求中的跨域访问问题,以及多个ajax请求的数据同步问题. JavaScript实现Ajax异步请求 简单的ajax请求实现 Ajax请求的原理是创建一个XMLHttpReq

  • oracle中decode函数的使用方法示例

    decode的几种用法 1:使用decode判断字符串是否一样 DECODE(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN RETURN(value 1) ELSIF 条件=值2 THEN RETURN(value 2) ...... ELSIF 条件=值n THEN RETURN(value 3) ELSE RETURN(default) END IF sql测试 select empno,decode(empn

  • Oracle数据库中ora-12899错误的解决方法

    在使用ORACLE的过程中,会出现各种各样的问题,各种各样的错误,其中ORA-12899就是前段时间我在将数据导入到我本地机器上的时候一直出现的问题.不过还好已经解决了这个问题,现在分享一下,解决方案; 出现ORA-12899,是字符集引起的,中文在UTF-8中占3个字节,ZHS16GBK中占2个字节,而源dmp文件字符集是ZHS16GBK库里倒出来的数据,现在要导入到目标字符集为UTF-8的库里,所以会出现ORA-12899 其实只要修改一下ORACLE 的字符集就可以很好的解决这个问题; 但

  • AngularJS中$apply方法和$watch方法用法总结

    本文实例总结了AngularJS中$apply方法和$watch方法用法.分享给大家供大家参考,具体如下: 引言 最近在项目中封装控件的时候用到了$watch方法来监听module中的值的变化,当时小编对这个方法不是很了解,所以在网上找了一些资料来学习一下,下面小编就给大家简单介绍一些AngularJS中Scope 提供$apply 方法传播Model 的变化和$watch方法监听module变化. $apply使用情景 AngularJS 外部的控制器(DOM 事件.外部的回调函数如 jQue

  • Angularjs的ng-repeat中去除重复数据的方法

    本文实例讲述了Angularjs的ng-repeat中去除重复数据的方法.分享给大家供大家参考,具体如下: 一.JS: ngApp.filter('unique', function () { return function (collection, keyname) { var output = [], keys = []; angular.forEach(collection, function (item) { var key = item[keyname]; if (keys.index

  • java中的可变参数使用方法

    java中的可变参数使用方法 可变参数时Java 1.5新增的方法,可变参数方法接收0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法.如: public class Test{ public int sum(int... args) { int sum = 0; for (int arg : args) { sum += arg; } return sum; } } 可变参数提供了方便,但是使用可变参

  • python中requests使用代理proxies方法介绍

    学习网络爬虫难免遇到使用代理的情况,下面介绍一下如何使用requests设置代理: 如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求: import requests proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } requests.get("http://examp

  • python实现在目录中查找指定文件的方法

    本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 复制代码 代码如下: import os from glob import glob #用到了这个模块 def search_file(pattern, search_path=os.environ['PATH'], pathsep=os.pathsep):     for path in search_path.split(os.pathsep):         for mat

随机推荐