Главная / Блог / Cuprite — Ruby драйвер с открытым исходным кодом

Cuprite: headless Chrome драйвер на Ruby для Capybara

April 2020

Ferrum + Capybara = Cuprite

Cuprite — это драйвер для Capybara, который использует Ferrum — драйвер на чистом Ruby с минимальным количеством зависимостей для запуска headless Google Chrome.

Если вы уже используете Capybara, то Cuprite даёт все преимущества Ferrum, но без дополнительных усилий для переключения API. Поскольку Ferrum использует нативный протокол Chrome DevTools Protocol (CDP), ему не нужно чего-то особенного для работы Chrome или Chromium в headless режиме, в отличие от некоторых альтернативных решений.

Начало работы с Cuprite

Добавьте эти строки в ваш Gemfile и запустите установку зависимостей:

gem "cuprite", group: :test

Затем добавьте к вашей тестовой настройке:

require "capybara/cuprite"
Capybara.javascript_driver = :cuprite
Capybara.register_driver(:cuprite) do |app|
  Capybara::Cuprite::Driver.new(app, window_size: [1200, 800])
end

Если у вас уже есть тесты, написанные с использованием Poltergeist, то переход на Cuprite будет не сложнее, чем способ, описанный выше. Cuprite стремится к тому, чтобы его API было совместимо с Poltergeist API, где это возможно.

Управление браузером

Вы можете синтезировать события мыши с помощью page.driver.click, скроллинг с помощью page.driver.scroll_to и нажатие клавиш с помощью element.send_keys (нажатия клавиш отправляются на определенный узел DOM).

Используя page.driver.headers, вы можете переопределить отправляемые заголовки запроса, а page.driver.add_headersиспользовать, чтобы добавить заголовки к набору по умолчанию (эти изменения применяются ко всем последующим HTTP-запросам).

 

Ограничение сценариев

Если вы хотите запустить тест в ограниченной среде, у Cuprite есть инструменты для того, чтобы сделать это в виде белых и черных списков. При включении эти списки указывают URL-префиксы, которые разрешены или заблокированы для выполнения скрипта. Если вы не укажете белый список, все сценарии, не соответствующие URL-адресам в черном списке, будут разрешены. Если укажите, то будут выполняться только сценарии из указанных URL-адресов. Тщательное использование этих списков может помочь ускорить выполнение тестов: например, нужны ли вам стандартные сценарии веб-аналитики, которые выполняются в ваших тестах?

Задать URL-префиксы просто:

page.driver.browser.url_blacklist = ["http://www.example.com"]

и

page.driver.browser.url_whitelist = ["http://www.example.com"]

Под капотом

Если Cuprite API не делает то, что вам нужно для тестов напрямую, вы можете получить доступ к базовому экземпляру Ferrum для полного контроля действий в ваших тестах, например:

browser = page.driver.browser
browser.mouse.move(x: 123, y: 456).down.up

Объект browser предоставляет полный спектр API, которые предлагает Ferrum: навигация, отладка, выполнение сценариев, манипулирование DOM, создание скриншотов, анализ трафика и полный детальный обработчик событий мыши и клавиатуры: все, что вам может понадобиться для автоматического тестирования веб-сайтов или приложений, у вас под рукой!

 

Evrone всегда поощряет разработчиков работать над тем, что они любят, и вносить свой вклад в мир программного обеспечения, создавая open-source инструменты. Именно так родился драйвер Cuprite Ruby для Capybara. Под капотом Cuprite используется Ferrum, мы надеемся, что оба драйвера будут полезны при разработке проектов.
Дмитрий Воротилин
Team Lead, Machinio.com
Будем на связи
Прикрепить файл
Максимальный размер файла: 2 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.