» » » Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

 

Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

Автор: admin от 14-09-2018, 19:45, посмотрело: 29

Статья рассчитана на знакомоство с автотестированием и разверткой среды в Windows 10 и предназначена для тех, кто хоть чуть — чуть знает о Cucumber + Capybara + Selenium-webdriver. Идея для статьи появилась из-за различий в разворачивании окружения на Windows 10 и Linux.



Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

Пару слов о gem-ах (библиотеках) Cucumber + Capybara + Selenium-webdriver, которые нужны для запуска и наполнения проверками UI тесты.



Cucumber



Сucumber — гем, позволяющий писать тесты на человеческом языке. Для этого используется нотация Gherkin, которая определяет структуру и правила написания сценариев. Подробно почитать можно тут



Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

Capybara



Capybara — гем, позволяющий искать/кликать/… по элементам браузера. Т.е. представляет собой связующее звено между Cucumber шагами (steps) теста, и webdriver-ом (экземпляр вызываемого браузера). Здесь можно глянуть методы этого гема.



Selenium-webdriver



Selenium-webdriver — это инструмент для автоматизации действий веб-браузера. По сути это есть экзмеплял (инстанс) браузера.

скачать пробную версию на 30 дней.



Скачиваем Firefox и Хром для запуска тестов.



Скачиваем и устанавливаем Git (система управления версиями или аналоичная VCS, оффициальный сайт). Но Git нужен когда у Вас уже есть проект или вы хотите хранить свой код в Git системе.

[/spoiler]

Итак, начнем



У нас уже есть установленный RubyMine.




  • Нужно установить сам язык Ruby. Для этого идем сюда и ставим RubyInstaller. Я выбрал самый последний релиз (RubyInstaller 2.5.1-2) c пакетом DevKit. Через этот настроечный пакет можно запускать тесты из консольки, как в Linux, а также гибко управлять гемами.

  • Пакет RubyInstaller установлен и мы переходим к настройке.

    В случае если мы хотим создать проект новый, то открываем RubyMine и создаем пустой проект, указав установленный Ruby.



    Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

  • Далее нам нужно создать вот такую структуру папок и файлов согласно аннотации



    Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)

    Подробно описано здесь

  • Gemfile — содержит список гемов, которые используются в проекте



    [spoiler=Вот содержимое нашего гемфайла, с самыми основными гемами для UI тестов]
    source 'https://rubygems.org'
    
    gem 'cucumber'
    gem 'capybara'
    gem 'selenium-webdriver'
    gem 'chromedriver-helper' 


    [/spoiler]

    Эти 4 гема необходмо указать в Gemfile.

    gem 'chromedriver-helper' — хромдрайвер, позволяющий запускать тестики на Chrome

    С помощью данного Gemfile нужно установить наши избранные гемы. Устанавливать на Windows проще всего из интерфейса RubyMine: Меню Tools Bundler Install. Bundler — это тоже гем, но служит для управления гемами. Но также это можно сделать и из командной строки, которая находится в меню программ под именем Start Command Prompt…

    Кстати, при помощи этой командной строки можно и запускать тесты минуя RubyMine.


  • Файл env.rb — ключевой rb файл для запуска UI тестов. При инициализации переменных и файлов теста именно env.rb будет самым первым. В нем происходит регистрация браузера, на котором будут выполняться тестики. Готовый пример env.rb, где происходит регистрация Chrome, Firefox или даем понять что нам браузер и не нужен вовсе для выполнения тестов.

    Случаи когда не нужен бразуер — проверяем рест запросы, интеграционное тестирование, хотя и считается, что Cucumber тесты для этого не совсем подходят.



    [spoiler=Пишем env.rb]
    require 'capybara/cucumber'
    require 'selenium-webdriver'
    
    Capybara.register_driver :driver do |app|
      case ENV['DRIVER']
        when 'chrome'
          Capybara::Selenium::Driver.new(app, :browser => :chrome)
        when 'without_browser'
          Capybara.default_driver = :mechanize
        else
          client  = Selenium::WebDriver::Remote::Http::Default.new
          Capybara::Selenium::Driver.new(app, :browser => :firefox, port: 10000 + Random.rand(1000), http_client: client)
        end
    end
    
    Capybara.default_driver   = :driver
    Capybara.default_selector = :xpath 


    [/spoiler]

    Также, здесь нужно упомянуть вопрос версионности Firefox.

    Если у Вас установлен Firefox версии 46 или ниже, то для корректного запуска тестов нужен gem 'capybara' версии '2.53.4' или ниже.



    Если Firefox версии выше 46 — то он работает по другим принципам на основе «geckodriver» и поэтому для корректного запуска тестиков нужно установить geckodriver.



    [spoiler=Экскурс в причины за чем нужен geckodriver]До версии 47 версии драйвер автоматизации Firefox был всего лишь расширением, которое включалось в каждый клиент. Но это расширение было удалено из-за изменения политики, требющей теперь, чтобы все расширения подписывались Mozilla.



    Marionette — это новый драйвер, который поставляется вместе с Firefox. У этого драйвера есть собственный протокол, который несовместим с протоколом Selenium/WebDriver.



    Geckodriver — это сервер приложений, реализующий протокол Selenium/WebDriver. Он переводит команды Selenium и перенаправляет их в драйвер Marionette.

    [/spoiler]

    Важный ньюанс, после установки «geckodriver» нужно обязательно прописать системные пути, для того чтобы наш «geckodriver» нашелся при выполнении env.rb.



    [spoiler=системные пути]Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)
    [/spoiler]


  • Далее всего лишь осталось написать тестовый тест и запустить на Chrome, Firefox и без браузера :). Например, напишем несколько шагов для входа в почту mail.ru



    [spoiler=Описание шагов]
    # encoding: UTF-8
    # language: ru
    
    Given(/^Переходим на страницу "(.*?)"$/) do |page|
      visit page
    end
    
    Given(/^Вводим текст "(.*?)" в поле c id "(.*?)"$/) do |text, field_id|
      find("//input[@id='#{field_id}']").set(text)
    end
    
    Given(/^Выбираем текст "(.*?)" в выпадающем списке с id "(.*?)"$/) do |text, select_id|
      find("//select[@id='#{select_id}']/option[text()='#{text}']").click
    end
    
    Given(/^Нажимаем кнопку с текстом "(.*?)"$/) do |text|
      find("//input[@value='#{text}']").click
    end
    
    Given(/^Ожидаем (d+) секунд(?:|ы)$/) do |sec|
      sleep sec.to_i
    end 


    [/spoiler]


  • А также сам cucumber тест



    [spoiler=test.feature]
    # encoding: UTF-8
    # language: ru
    
    Функция: Открываем почту
    
      Сценарий: Открываем почту
    
        Дано Переходим на страницу "https://mail.ru/"
        И Вводим текст "dorian.grey.2019" в поле c id "mailbox:login"
        И Вводим текст "********" в поле c id "mailbox:password"
    
        Когда Выбираем текст "@inbox.ru" в выпадающем списке с id "mailbox:domain"
        Тогда Нажимаем кнопку с текстом "Войти"
    
        И Ожидаем 5 секунд


    [/spoiler]


  • Осталось лишь проверить все наши усилия и наслаждаться успешной работой UI тестов (в примере 1 теста) :). Осталась последняя настройка — настройка запуска тестов. Идем в меню RubyMine Edit Configurations Runner Options — Здесь как раз и производим выбор драйвера :)

    ENV['DRIVER'] из env.rb это и есть настройка запуска. И нам всего лишь нужно указать в Runner Options «DRIVER=firefox» или «DRIVER=chrome».




  • Запускаем,



    Как поднять проект тестирования на windows 10 (Cucumber + capybara + selenium-webdriver)


    Вот и все, успешных Вам Cucumber тестов!


    Источник: Хабр / Интересные публикации

    Категория: Веб-разработка

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *