Исходя из моего опыта использования HtmlUnitDriver, я бы сказал, что если вы не используете его в качестве базового браузера при написании тестов, то преобразование их в него становится чем-то вроде кошмара.Это особенно верно, когда речь идет о тяжелых сайтах javascript.
Основной причиной этого является очевидное базовое использование htmlunit, которое по умолчанию использует движок javascript Rhino.В прошлом мне всегда приходилось указывать, что HtmlUnitDriver запускает htmlunit с помощью движка JavaScript Firefox.Это, по большей части, решило проблемы с JavaScript, которые я обнаружил при запуске тестов с использованием HtmlUnitDriver.
Одна из самых больших проблем, с которыми я столкнулся при использовании одного и того же тестового кода для каждого браузера, заключалась в том, если наНа тестируемом сайте разработчики пользовательского интерфейса назначили события javascript, такие как onClick()
, html-элементам, таким как <span>
.
. Причина этого заключается в том, что если вы используете метод WebDriver .click()
дляWebElement, представляющий <span>
, тогда htmlunit ничего не будет делать (он ожидает, что onClick()
будет вызываться для таких элементов, как <input>
).Чтобы обойти это, мне пришлось вручную вызвать событие click()
в javascript.Вы можете сделать это либо с помощью JavascriptExecutor WebDriver, либо с помощью .fireEvent() method
.
от Selenium и WebDriverBackedSelenium. Поэтому, если ваш сайт использует такие события, то я бы сказал, что переключение на использование HtmlUnitDriver может быть большой задачей.
Несмотря на это, я фактически использую HtmlUnitDriver для всех своих тестов.Однако некоторое время назад я испытывал трудности, связанные с обнаружением всего вышеперечисленного, поэтому теперь при написании тестов используйте HtmlUnitDriver в качестве базового браузера.