Behat on Windows - taking screenshots


Behat on Windows - taking screenshots

我有几个Behat测试,它们使用类似的东西进行屏幕截图:

$driver->getWebDriverSession()->screenshot();

有人知道Behat插件或扩展可以比较两张截图吗?它必须在Windows上运行。

您正在寻找的是一个pdiff扩展:对于windows,它可能看起来是这样的:http://seleniumrecipes.com/content/using-perceptual-difference-pdiff-tool

屏幕截图绝对不是"只在失败时拍摄"——你当然可以拍摄一组基线屏幕截图,并使用这样的工具https://github.com/jadu/BehatPerceptualDiffExtension如果产生的感知差异发生偏差(即,如果css更改以意外的方式超出范围),则测试失败。

这个叉子(https://github.com/ksenzee/BehatPerceptualDiffExtension/commits/master)PerceptualDiffExtension添加了diff掩码的概念,即您想要忽略的区域。例如,如果您有某种幻灯片,屏幕截图可能会显示失败,因为随机开始的幻灯片不同。

此外,作者最近与Behat进行了一次关于使用感知差异的演讲:http://2014.pnwdrupalsummit.org/pacific-nw-drupal-summit-2014/sessions/deploying-confidence-automated-visual-regression-and所以有一些幻灯片可以作为资源。

我已经和Behat合作了一段时间,它肯定没有像它应该的那样受欢迎。除了Behat的团队之外,没有那么多受欢迎的插件,也绝对没有一个知名/受支持的插件可以让Behat比较图像。事实上,PHP也是如此,除了GD和Imagic,它们的范围要广得多。

此外,逻辑上也不太清楚你会比较什么以及如何比较。屏幕截图通常是在出现故障时拍摄的。比较两张失败测试的屏幕截图没有多大意义,只将失败测试的截图与之前通过的相关测试的截图进行比较。问题是,你将在哪里以及如何获得这些有效的截图,以及来自这里的所有其他问题。

这听起来是一个非常具体的挑战,我确信只有有限的用户群体会需要这样的东西,可能有很多独特的逻辑和特定的情况。另一方面,在PHP中实现基本的图像比较并没有那么困难,因为您具有在PHP中处理图形的基本技能。

脑海中浮现的一件事是Imagick::compareImages,请参阅官方文档。似乎也有很多博客文章,比如这篇或这篇,展示了不同的方法。