Ответ 1
Из моего опыта работы с несколькими браузерами без головы я бы сказал:
HtmlUnitDriver: самая быстрая из всех реализаций, с которыми я столкнулся, и идеально подходит для простых статических страниц, особенно без JavaScript. Кажется, что любая удаленно сложная страница создает проблемы - это мой практический опыт, даже если я не могу обосновать подробно. Идеально подходит для тестирования функций Selenium на демонстрационных страницах, страниц соскабливания и т.д.
PhantomJSDriver (PhantomJS + GhostDriver): не так быстро, как вы могли бы надеяться, и настольные браузеры, однако, гораздо проще настроить, чем Firefox + xvfb. По умолчанию скриншоты могут выглядеть немного странно, но , что обычно оказывается потому, что PhantomJS по умолчанию имеет узкое окно, если явно не установлено (читайте ниже почему).
Обновить: немного подробнее о версиях PhantomJS, от моего другого ответа.
Как и Safari, PhantomJS использует WebKit для рендеринга (например, Firefox использует Gecko)
Различные версии PhantomJS создаются для разных версий WebKit. PhantomJS 2.x использует WebKit 538.x, что делает его эквивалент Safari 7 или 8. тогда как PhantomJS 1.9.8 использует WebKit 534.34, что эквивалентно Safari 5.
Это может быть проблемой для вас, поскольку Google определяет Safari 5 как "старый" браузер и поэтому потенциально по-разному отображает страницы поиска.
Таким образом, гарантируя, что вы используете PhantomJS 2.x, можно уменьшить различия в рендеринге, которые многие люди сообщают против настольных браузеров.
Еще одна интересная возможность - SlimerJS. Тем не менее, я еще не получил его достаточно надежно.
У меня никогда не было проблем с надежностью ни с HtmlUnitDriver, ни с PhantomJSDriver (единственным раздражающим было HttpClient 4.5/HtmlUnit 2.17 проблема несовместимости).
(В ответ на комментарий об изменении HTTP-запросов я лично рекомендую придерживаться API WebDriver и использовать прокси, например BrowserMob, чтобы мутировать запросы и ответы, а не использовать особенности, характерные для браузера.)
В целом, я бы посоветовал не создавать инструмент или процесс, чтобы заставлял выбирать один браузер над другим. Если возможно, позвольте им настроить или переопределить. В большинстве случаев я был бы пухлым для PhantomJS, так как он вас не подведет. Тем не менее, производительность HtmlUnit следует рассматривать для простейших страниц.
См. также (возможно): http://www.guru99.com/selenium-with-htmlunit-driver-phantomjs.html и < а10 >