在 TestCafe 中测试运行期间累积所有 JS 警告和错误

2023-12-31

我希望能够在测试运行期间从浏览器控制台访问所有 J​​S 警告和错误。禁用“-e”(跳过 JS 错误)标志后,测试会在第一个错误处停止,因此显然它正在寻找它们。启用此标志后,我希望能够查看测试运行期间触发了哪些错误(最好是警告)。

我尝试过使用 ClientFunction 和 window.onerror 方法。我还尝试了 -r 'reports' 标志——我只看到 TestCafe 错误,而不是测试页面中的 JS 错误。我尝试过“访问控制台消息”https://devexpress.github.io/testcafe/documentation/test-api/accessing-console-messages.html https://devexpress.github.io/testcafe/documentation/test-api/accessing-console-messages.html但这仅提供 console.log 等抛出的消息(“请注意,此方法仅返回通过 console.error、console.warn、console.log 和 console.info 方法发布的消息。浏览器输出的消息(例如当页面上发生未处理的异常)将不会返回。”)


    const installErrorHandler = ClientFunction(() => {
      window.onerror = error => {
          console.log("ERROR::::::");
          console.log(error);
      };
    });

在 Clojure 空间中,当使用 Etaoin webdriver 实现(在 Chrome 或 Phantom.js 上)时,在任何时候只需执行


    (get-logs driver)

returns


    {:level :warning,
     :message "1,2,3,4  anonymous (:1)",
     :timestamp 1511449388366,
     :source nil,
     :datetime #inst "2017-11-23T15:03:08.366-00:00"}
 ....
 ....

包括任何“未处理的异常”。

我可以不在 TestCafe 中执行此操作吗?


也许您的 window.onerror 示例不起作用,因为它稍后会发生错误。我建议您将错误处理程序提取到单独的 *.js 文件中,并使用新的 testcafe 功能注入它:将脚本注入测试页面 https://devexpress.github.io/testcafe/documentation/using-testcafe/common-concepts/inject-scripts-into-tested-pages.html.

看下面的例子:

要注入的脚本(log-errors.js):

window.unhandledErrors = [];
window.onerror = (message, source, lineno, colno, error) => {
    window.unhandledErrors.push({ message, source, lineno, colno, error });
}

test:

import { Selector } from 'testcafe';

fixture('Log errors')
    .page('http://example.com')
    .afterEach(async t => {
        const errors = await t.eval(() => window.unhandledErrors);
        console.log(errors);
    });

test('test', async t => {
    //...
});

通过以下命令运行测试:

testcafe chrome test.js -e --cs=./scripts/log-errors.js

请注意,脚本注入功能自 1.4.0 版本起可用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 TestCafe 中测试运行期间累积所有 JS 警告和错误 的相关文章

  • 如何像 youtube 一样在纸板中观看普通视频

    我有一个可以正常播放的应用程序VR视频 我的应用程序有两个玩家可以玩这两种类型 在我的VrVideoView有一个按钮可以让视频播放立体声模式 我的问题是 我怎样才能观看正常的视频Cardboard就像YouTube app None
  • 如何使用 bash 脚本通过 tar 备份文件系统?

    我想备份我的 ubuntu 文件系统 我写了这个小脚本 这是非常基本的 但这是我第一次尝试 我害怕犯错误 由于需要几个小时才能完成才能看到结果 因此我认为最好向经验丰富的程序员询问我是否做错了什么 我特别感兴趣 gt 会记录输出mv或者它也
  • 偶尔连接的 CQRS 系统 - 客户端和服务器命令 - 基于任务的屏幕

    Premise 建议在CQRS DDD ES样式应用程序使用task基于屏幕 这些屏幕引导用户并捕获意图 These task屏幕也可以称为感应式用户界面 UI 设计指南的一些示例可以帮助您创建现代的 用户友好的应用程序 Microsoft
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 如何打印Oracle中过程的定义?

    oracle中有没有办法查看过程的结构是什么 我正在尝试记录并运行程序 并希望将实际的程序结构存储在我的日志中 您可以查询ALL SOURCE table SELECT text FROM all source WHERE owner lt
  • 内容是从 WiFi 直接传输到 Chromecast,还是从 WiFi 传输到 Android 再传输到 Chromecast?

    内容是从 WiFi 直接传输到 Chromecast 还是从 WiFi 传输到 Android 或任何其他设备 再传输到 Chromecast 我知道其他设备可用于控制 Chromecast 但我只想知道由于电池寿命的原因 您是否可以直接从
  • 在magento Attributes中添加自定义属性并显示在前端

    我已经开始使用 magento 作为我的电子商务 cms 我知道这是一个非常强大的平台 最近 我发现它的功能可以帮助开发人员扩展核心 并且我已经成功添加了自定义类别选项 是否有机会在某个属性上达到相同的结果 我想在属性选项卡上添加文本描述并
  • html5 canvas 使用图像作为蒙版

    是否可以使用具有形状的图像作为整个画布或画布内图像的蒙版 我想将图像放置在画布中 并在图像上添加蒙版 然后将其另存为新图像 您可以使用 source in globalCompositeOperation 将黑白图像用作蒙版 首先 将蒙版图
  • 解析用户周围的位置

    您好 我开发了一个应用程序 我想问一个问题 在我的数据云解析中 我有 餐馆 类 我有三列 名称 类型字符串 imageFile 类型文件 description 类型数组和 Location 类型GeoPoint 我想知道使用哪种方法来获取
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720
  • Eclipse:如何增加查找/替换历史记录?

    查找 替换对话框显示最后 8 个条目 该对话框通过 Ctrl F 显示 我想增加 查找 和 替换为 输入字段的历史记录中显示的条目数 我必须搜索并替换几个字符串和正则表达式 因此我一次又一次地输入字符串和正则表达式 我并不是指文件内容更改的
  • MVC ASP.NET 或 Razor

    我对 MVC 很陌生 我对 Silver light WPF 和 MVVM 有相当多的了解 但对 MVC 知之甚少 我正在按照 Microsoft 网站上的主要教程进行操作http www asp net mvc tutorials get
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • 如何将 Hibernate 5 安装到 Apache Karaf v4 中

    我已经安装了 Apache Karaf v4 03 并查询了 Hibernate 的可用功能列表 如下所示 不幸的是 我使用的是 Hibernate v5 hibernate 3 3 2 GA Uninstalled enterprise
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • 如何在 Laravel 中创建一条包罗万象的路线

    我需要一个 Laravelroutes php将捕获所有流量到特定的条目example com premium section网站 以便我可以提示人们在访问优质内容之前成为会员 您还可以通过在参数上使用正则表达式来捕获 全部 Route g
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7

随机推荐

  • Python - 处理混合编码文件

    我有一个文件 大部分是 UTF 8 但也有一些 Windows 1252 字符 我创建了一个表来将 Windows 1252 cp1252 字符映射到其 Unicode 对应字符 并希望使用它来修复错误编码的字符 例如 cp1252 to
  • 通过使其成为包装器来优化斐波那契数列递归函数

    斐波那契数列的递归定义在效率方面存在问题 它的定义如下 private fib int n if n lt 2 return n else return fib n 1 fib n 2 假设我们调用 fib 5 这使得 1 次调用 fib
  • 如何在 Amazon OpsWorks 上设置 Chef 的日志输出级别?

    我的问题类似于 如何在控制台中显示 Opscode Chef bash 命令的输出 https stackoverflow com questions 17813592 how can i display the output of a o
  • 在android中动态地将字体添加到textview中

    我是安卓新手 我有一个文本视图 想为其分配自定义字体 我的字体文件 ttf 位于服务器上 我必须在代码中使用该文件来动态设置字体 即时 我不想将文件放在资产文件夹或任何原始文件夹中 如何实施 从服务器下载字体 保存到SD卡 Use Type
  • 修复翻译错误

    liferay 门户中有很多地方翻译成我的语言 sk SK 是错误的 是否可以用 hook 重写那些不好的翻译 任何其他想法都欢迎 多谢 是的 你可以做到 in your liferay hook xml文件添加要覆盖的语言文件的条目 就像
  • 嵌套在结构中的 LINQ 和分组依据数据

    我的结构大致如下 List
  • android.view.WindowManager$BadTokenException:无法在 Toast 处添加窗口

    当我在我的 Android 应用程序上频繁执行某些操作 我的假设是由于 Toast 消息 时 出现以下错误 我没有得到此问题的确切位置 我可以从某人那里获得帮助来解决相同问题吗 beginning of crash 10 04 16 13
  • C# 通用约束问题

    我收到以下错误 类型 Test ICacheProvider 不能用作类型参数 泛型类型或方法中的 TStorageProvider StorageManager Test IFileInfo 没有 隐式引用转换自 StorageManag
  • 将 blob 转换为图像流并将其分配给 jLabel

    我只是想将数据库中的 blob 字符串转换为字节数组 然后在转换后将其转换为缓冲图像 然后将其分配给标签 这是我的代码 package ims project import java sql import javax swing impor
  • jQuery 仅获取此元素的父同级元素

    我不知道如何写这个 请参阅我的标记结构 该结构在页面上重复多次 div class module div class archive info span class archive meta open span div div class
  • Google 地图 fitBounds 无法正常工作

    我对 googlemaps fitBounds 函数有疑问 for var i 0 i lt countries length i var country countries i var latlng new google maps Lat
  • JavaScript 中去除字符串中的所有非数字字符

    考虑一个非 DOM 场景 您希望使用 JavaScript ECMAScript 从字符串中删除所有非数字字符 范围内的任何字符0 9应该保留 var myString abc123 8
  • 如何高效解析固定宽度文件?

    我正在尝试找到一种有效的方法来解析包含固定宽度行的文件 例如 前 20 个字符代表一列 从 21 30 开始代表另一列 依此类推 假设该行包含 100 个字符 将一行解析为多个组成部分的有效方法是什么 我可以对每行使用字符串切片 但如果行很
  • 具有多个条件的布尔索引[重复]

    这个问题在这里已经有答案了 我有一个熊猫DF我需要去哪里filter输出一些包含特征 a 和特征 b 的值 0 的行 为了检查这些值 我运行以下命令 DF1 DF DF a 0 它返回正确的值 同样 通过这样做 DF2 DF DF b 0
  • 来自 Pyspark ArrayType 列的随机样本

    我在 Pyspark 数据框中有一列 其结构如下 Column1 a b c d e c b d f g h i p l m 我想返回另一列 其中随机选择每行中的每个数组 以及函数中指定的数量 所以像data withColumn samp
  • 在套接字上多次调用listen——预期的行为?

    我在使用简单的基于 C 的服务器时注意到一些奇怪的事情 我的 Linux 4 10 3 系统上的程序 我不小心打通了电话listen 我在套接字上两次 来自服务器进程 被称为bind 早些时候 我注意到两个监听电话 成功 没有任何错误 事实
  • NSRulerView 如何将行号与正文正确对齐

    我在 MacOS 中使用 NSRulerView 来显示 NSTextView 旁边的行号 两个视图共享相同的字体和相同的字体大小 但是 在 NSTextView 中 字符串渲染是自动管理的 而在 NSRulerView 中 我需要计算正确
  • Symfony2 - 如何在控制器中使用 __construct() 并访问 Securty.Context?

    我在使用 Symfony2 时遇到了一些问题 即如何使用 construct 函数 官方文档非常糟糕 我希望能够使用以下内容 public function construct parent construct user this gt g
  • 修改Go GRPC服务器流拦截器上的元数据

    我一直在尝试在服务器流拦截器上设置元数据 以便实际的 RPC 函数可以在下游读取它们 func UserIDInterceptor srv interface ss grpc ServerStream info grpc StreamSer
  • 在 TestCafe 中测试运行期间累积所有 JS 警告和错误

    我希望能够在测试运行期间从浏览器控制台访问所有 J S 警告和错误 禁用 e 跳过 JS 错误 标志后 测试会在第一个错误处停止 因此显然它正在寻找它们 启用此标志后 我希望能够查看测试运行期间触发了哪些错误 最好是警告 我尝试过使用 Cl