Обложка первой статьи по QA Ruby
Обложка первой статьи по QA Ruby

На самом деле Ruby так же используют не только в веб-разработке, но и в тестировании веб-приложений/софта.
На Хабр-Карьера за минуту можно найти такие вакансии:

Собственно сподвигло меня написать данную серию статей нехватка материала на русском языке по этому направлению.
Мне нравится использовать Ruby в целом, кроме того, я просто хочу иметь ссылку для себя в будущем и чтобы поделиться с другими.

Темы всей серии статей
  • Ruby

  • Selenium

  • RSpec

  • Capybara

  • Авторская pdf-шпаргалка по HTML

  • CSS

  • Основные понятия QA-Тестирования

  • Docker

  • Git

Начинать мы будем только со знанием синтаксиса и самого языка Ruby. Постепенно набирая скиллы в свое "резюме". В конце каждой части, эти самые скиллы будут скапливаться в конце, в спойлере "Коробка скиллов по завершению данной части.".

Ruby.

Основы синтаксиса даются легко, дальше будет сложнее, но более понятно, так как язык является высокоуровневым и его девиз: "Лучший друг программиста!". Что под собой несет некоторые выводы:

  • Многие известные инструменты распространяются на Ruby.

  • Синтаксис приближен к простому языку.

  • Разработка на Ruby доставляет удовольствие и не съедает много времени на решение обычных-стандартных задач.

Как по-мне синтаксис и основы языка можно изучить за 0.5-1 месяц, используя бесплатные ресурсы в Интернете.
Примеры таковых:

  • RubyRush - изучение языка на практике с нуля, бесплатно.

  • YouTube - так как коммьюнити в России небольшое, курсов на ютубе немного, но все же они есть и среди них достаточно качественного материала.

Selenium.

Начало работы с Selenium.

Почему?
Selenium-WebDriver - по моему мнению один из самых мощных инструментов, которые я использовал для тестирования веб-серверов через браузер и автоматизации любых повторяющихся задач в веб-приложениях

Selenium и Ruby - отличный способ автоматизации тестирования веб-приложений. Отладка также упрощается, потому что вы можете видеть, как скрипт запускается в браузере шаг за шагом.

Как использовать Selenium с Ruby?

Я объясню, как запустить Selenium с помощью базового скрипта Ruby. Эта настройка будет независима от какой-либо платформы. Все, что требуется, это:

  • Веб-браузер, который может подключаться к Selenium. (Мой выбор Firefox)

  • Ruby Gem для Selenium.

  • Ruby на ПК.

Я хочу иметь простой скрипт, который можно было бы использовать практически в любой среде(Mac/Linux/Windows), в которой могут работать Ruby, Selenium и Firefox.

Стартуем?

  • Убедитесь, что у вас установлена последняя версия Ruby.

rvm install ruby-3.1.0
  • Устанавливаем Selenium-Webdriver gem.

gem install selenium-webdriver
  • Веб-браузер FireFox

    Большинство версий Firefox будут поддерживать Selenium. Версия Firefox, используемая в этих статьях: 46.0.1 (она может меняться, взависимости от части)

Первый шаг: проверка соединения

Я всегда хочу провести простой тест, чтобы убедиться, что каждый компонент может связываться друг с другом. Здесь мы хотим убедиться, что скрипт Ruby может загрузить библиотеку Selenium и запустить Firefox.

4.1.0 :001 > require 'selenium-webdriver'
 => true
4.1.0 :002 > browser = Selenium::WebDriver.for :firefox
 => #<Selenium::WebDriver::Driver:0x..f96ee1c90b443ac24 browser=:firefox>

Советы по решению проблем, если Firefox не запускается:

  • Проверьте список проблем в Github-репозитории Selenium.

  • Уточните не стоит ли у вас Selenium WebDriver 4.0.1 (у меня с ним возникали проблемы). Обновитесь до последней версии (4.1.0).

  • Попробуйте использовать более старую версию Firefox, если приведенный выше скрипт не работает.

Заметка. если Firefox не установлен, будет выдано:

browser = Selenium::WebDriver.for :firefox
Selenium::WebDriver::Error::WebDriverError: Could not find Firefox
binary (os=macosx).
Make sure Firefox is installed or set the path manually with
Selenium::WebDriver::Firefox::Binary.path=

Второй шаг: загружаем веб-страницу посредствам Selenium

Следующий наиболее важный шаг - сообщить браузеру (программно), как загрузить веб-адрес, чтобы он мог перейти на сайт. Есть много способов сделать это, но обычно я делаю это так: после запуска браузера выполните следующие команды.

4.1.0 :004 > browser
 => #<Selenium::WebDriver::Driver:0xf0cec284e895d64 browser=:firefox>
4.1.0 :005 > browser.navigate.to 'http://https://habr.com/ru/publication/new'
 => ""

Советы по решению проблем, если адрес не загрузился:

  • Убедитесь, что браузер запущен. Если окно браузера было закрыто случайно, перезапустите его, инициализировав другой экземпляр:

4.1.0 :006 > browser2 = Selenium::WebDriver.for :firefox
  => #<Selenium::WebDriver::Driver:0xe0ced172e885e32 browser=:firefox>
4.1.0 :007 > browser2.navigate.to 'http://https://rubyrush.ru/'

Чтобы статья не была перегруженной, я разделил материал на несколько статей с погружением в QA Ruby.
Сейчас весь текстовый материал готов, подготавливается красивое оформление статей и пару интересных вставок в них.


Что стоит ждать во второй статье:

  • Больше советов по решению проблем, если адрес не загрузился.

  • Как выбрать элементы на сайте.

  • Выбор элементов, которые связанны при помощи тэга ID.
    Дополнение: Советы по решению проблем, если выбор по идентификатору не работает

  • Выбор элементов по их классу.

  • Выбор элементов по "Xpath".

  • Моя красивая pdf-шпаргалка по HTML, для быстрого ориентирования по элементам.

Продолжение следует...

Коробка скиллов по завершению данного этапа.
  • Ruby - Youtube/RubyRush

  • Git - YouTube

  • SQLite - RubyRush

Данила Кравченко

Ruby-разработчик / Ведущий RubyDigest на habr.com

Комментарии (2)


  1. distroid
    13.01.2022 16:36
    +1

    Т.к. сам много тестов пишу на Ruby с использованием Selenium, то, думаю стоит в статье дополнить:

    1. Пример использования хрома, т.к. чаще его используют в тестах, а не firefox

    2. Примеры, настройки режимов работы браузера (headless, размер экрана, таймауты)

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

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

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


    PS: если нужно, могу показать примеры, как я настраивал в тестах и для краулеров :)


    1. sailordev Автор
      13.01.2022 16:46
      +1

      @distroid.
      Спасибо, за фидбек, очень приятно. Понял свои недоработки, постараюсь исправить ко второй части.

      Примеры, настройки режимов работы браузера

      Это будет во второй части, там будет продолжение Selenium.

      Пример использования хрома, т.к. чаще его используют в тестах, а не firefox

      Так как сам работал с Firefox, думал будет правильней его привести в пример. Но постараюсь в следующих частях разделять спойлерами на две части одну тему:

      • Firefox

      • Chrome