Cuprite: headless Chrome драйвер на Ruby для Capybara
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, создание скриншотов, анализ трафика и полный детальный обработчик событий мыши и клавиатуры: все, что вам может понадобиться для автоматического тестирования веб-сайтов или приложений, у вас под рукой!