在进行质量检查自动化时,通常建议在测试过程中模拟测试应用程序的实际实际用户的环境和所有条件。

但是,当在CI机器上的浏览器测试中端对端运行时,使用虚拟显示器(xvfb)运行测试是诱人的且相对易于设置。
在虚拟显示器上可能会发生哪些特定问题,而在实际显示器上却不可能,反之亦然?在运行硒浏览器自动化测试时,是否可以忽略“实际显示”要求?

请注意,我看到了此主题,但我想在此关注特定的潜在问题,而不是一般的区别。

#1 楼

实际上,我发现的唯一区别是颜色复制。这并不坏,只是不准确(以我的经验)。

总体而言,这不是问题,但是如果您要使站点符合AAA标准的可访问性,那可能会很烦人。

#2 楼

现实情况是,不同的浏览器和设备使用不同的呈现引擎,安全性流程和JavaScript解释器来生成页面。

,这是您偶尔遇到“仅在Firefox中”错误或“仅在Android <= v4'错误等中发生。

这些错误揭示了没有一个系统能够完美地模拟存在的所有不同系统,至少在一次给定测试的一次运行中无法完美模拟。 />
使用模拟器时需要考虑的一般因素是:


使用什么渲染引擎
使用什么javascript引擎
使用什么屏幕大小
虚拟设备与真实设备的网络速度

由于所有这些因素,在使用任何给定的仿真器(例如xvfb)时都应格外小心,因为它代表一种方法。

其他建议:


我倾向于只在一个浏览器(当前为chromedriver)中运行我的案例,因为出现的罕见问题不值得花这笔钱对我的公司而言,是因为它的速度缓慢,花费了额外的时间和精力,而获得的回报却很少且很少。同样,仅在一个设备/浏览器中确实出现的问题通常实际上不会被浏览器捕获,例如我的自动化测试未检测到“体积太小”。该决定取决于您的公司。
对于大多数不需要javascript的测试,我通常使用无头浏览器(虚拟)。 xcfb是一个不错的选择,因为它虽然是虚拟的,但您仍然可以拍摄屏幕截图。
Google刚刚推出了无头的chrome浏览器。您必须下载chrome v59才能看到它。
在针对不同设备运行功能至关重要时,我使用了特定的驱动程序,例如Firefox,chromedriver等。


评论


xvfb不是模拟器,而是虚拟帧缓冲区。基本上是一个虚拟监视器。这样,渲染引擎和底层系统将不会受到影响。

– ECiurleo
17年7月13日在9:17

谢谢@ECiurleo好像我不太了解。完全可以,我想了解更多。那么xvfb使用了哪个实际的浏览器或渲染引擎,它如何工作?我将用谷歌搜索并自己阅读更多内容。干杯!

–迈克尔·杜兰特(Michael Durrant)
17年7月13日在10:05

不用担心,浏览器和渲染引擎会像往常一样工作。 xvfb只是一种将内容作为一个人显示给您的机制。可以将其想象为在不插入显示器的情况下运行硒,并通过远程桌面访问该设备。 xvfb为基于X的系统提供了类似的功能

– ECiurleo
17年7月13日在12:08



谢谢。对于我为现有rspec测试中实际使用的技术所做的更改或安装,我仍然感到困惑。

–迈克尔·杜兰特(Michael Durrant)
17年7月13日在19:19