总的来说,我想知道人们的经验是什么,HtmlUnitDriver
作为一个可靠的工具,可以“信任”导航网站基本上与其他浏览器一样.
当然,我意识到“其他浏览器的做法”非常模糊;自然每个浏览器都会有它的怪癖.但我正处于一个项目中,我们有数百个验收测试场景(编写于JBehave)并使用FirefoxDriver
和InternetExplorerDriver
,所有这些都需要两个多小时,从持续集成的角度来看,这是一种粗略的.所以我想知道我们是否至少可以将接受测试转换为使用HtmlUnitDriver,并期望更快的时间与大多数相同的行为(也许我们可以期待少数测试失败使用HtmlUnitDriver并专门运行这些测试使用基于浏览器的驱动程序).
我们的UI使用GWT,这可能会或可能不会使事情复杂化(我不知道).
基本上,在其他人的经验中,HtmlUnitDriver是否与其他浏览器一样运行,或者它是否真的只适用于使用最少JavaScript的非常简单的HTML网站,不应该用于企业Web应用程序?
解决方法
主要原因是htmlunit的明显底层使用,默认情况下使用Rhino javascript引擎.在过去,我总是必须指定HtmlUnitDriver使用Firefox的javascript引擎启动htmlunit.在大多数情况下,这解决了我在使用HtmlUnitDriver运行测试时发现的javascript问题.
在为每个浏览器使用相同的测试代码时,我遇到的最大问题之一是,在测试的网站上,UI开发人员已将javascript事件(如onClick())分配给html元素,例如< span> .
这样做的原因是,如果你在表示< span>的WebElement上使用WebDriver的.click()方法,那么htmlunit将不会做任何事情(它希望在诸如<的元素上调用onClick().输入>).
为了解决这个问题,我不得不在javascript中手动调用click()事件.您可以使用WebDriver的JavascriptExecutor或使用WebDriverBackedSelenium和Selenium的.fireEvent()方法来完成此操作.
因此,如果您的网站使用此类事件,那么我会说切换到使用HtmlUnitDriver可能是一项艰巨的任务.
尽管如此,我实际上使用HtmlUnitDriver进行所有测试.但是,我经历了一段时间后发现上述所有内容的痛苦,所以现在在编写测试时使用HtmlUnitDriver作为我的基线浏览器.