但是,当在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