生产中的HtmlUnit + Selenium

Ste*_*ven 12 java selenium webdriver htmlunit

我目前正在使用HtmlUnit和Selenium在我的生产代码中驱动它(WebDriver).

我正在以编程方式使用这些库进行各种网站的搜索和交互,并且取得了一些成功,并且没有遇到内存问题(确保会话始终被清理).

我想知道这些库是否适用于生产环境或推荐使用.由于有关自动化测试的大量信息而不是我如何使用它,因此很难通过Google找到.

我意识到这是一个相当普遍的问题,但我正在寻求关于这些库的建议以及可能更好的替代方案.

Gro*_*eek 11

WebDriver和Selenium非常适合生产环境.我现在已经在多机器/多数据中心分布式网格上广泛使用它们2年,并且绝对没有我们无法应对的性能和稳定性问题.

我们首选的驱动程序是Firefox(比HTMLUnit重,并且更难配置),我们必须调整网格以了解我们可以运行多少个实例.我们的最大稳定性是每个核心1个

我们的selenium/webdriver实例已经24/7运行2年了(1年使用selenium 1,另一个运行selenium 2/WebDriver逐步运行)并进行适当的监控(你应该监控内存使用/ CPU使用情况)和一堆负载测试,我们达到了良好的水平,我们经历了几个monthes而没有重新启动过程

我们也广泛使用HTMLUnit,并且对这个库同样满意

我的帖子的要点是:是的,这些库是生产就绪的.但是,作为所有生产软件,您必须对其使用进行基准测试,以找到最佳稳定性的适当配置.我建议您在生产中使用Selenium Grid,这是并行化流程的好方法


max*_*dim 5

我正在使用HtmlUnit进行类似的生产,并且遇到了很多问题 - 主要是性能相关的.目前我切换到HtmlUnit 2.10的快照版本,其中实现了一些对我性能改进很重要的(例如替换ArrayList.contains()HashSet.contains()on DomNode.addDomChangeListener()).

尽管如此,在JavaScript密集的页面上CPU负载相当高.通常,我不能在双核Linux机器上同时运行10个以上.我相信HtmlUnit仅在解释器模式下使用Rhino(JavaScript引擎),这非常慢.此外,您需要小心释放HtmlUnit使用的所有资源以避免内存泄漏.

总而言之,HtmlUnit设计用于运行相对较短的测试用例而不是长时间运行的服务器应用程序.可以对它进行足够的调整以使其可管理,但肯定会更好.

我发现的另一种方法是phantom-js,它是WebKit浏览器的无头版本,本机应用程序在运行JavaScript时要快得多.