如何正确使用 Testcafé 截取整页屏幕截图?

如何解决如何正确使用 Testcafé 截取整页屏幕截图?

我们正在尝试设置屏幕截图测试,通过将屏幕截图与预期的一组屏幕截图进行比较来自动化 UI/布局回归测试。我们正在为此使用 testcafé,但是当滚动条开始用于整页固定宽度屏幕截图时,我们正在挣扎:

const testcafe: TestController;
await testcafe
  .resizeWindow(1024,768)
  .takeScreenshot({
    fullPage: true
  });

这将生成宽度为 1003 像素(不是 1024 像素!)和高度为 1546 像素的屏幕截图。尽管如此,屏幕截图仍然包含垂直滚动条,这肯定不是巧合 21px 宽。它既不是整页,因为页面底部也缺少很少的像素,这很可能实际上会导致垂直滚动条。

当尝试通过添加额外像素(准确地说是 21 个像素)来解决减小的宽度时,屏幕截图的宽度确实为 1024 像素,并且高度略微减小了 1510 像素(因为页面上的某些内容不再需要包装)。它仍然缺少屏幕截图底部的部分,并且仍然有一个滚动条。

const testcafe: TestController;
await testcafe
  .resizeWindow(1024+21,768)
  .takeScreenshot({
    fullPage: true
  });

现在变得有点奇怪:刚才描述的行为一直持续到 1024+21+20 像素的宽度。屏幕截图的宽度为 (1024-21) +21+20 像素,高度为 1510 像素和滚动条。从 1024+2*21 开始虽然垂直滚动条消失了,但屏幕截图也在底部完成,1510px 作为正确的高度(因为页面上的其他东西不再需要换行) - 但不幸的是我确实有屏幕截图的宽度为 1045 像素,但不是预期的 1024 像素宽度。

如果我指定宽度为 1024 像素的 resizeWindow,如果它包含滚动条,我确实希望屏幕截图与该宽度完全相同。如果 testcafe 认为它必须在没有滚动条的情况下截取屏幕截图并将屏幕截图缩小到 1003px 的宽度,这对我来说也很好 - 但在这里我想它以某种方式考虑了滚动条,但实际上仍然没有将其切断。

内容不需要768px高度的页面的相同机制,换句话说没有滚动条开始,屏幕截图的宽度为1024px,没有任何“更正”。

相关的几个版本:

  • 节点:v14.16.0
  • testcafe:1.10.1
  • 浏览器:在 Windows 10 上运行的 Chrome 89.0.4389.72

你还有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?