Page 1 of 1

为了便于在测试完成后将屏幕截图与稳定集进

Posted: Wed Dec 11, 2024 7:20 am
by rumiseoexpate5
屏幕截图是 Charcoal 的核心功能。通过屏幕截图,我们可以避免混乱的 DOM 断言、捕获 CSS 引发的错误,并隐式捕获大量 UI 行为。为了让测试能够捕获高质量的屏幕截图,Charcoal 提供了一个 ScreenshotRecorder 对象,该对象基于 Selenium 的内置屏幕截图功能构建而成。

预初始化的 ScreenshotRecorder 对象被传递到每个 PageObject 的构造函数中。PageObject 子类中的实例方法使用单行命令记录图像。为了确保屏幕截图不会被正在进行的 UI 动画破坏,record() 会以 100 毫秒的间隔连续截取一系列屏幕截图,并且只有在观察到五个相同的连续屏幕截图后才会将图像记录到磁盘。这些“临时屏幕截图”会使用 ImageMagick 相互比较。

行比较,图像文件将写入预定的目录结构中,并按 萨尔瓦多 whatsapp 号码数据 5 万 时间顺序排列,例如稳定集图像遵循此确切方案,因此可以以直接的一对一方式进行比较。为了防止由于阴影的轻微变化等原因导致的小像素差异导致误判,测试编写者可以为测试中每个命名屏幕截图指定像素数的差异阈值。

借助 ScreenshotRecorder 独特的“临时截图”和明确定义的差异行为,我们能够构建一个始终以截图比较为中心的测试套件。在 Charcoal 中,录制可靠的截图并不比对元素进行断言更困难,因此开发人员自然而然地选择编写围绕视觉比较的测试。

Image

查看完整尺寸破损页面.png
查看完整尺寸稳定集.png
查看完整尺寸视觉差异.png
执行并等待请求(...)
许多 UI 交互都遵循“与元素交互、发出异步网络请求、处理响应”的工作流程。一个典型的例子是在 Squarespace 的/configUI 中保存博客文章。用户单击“保存”按钮,XHR 被发送到然后在观察到异步请求的 200 响应后,帖子的编辑对话框关闭。XHR 完成所需的时间,以及 UI 响应之前的时间,本质上是不确定的。为了以明确、一致的方式处理这种不确定性,Charcoal 提供了一个doAndWaitForRequest命令来对 XHR 进行轮询等待。在内部,此命令由 ,以便可以在页面范围内聚合和轮询新的和正在进行的请求。在 PageObject 中,调用如下所示: