Я использую HtmlUnit для чего-то похожего в производстве, и у меня было немало проблем - в основном связанных с производительностью. В настоящее время я переключился на версию снимка HtmlUnit 2.10, где были реализованы некоторые важные для меня улучшения производительности (например, замена ArrayList.contains()
на HashSet.contains()
на DomNode.addDomChangeListener()
).
Тем не менее, нагрузка на процессор довольно высока на JavaScript-страницах. Как правило, я не могу запустить более 10 из них одновременно на двухъядерном Linux. Я считаю, что HtmlUnit использует Rhino (движок JavaScript) только в режиме интерпретатора, что довольно медленно. Кроме того, вы должны быть осторожны с освобождением всех ресурсов, используемых HtmlUnit, чтобы избежать утечек памяти.
В целом, безусловно, заметно, что HtmlUnit был разработан для запуска сравнительно коротких тестовых случаев и недолговечных серверных приложений. Можно настроить его достаточно, чтобы он был управляемым, но, конечно, он мог бы быть лучше.
Другой подход, который я нашел многообещающим, - это phantom-js , который представляет собой безголовую версию браузера WebKit, родного приложения, которое намного быстрее работает на JavaScript.