Selenium webdriver HtmlUnitDriver(HtmlUnit)与GhostDriver(PhantomJS)? 我们在选择“强”无头浏览器驱动程序解决方案,这将是SeleWebDelphi的一些实现。 有,它在一端利用后端中的,另一端基于

Selenium webdriver HtmlUnitDriver(HtmlUnit)与GhostDriver(PhantomJS)? 我们在选择“强”无头浏览器驱动程序解决方案,这将是SeleWebDelphi的一些实现。 有,它在一端利用后端中的,另一端基于,selenium-webdriver,phantomjs,htmlunit,ghostdriver,htmlunit-driver,Selenium Webdriver,Phantomjs,Htmlunit,Ghostdriver,Htmlunit Driver,PhantomJS使用Safari的渲染引擎WebKit来渲染页面,而HtmlUnitDriver使用Rhino引擎,这是其他浏览器无法使用的(这只是“模拟”浏览器行为。最后一个事实被认为是一个缺点,因为渲染行为可能与流行的浏览器有很大的不同 在我们看来,PhantomJS是一个更强的候选人。但是,我们不知道一切:)在我们的决定中还有其他考虑因素和权衡吗?HtmlUnitDriver可以成为更好解决方案的其他场景 根据我对许多无头浏览器的经验,我想说: HtmlUnitDriver:我遇到的所有

PhantomJS使用Safari的渲染引擎WebKit来渲染页面,而HtmlUnitDriver使用Rhino引擎,这是其他浏览器无法使用的(这只是“模拟”浏览器行为。最后一个事实被认为是一个缺点,因为渲染行为可能与流行的浏览器有很大的不同


在我们看来,PhantomJS是一个更强的候选人。但是,我们不知道一切:)在我们的决定中还有其他考虑因素和权衡吗?HtmlUnitDriver可以成为更好解决方案的其他场景

根据我对许多无头浏览器的经验,我想说:

HtmlUnitDriver:我遇到的所有实现中速度最快的,非常适合于简单的静态页面,尤其是那些没有JavaScript的页面。任何远程复杂的页面似乎都会产生问题——这是我的实践经验,即使我不能详细说明理由。非常适合在演示页面、抓取状态页面等上测试Selenium功能

PhantomJSDriver(PhantomJS+GhostDriver):与桌面浏览器相比,速度不如您希望的快,但是,设置起来比Firefox+xvfb容易得多。默认情况下,屏幕截图看起来有点奇怪,但这通常是因为PhantomJS默认为窄窗口,除非明确设置(请阅读下文了解原因)


更新:更多关于PhantomJS版本的详细信息,请参阅

与Safari一样,PhantomJS使用渲染(例如Firefox使用Gecko)

不同的PhantomJS版本是针对不同的WebKit版本构建的。PhantomJS2.xWebKit538.x,这使得。而PhantomJS1.9.8WebKit 534.34,相当于Safari 5

这对你来说可能是个问题,因为谷歌认为Safari 5是一个“老”浏览器,因此可能会出现这种情况

因此,确保使用PhantomJS 2.x可以减少许多人报告的与桌面浏览器的渲染差异


另一个有趣的可能性是。然而,我还没有让它足够可靠地工作

无论是HtmlUnitDriver还是PhantomJSDriver,我都从来没有遇到过可靠性问题(唯一令人烦恼的是一个问题)

(在回答关于修改HTTP请求的评论时,我个人建议坚持使用WebDriver API,并使用代理来改变请求和响应,而不是利用浏览器特有的功能。)

总而言之,我建议不要创建一种工具或流程,这种工具或流程会迫使用户选择一种浏览器而不是另一种浏览器。如果可能,允许它们进行配置或覆盖。在大多数情况下,我会选择幻影,因为它不会让你失望。但是,对于最简单的页面,应该考虑HtmlUnit的性能


另请参见(也许):在过去几年中,我在一些项目中使用了phantomJS,但经常遇到问题。例如,页面上的javascript行为与chrome、firefox和internet explorer不同。有些页面根本没有加载,可能是因为重定向,但我不是肯定的(例如,keydape登录页面)

我没有那么多地使用HtmlUnit,但当我键入它时,它为我避免了在使用KeyClope登录页面的测试中出现上述一些幻影问题。

幻影JS开发已经完成,而Chrome和Firefox已经添加了headless模式


这意味着,如果您想要接收更新,您应该使用HtmlUnit,或者使用无头驱动程序。

HtmlUnit的好处是您可以修改http请求,创建自定义请求,等等,谢谢Arya。你想总结成“答案”,这样我就可以为下一代接受它了?@Arya-很有趣。那么HtmlUnitDriver可以很好地与单元测试配合使用?我得调查一下。谢谢。@djangofan我从未使用过HtmlUnitDriver(含Selenium的那个),我直接使用HtmlUnit。另外,如果有很多javascript,您可能不想使用HtmlUnit。使用HtmlUnit有优点也有缺点。@Arya-是的,这就是我的意思。