gwt – HtmlUnitDriver的可靠性如何?

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

总的来说,我想知道人们的经验是什么,HtmlUnitDriver作为一个可靠的工具,可以“信任”导航网站基本上与其他浏览器一样.

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

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

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

解决方法

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

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

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

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

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

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

相关文章

Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解