{tortags,70,1}

Выступление Алексея Баранцева на онлайн-конференции Auto ConfeT&QA 2012.

Я расскажу, как запротоколировать выполнение тестов, разработанных с использованием инструмента Selenium, фреймворка TestNG и языка программирования Java.

Я не буду рассказывать о том, как сделать красивый отчёт о выполнении тестов.

Мой рассказ будет посвящен тому, как информацию собрать. Я считаю, что отчёт должен быть простым и коротким, потому что если тесты прошли успешно, детали их выполнения мало кого интересуют. Но если «тест упал» – приходит Специалист, чтобы решать Проблему, и он должен получить максимально полную информацию о том, что происходило. Поэтому основная задача протоколирования – сбор и сохранение информации.

Я не буду рассказывать о том, как сделать собственный фреймворк для протоколирования.

Вместо этого я покажу, как выжать максимум из того, что уже имеется в Selenium и TestNG. Разные библиотеки используют разные фреймворки протоколирования, я расскажу, как всё это перенаправить в единый фреймворк-фасад slf4j и при помощи фреймворка протоколирования logback сохранить всё в базу данных. При этом будут рассмотрены разные варианты запуска тестов – локально, удалённо, с использованием Selenium Grid, а также запуск тестов в облаках с использованием сервиса SauceLabs.

Также можно скачать исходный код примеров, которые демонстрировались во время выступления.

Чуть более года тому назад я написал статью, в которой рассказал, какими свойствами должен обладать "правильный" механизм запуска браузера. Эта статья должна была иметь продолжение, в котором я планировал описать реализацию такого механизма. Но желания не всегда совпадают с возможностями, и продолжение статьи тогда так и не появилось. Но некоторое время тому назад мы организовали рассылку "Сотня полезных советов про Selenium", в рамках этой рассылки среди прочих была написана и заметка про то, как правильно запускать браузер, и мы решили опубликовать её как самостоятельную статью.

Ниже описана реализация универсального механизма запуска браузера, обладающего следующими возможностями:

  • запуск браузера "по требованию", в момент первого использования,
  • повторное использование уже запущенного браузера,
  • автоматический перезапуск браузера, если требуется браузер с другими характеристиками,
  • автоматический запуск нового браузера, если предыдущий экземпляр недоступен,
  • автоматический перезапуск браузера после заданного количества использований,
  • автоматический останов браузера в конце, при завершении работы виртуальной машины Java.

К статье прилагается готовый проект, который содержит класс WebDriverFactory, реализующий этот механизм запуска браузера, а также ряд примеров его использования.

Сначала я вкратце опишу, как это работает (подробности читайте в коде :)), а потом прокомментирую примеры.

Автор: Алексей Баранцев

Эта статья является продолжением более общей статьи "Что такое Selenium?", в которой объясняется, какое положение занимает Selenium WebDriver среди других инструментов семейства Selenium.

Здесь я постараюсь рассказать более подробно о том, что такое Selenium WebDriver, и почему его бессмысленно сравнивать с TestComplete, QuickTest Pro и другими инструментами автоматизации тестирования. И дело не только в том, что Selenium WebDriver бесплатный и открытый – его столь же бессмысленно сравнивать с другими бесплатными инструментами, такими как Sahi или Robot Framework.

Почему?

Потому что Selenium WebDriver – это не инструмент для автоматизации тестирования.

А что же это такое?

На этот вопрос можно дать несколько разных ответов, сначала я дам короткие ответы, а потом – более подробные.

Кроме того, я объясню, почему Selenium WebDriver имеет такой убогий и неудобный в использовании интерфейс (набор команд), почему он не генерирует красивые отчёты и почему несмотря на всё это он настолько популярен :)

На всякий случай оговорюсь, что хотя в этой статье речь идёт про WebDriver, многие аргументы справедливы и в отношении Selenium RC, но я не буду ничего говорить специально про эту устаревшую версию, потому что её место – на свалке истории.

Итак, что такое Selenium WebDriver?

Автор: Алексей Баранцев

Время от времени мне приходится распутывать терминологические хитросплетения, связанные с употреблением словосочетаний, в которых встречается слово Selenium – Selenium 2.0, Selenium IDE, Selenium RC, Selenium WebDriver, Selenium Server, Selenium Grid.

Путаница возникает во многом из-за того, что нигде нет чёткого описания всех этих терминов на одной страничке, и я постараюсь восполнить этот информационный пробел.

{tortags,52,1}

Автор: Алексей Баранцев

Эта статья первоначально была написана как один из выпусков рассылки "Selenium 2.0: сотня полезных советов", но видя количество однотипных вопросов, которые после выхода версии Selenium 2.22 задаются в разных местах, мы решили опубликовать этот выпуск в виде статьи.

Версия Selenium 2.22 ознаменовалась появлением новой схемы запуска браузера Internet Explorer -- с помощью внешнего исполняемого файла. Эта новая схема полностью аналогична той, которая уже давно использовалась для запуска браузера Google Chrome.

Итак, отныне для того, чтобы запустить Internet Explorer, нужно дополнительно к основному дистрибутиву Selenium загрузить исполняемый файл IEDriverServer.exe. Он существует в двух вариантах – 32-битный и 64-битный, выбирайте тот, который соответствует битности браузера, в котором вы собираетесь запускать тесты.

Загружаете на свою машину нужный архив, распаковываете его – внутри находится единственный файл IEDriverServer.exe.

Если вы разрабатываете тесты на .Net -- этот файл нужно положить в директорию, в которой находится Selenium assembly.

Если вы разрабатываете тесты на Java, Python или Ruby -- этот файл нужно положить в один из каталогов, содержащихся в переменной окружения PATH, чтобы операционная система смогла найти и запустить его.

Теперь всё готово, и можно запускать драйвер. Как? Да точно так же, как раньше!

driver = new InternetExplorerDriver()

Но в отличие от всех предыдущих версий, при этом Selenium найдет и запустит файл IEDriverServer.exe, который, в свою очередь, запустит браузер.

А теперь небольшой FAQ:

Автор: Алексей Баранцев

Когда я начал готовить примеры для рассылки "Selenium 2.0: сотня полезных советов", передо мной встал вопрос выбора языка, на котором писать эти примеры.

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

В конце концов я остановился на промежуточном варианте: сложные примеры на Java, а простые -- на Groovy, это динамический язык, но весьма похожий на Java и выполняющийся на виртуальной Java-машине.

Но решающим фактором в пользу Groovy стало наличие симпатичной интерактивной консоли, в которой можно удобно экспериментировать со скриптами. Хотите -- выполните пример полностью, а хотите -- выделите фрагмент кода и выполните только его.

Впрочем, лучше один раз увидеть -- смотрите небольшой видеоролик про то, как отлаживать Selenium-скрипты в Groovy Console:

Go to top