Насколько надежен HtmlUnitDriver? - PullRequest
8 голосов
/ 18 марта 2011

Очевидно, что ответ на вопрос зависит от ряда факторов окружающей среды.

В общем мне интересно, что люди воспринимают как HtmlUnitDriver как надежный инструмент, которому можно «доверять» для навигации по сайту в основном так же, как в других браузерах делаем.

Конечно, я понимаю, что "то, что делают другие браузеры", довольно туманно; естественно, у каждого браузера есть свои причуды. Но я нахожусь в проекте, где у нас есть сотни сценариев приемочных испытаний (написанных в JBehave ) и использующих FirefoxDriver и InternetExplorerDriver, выполняющих все они занимают более двух часов, что довольно грубо с точки зрения непрерывной интеграции. Поэтому мне интересно, возможно ли, по крайней мере, выполнимо , что мы могли бы переключить наши приемочные тесты на использование HtmlUnitDriver и ожидать гораздо более быстрых времен с в основном таким же поведением (и, возможно, мы могли бы ожидайте, что несколько тестов потерпят неудачу при использовании HtmlUnitDriver и, в частности, запустите эти тесты с драйвером на основе браузера).

Наш пользовательский интерфейс использует GWT , что может усложнять или не усложнять ситуацию (я не знаю).

По опыту других, HtmlUnitDriver работает так же хорошо, как и другой браузер, или он действительно подходит только для очень простых HTML-сайтов с минимальным JavaScript и не должен использоваться для корпоративного веб-приложения?

1 Ответ

8 голосов
/ 27 марта 2011

Исходя из моего опыта использования 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 в качестве базового браузера.

...