HtmlUnitDriver的可靠性如何?

Dan*_*Tao 8 gwt webdriver acceptance-testing reliability htmlunit

显然,问题的答案取决于许多环境因素.

一般的,我想知道是什么人的经验与HtmlUnitDriver作为一个可靠的工具,它可以是"信任"来浏览网站基本相同的方式其他浏览器做.

当然,我意识到"其他浏览器的做法"非常模糊; 自然每个浏览器都会有它的怪癖.但我正处于一个项目中,我们有数百个验收测试场景(用JBehave编写)并且使用FirefoxDriverInternetExplorerDriver运行它们所需的时间超过两个小时,从持续集成的角度来看,这有点粗糙.所以我想知道我们是否可以将我们的验收测试转换为使用并且期望更快的时间与大多数相同的行为至少可行的(也许我们可以预期一些测试失败使用并专门运行那些测试基于浏览器的驱动程序).HtmlUnitDriverHtmlUnitDriver

我们的UI使用GWT,这可能会或可能不会使事情复杂化(我不知道).

基本上,在其他人的体验中,它的HtmlUnitDriver运行方式和其他浏览器一样,或者它是否真的只适用于使用最少JavaScript的非常简单的HTML网站,不应该用于企业Web应用程序?

bma*_*her 8

根据我使用HtmlUnitDriver的经验,我会说如果你在编写测试时不使用它作为基线浏览器,那么将它们转换为使用它会变得有点噩梦.当涉及到javascript繁重的网站时尤其如此.

主要原因是htmlunit的明显底层使用,默认情况下使用Rhino javascript引擎.在过去,我总是必须指定HtmlUnitDriver使用Firefox的javascript引擎启动htmlunit.在大多数情况下,这解决了我在使用HtmlUnitDriver运行测试时发现的javascript问题.

在为每个浏览器使用相同的测试代码时,我遇到的最大问题之一是,在测试的网站上,UI开发人员已经分配了javascript事件,例如onClick()html元素,例如a <span>.

这样做的原因是,如果你.click()在表示的WebElement上使用WebDriver的方法<span>,那么htmlunit将不会做任何事情(它期望onClick()在诸如a之类的元素上调用<input>).为了解决这个问题,我不得不click()在javascript中手动调用一个事件.您可以使用WebDriver的JavascriptExecutor或使用WebDriverBackedSelenium和Selenium来完成此操作.fireEvent() method.

因此,如果您的网站使用此类事件,那么我会说切换到使用HtmlUnitDriver可能是一项艰巨的任务.

尽管如此,我实际上使用HtmlUnitDriver进行所有测试.但是,我经历了一段时间后发现上述所有内容的痛苦,所以现在在编写测试时使用HtmlUnitDriver作为我的基线浏览器.