我致力于扩展testcafe-provider-android。我希望它支持Firefox和截图。
屏幕截图是使用Android调试工具进行的。它适用于Chrome,但不适用于Firefox。
crop.js#calculateMarkPosition()找不到标记。
我想我理解标记是如何工作的。
在utils.js#generateScreenshotMark()中生成一串32个0或1的字符串,这就是“id”。 “1”变为白点,“0”变为黑点。 “markSeed”是转换为字节数组的id。 “markData”是base64编码的图像,可以在URL中使用。
在客户端,screenshot-mark.js将此图像放在页面的右下角。
crop.js#calculateMarkPosition()逐行扫描屏幕截图,以便找到标记并正确裁剪图像。
以下是Chrome和Firefox的ID和屏幕截图:
注意:我操纵代码以始终生成相同的ID。屏幕截图被裁剪并放大。
ID:
00101111000011000011000011110100
铬:
火狐:
在我眼里,它们看起来一样。那为什么这不起作用?
如果您可以使用第三方工具裁剪屏幕截图,则需要通过将built-in screenshot mark generation属性设置为false来禁用hasChromelessScreenshots
。
我建议你打开a new issue on the TestCafe repository并提供所有屏幕截图源码。
我找到了这种行为的原因。
在Chrome中,黑点的rgba值为rgba(0,0,0,1),而在Firefox中则为rgba(1,1,1,1);
这就是无法找到索引的原因 - 值不符合预期。
现在我需要找出,如果这是Firefox中的一个错误。
更新:
这是因为Firefox进行了颜色调整。问题在TestCafe Bug #2918中描述,并用TestCafe Pull Request #3732解决
我们现在只需要等待下一个版本。