На самом деле 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
distroid
Т.к. сам много тестов пишу на Ruby с использованием Selenium, то, думаю стоит в статье дополнить:
Пример использования хрома, т.к. чаще его используют в тестах, а не firefox
Примеры, настройки режимов работы браузера (headless, размер экрана, таймауты)
Так же, раз в данной статье только начало - запуск браузера и навигация, думаю, стоит так же указать, как, проверить, что текущий урл, именно тот, куда мы хотели зайти. Как по мне, это важно.
Вот как раз настройки, то, с чем чаще всего приходится сталкиваться, в самом начале и гуглить часто бывает проблемно из-за разных версий WebDrivers и в целом, частных случаев настроек.
Кстати, что еще можно сказать, что этот же механизм, можно идеально использовать для парсинга сайтов, я так для AliExpress бота делал.
PS: если нужно, могу показать примеры, как я настраивал в тестах и для краулеров :)
sailordev Автор
@distroid.
Спасибо, за фидбек, очень приятно. Понял свои недоработки, постараюсь исправить ко второй части.
Это будет во второй части, там будет продолжение Selenium.
Так как сам работал с Firefox, думал будет правильней его привести в пример. Но постараюсь в следующих частях разделять спойлерами на две части одну тему:
Firefox
Chrome