专栏首页从零开始学自动化测试Cypress web自动化27-Debugging调试你的代码

Cypress web自动化27-Debugging调试你的代码

前言

在写脚本的过程中,有时候会遇到一些问题需要慢慢调试找出原因,Cypress 提供了调试的方法,方便我们快速定位到问题

debugger 调试器

你的Cypress测试代码运行在与应用程序相同的运行循环中.这意味着你可以访问页面上运行的代码, 以及浏览器为你提供的东西, 比如document, window等等, 当然也包括调试器.

基于这些陈述, 你可能想在测试中添加一个 debugger 调试器, 就像这样:

it('let me debug like a fiend', function() {
  cy.visit('https://www.cnblogs.com/yoyoketang/')

  cy.get('#blog_nav_sitehome')

  debugger // Doesn't work
})

但是上面的代码并不会运行。Cypress 的文档里面介绍,cy命令是以队列的形式添加到列表里,最后才执行的。 debugger 将在 cy.visit() and cy.get() 之前执行,如下图。

我们可以使用 .then()在执行期间进入 Cypress 命令,并在适当的时间添加调试器

it('let me debug when the after the command executes', function () {
  cy.visit('https://www.cnblogs.com/yoyoketang/')

  cy.get('#blog_nav_sitehome')
    .then(($selectedElement) => {
      // Debugger is hit after the cy.visit
      // and cy.get command have completed
      debugger
    })
})

这样就可以先运行代码,在 debugger 位置暂停

上面的代码整个工作流程如下

  • cy.visit()访问页面,Cypress等待加载
  • 查询该元素,如果没有立即找到它,Cypress会自动等待并重试一会儿。
  • 将执行传递给.then()的函数,并将找到的元素传递给它。
  • 在.then()函数的上下文中,调用 debugger 调试器,停止浏览器并调用 Developer Tools 的焦点。
  • 检查应用程序的状态,执行 debugger

使用 .debug()

Cypress 通过了一个 .debug() 方法,可以直接调用,更省事!

it('let me debug like a fiend', function() {
  cy.visit('https://www.cnblogs.com/yoyoketang/')

  cy.get('#blog_nav_sitehome')
      .debug()
})

此时 cy.get() 会生成一个 subject 变量,在 Developer Tools 里面可以直接使用 console 调试

使用 .debug() 快速检查任何(或多个)测试期间应用程序的部分。您可以将它附加到任何 Cypress 命令链上,以查看系统此时的状态。

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cypress学习13-viewport设置不同分辨率,适配不同设备,手机型号

    通常web测试需测下在不同设备,手机上,不同的分辨率显示效果,可以用viewport()方法实现

    上海-悠悠
  • Cypress学习9-聚焦元素focused,截图screenshot使用

    在页面上点击输入框时,可以用 cy.focused() 判断当前元素是不是聚焦元素。 屏幕截图,这是web自动化经常用到的功能,可以用cy.screenshot...

    上海-悠悠
  • Cypress学习8-Cookies 使用

    根据 cookie 的 name 名称,获取对应 cookie 的 value 值

    上海-悠悠
  • Cypress系列(59)- 实时调试和中断

    https://www.cnblogs.com/poloyy/category/1768839.html

    小菠萝测试笔记
  • dcgan人脸生成效果复现-多图及代码学习

    https://github.com/carpedm20/DCGAN-tensorflow

    用户1908973
  • 程序员的十大谎言

    程序员们最常说的谎话是什么? ? 首先,这个问题本身就很有意思,做码农这一行当的人总喜欢挖苦自己,从自身找乐子,也许是因为这个工种整天是对着机器而无聊的原因吧...

    用户1667431
  • 猿蜕变15——一文搞懂Spring AOP的正确姿势

    看过之前的蜕变系列文章,相信你对mybatis有了应用方面的认识。但是这些要完成你的蜕变还不够,考虑到大家的基础知识,我们继续回到spring的话题上来,我们一...

    山旮旯的胖子
  • 腾讯云服务器需要购买数据盘吗?

    我们在购买腾讯云服务器的时候(腾讯云服务器CVM购买详细过程 选择我们需要的腾讯云服务器)有看到可以增加数据盘,而且每台服务器可以增加10块数据盘。因为有些网友...

  • 猿蜕变系列2——一文搞懂spring的花式DI

    看过之前的猿思考系列文章,相信你对java方面的基础有了一定的认识。经过之前的进化和思考的锻炼,也该是时候像模像样的做一些事情了。上一章节我们讲解了Spring...

    山旮旯的胖子
  • 量化交易是银弹呢?

    什么是量化交易?简单的说,就是用程序编写交易策略,用回测来模拟之前几年甚至几十年的交易,其中可以用到各种历史数据来辅助,包括但不限于:开盘价、收盘价、PE、PB...

    温铭@APISIX

扫码关注云+社区

领取腾讯云代金券