Selenium vs HtmlUnit?

Я пытаюсь лучше понять структуру тестирования и изучаю Selenium. Я использовал HTMLUnit и раньше, в основном, когда мне нужно было почистить какую-то информацию на сайте или в лайках.

Каковы преимущества/недостатки Selenium по сравнению с HTMLUnit в контексте автоматизации написания тестов? Мне кажется, что Selenium сложнее настроить, чем HTMLUnit, хотя в то же время существует HTMLUnitDriver для Selenium, который, я думаю, ведет себя точно так же, как и в самом HTMLUnit?

Очевидно, что Selenium предоставляет более надежную платформу, он имеет Selenium RC для параллельного тестирования, он также имеет различные драйверы браузера, которые можно использовать - хотя при использовании драйверов браузера тест фактически открывает/закрывает приложение браузера, а не без заголовка.

Может быть, я не правильно понимаю Selenium. Некоторые направления и указатели были бы великолепны!

Еще одно замечание - отдельный вопрос - я также смотрю на автоматическое тестирование на мобильном браузере, я вижу, что у Selenium есть IPhoneDriver для него, но тогда это тоже не тестирование без головы, так как для этого требуется настоящий симулятор iOS.

Есть ли возможность проводить безголовое тестирование на мобильных сайтах? Будет ли достаточно изменения пользовательского агента? Я видел пару сообщений об изменении пользовательского агента, которые, кажется, имеют свои собственные проблемы, например. Установить user-agent в Selenium RC

Большое спасибо!

Ответ 1

хорошо, попытался бы объяснить различия в деталях.

Говоря о параллельном тестировании, лучше использовать селеновую сетку. Основная концепция селена RC и селеновой сетки. traditional selenium setupselenium grid setupselenium grid:Requesting a Specific Environment Вы можете более подробно ознакомиться здесь

Несколько слов о selenium webDriver:

Основной новой функцией Selenium 2.0 является интеграция API WebDriver. WebDriver предназначен для обеспечения более простого и более сжатого интерфейса программирования наряду с устранением некоторых ограничений в Selenium-RC API. Selenium-WebDriver был разработан для лучшей поддержки динамических веб-страниц, где элементы страницы могут меняться без перезагрузки самой страницы. Цель WebDrivers - предоставить хорошо продуманный объектно-ориентированный API, который обеспечивает улучшенную поддержку современных проблем тестирования веб-приложений.

Как WebDriver "управляет браузером по сравнению с Selenium-RC?

Selenium-WebDriver совершает прямые вызовы в браузере, используя собственную поддержку для автоматизации на основе браузеров. Как выполняются эти прямые вызовы, а поддерживаемые функции зависят от используемого вами браузера. Информация о каждом "драйвере браузера" предоставляется далее в этой главе. Для тех, кто знаком с Selenium-RC, это сильно отличается от того, к чему вы привыкли. Selenium-RC работал одинаково для каждого поддерживаемого браузера. Он ввел функции javascript в браузер, когда браузер был загружен, а затем использовал свой javascript для управления AUT в браузере. WebDriver не использует эту технику. Опять же, он управляет браузером напрямую, используя браузеры, встроенные в поддержку автоматизации.

WebDriver и сервер Selenium

Вы можете или не нуждаетесь в Selenium Server, в зависимости от того, как вы собираетесь использовать Selenium-WebDriver. Если вы будете использовать только API WebDriver, вам не нужен Selenium-Server. Если ваш браузер и тесты будут работать на одном компьютере, а ваши тесты будут использовать только API WebDriver, вам не нужно запускать Selenium-Server; WebDriver будет запускать браузер напрямую. Однако есть несколько причин использовать Selenium-Server с Selenium-WebDriver.

  • Вы используете Selenium-Grid для распространения тестов по нескольким машин или виртуальных машин (VM).
  • Вы хотите подключиться к удаленному компьютеру с определенным браузером версии, которая не находится на вашем текущем компьютере.
  • Вы не используете привязки Java (т.е. Python, С# или Ruby) и хотел бы использовать драйвер HtmlUnit

Драйверы Selenium-WebDrivers WebDriver - это имя ключевого интерфейса, на котором должны быть написаны тесты, но существует несколько реализаций. К ним относятся:

Драйвер HtmlUnit В настоящее время это самая быстрая и легкая реализация WebDriver. Как следует из названия, это основано на HtmlUnit. HtmlUnit - это Java-реализация WebBrowser без GUI. Для любого языкового связывания (кроме java) Selenium Server должен использовать этот драйвер.

Доводы

  • Самая быстрая реализация WebDriver
  • Чистое решение Java и поэтому оно независимо от платформы.
  • Поддержка JavaScript

против

  • Эмулирует поведение JavaScript других браузеров (см. ниже)

JavaScript в драйвере HtmlUnit Ни один из популярных браузеров использует механизм JavaScript, используемый HtmlUnit (Rhino). Если вы тестируете JavaScript с использованием HtmlUnit, результаты могут существенно отличаться от этих браузеров. Когда мы говорим "JavaScript", мы имеем в виду "JavaScript и DOM". Хотя DOM определяется W3C, каждый браузер имеет свои собственные особенности и различия в их реализации DOM и в том, как JavaScript взаимодействует с ним. HtmlUnit имеет впечатляюще полную реализацию DOM и имеет хорошую поддержку для использования JavaScript, но ничем не отличается от любого другого браузера: он имеет свои собственные особенности и отличия как от стандарта W3C, так и от реализаций DOM основных браузеров, несмотря на его способность имитировать другие браузеры. С WebDriver мы должны были сделать выбор; можем ли мы включить возможности JavaScript HtmlUnits и риск того, что команды столкнутся с проблемами, которые только проявляются там, или мы отключим JavaScript, зная, что все больше сайтов, которые полагаются на JavaScript? Мы приняли консервативный подход и по умолчанию отключили поддержку, когда используем HtmlUnit. С каждой версией WebDriver и HtmlUnit мы переоцениваем это решение: мы надеемся включить JavaScript по умолчанию в HtmlUnit в какой-то момент.

Чтобы исследовать глубже в webDriver setUp, см. this

Из Документация HtmlUnit: HtmlUnit не является общей схемой тестирования модулей. Это, в частности, способ имитации браузера для целей тестирования и предназначен для использования в других рамках тестирования, таких как JUnit или TestNG.

Итак, , чтобы заключить разницу Selenium и HtmlUnit: HtmlUnit - это реализация Java WebBrowser без GUI и способ имитации браузера для целей тестирования, а Selenium-WebDriver делает прямые вызовы в браузере, используя каждую поддержку для автоматизации браузеров. мы можем видеть, что HtmlUnit предоставляет API без возможности использования GUI для автоматизации, тогда как WebDriver предоставляет возможности внутренних браузеров для автоматизации.

Говоря о мобильной автоматизации, В Selenium также есть драйвер для iPhone статья о драйверах iPhone и Android Driver  Страница wiki для драйверов Android

См. также эту презентацию

К сожалению, я не могу дать вам оценку моего опыта работы с мобильными драйверами, поскольку я занимаюсь веб-автоматизацией (без мобильных устройств). Также знайте, что Cucumber (инструмент автоматизации) популярен среди мобильных автоматов. см. и .

Надеюсь, теперь вам станет легче для вас. =)

Ответ 2

Selenium и HTMLUnit несколько схожи по своей концепции, но Selenium более зрелый/надежный и имеет гораздо больше возможностей.

Обратите внимание, что Selenium включает плагин для записи (IDE) для Firefox, который позволяет записывать тесты и среду автоматизации RC/WebDriver, которая по существу управляет браузером. Эти два могут использоваться вместе, чтобы сделать создание теста очень простым.

Единственное преимущество, которое я мог видеть в использовании HTMLUnit, заключается в том, что он менее ресурсоемкий, поэтому вы можете запускать тесты на меньшем количестве аппаратных средств, но с параллельной поддержкой Selenium, даже если это не так.

Ответ 3

При выполнении тестов из Jenkins за одну ночь вы обычно не имеете доступа к системе окон, например X11 или Windows, для запуска веб-браузера. Поэтому я вижу преимущество использования веб-драйвера HTMLUnit в этом случае, поскольку он не требует доступа к системе окон.

Ответ 5

Я использовал Selenium WebDriver для автоматизации. Есть очень простой способ заставить браузер быть без головы. Просто примените ChromeOptions (в моем случае доступны другие DriverOptions) ChromeOptions ("Безголовый")

Есть много искусных методов, которые могут возникнуть из-за использования Options или Services, в качестве другого примера. Это не даст "появиться" окну Driver/CommandPrompt, поэтому оно останется "тихим" и неэкспонированным. ChromeDriverServices ("Тихий")

Надеюсь это поможет.