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

Sat*_*hya 1 testing webdriver htmlunit xvfb

我是测试的新手.

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

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

我知道HtmlUnitDriver与javascript的效果不太好.但除此之外,选择其中一个有什么重大差异吗?

我将测试一个确实有一些javascript的web应用程序.

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

jsa*_*ata 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做到这一点).