在Linux中使用HtmlUnitDriver和使用Xvfb编写无头测试有什么区别?

时间:2012-10-25 01:01:37

标签: testing webdriver htmlunit xvfb

我是测试新手。

我在Linux上工作。 我正在阅读有关无头模式的测试,并遇到了两件事。一个是X虚拟帧缓冲区,它在内存中进行图形操作。因此,不显示任何输出。我在此链接http://www.seleniumtests.com/2012/04/headless-tests-with-firefox-webdriver.html中找到的实施细节。

我遇到的另一个是HtmlUnitDriver。这也不会在运行测试时打开任何浏览器。我使用HtmlUnitDriver编写了一个基本的示例代码,断言似乎工作正常。

我知道HtmlUnitDriver与javascript的效果不太好。但除此之外,选择其中一个是否有任何重大差异?

我将测试一个Web应用程序,其中包含一些javascript。

我是这个领域的新手。所以,任何答案,建议等将不胜感激。 提前谢谢

1 个答案:

答案 0 :(得分:6)

根据我对两种方法的经验:

  • 在大多数实际情况下,HtmlUnit比使用xvfb的真实浏览器更快 - 仅仅因为它不花时间渲染页面。 (一个数据点:17秒.Html驱动程序与62秒。我正在使用的特定测试套件的FirefoxDriver。)
  • 使用HtmlUnit更容易同时运行多个测试 - 并且它消耗的资源更少。如果您有大量测试并且需要它们快速完成(例如,您希望遵循10分钟构建规则),这可能非常重要。
  • 正如你所说,HtmlUnit有自己的JavaScript和DOM的怪癖。没有比任何其他浏览器更好或更差(Firefox,Safari,IE,Chrome,...... - 它们都有自己的怪癖),但是花一些时间来修复bug是非常值得怀疑的。我也发现这样的错误很难诊断,但这可能只是我的无知。
  • 真正的浏览器+ xvfb的一个优点是你总是可以在没有xvfb的情况下使用完全相同的测试,看看发生了什么 - 甚至可以使用控制台来运行一些JavaScript来诊断问题。在使用HtmlUnit时,我有时会感到非常盲目,而且由于上述怪癖,你不能总是在两种环境中使用相同的测试代码。

因此,总而言之,除非总测试持续时间很重要并且您已准备好花一些时间来对抗HtmlUnit,否则使用常规浏览器+ xvfb会更容易。

我也喜欢使用xvnc,它的另一个好处是允许你连接到正在运行的测试的屏幕,看看是怎么回事(不确定你是否可以用xvfb做到这一点)。