WebDriver BiDi готов к работе в Firefox, Chrome и Puppeteer

Буквально на прошлой неделе вместе с BrowserStack мы объявили, что WebDriver BiDi становится готовым к использованию в BrowserStack . На этой неделе лето WebDriver BiDi продолжается: Firefox 129 и Puppeteer 23 получают готовую к использованию поддержку WebDriver BiDi!

Mozilla активно сотрудничает с WebDriver BiDi уже более четырех лет, сначала помогая формировать новый стандарт, а затем постепенно внедряя его в Firefox, аккуратно документируя свой прогресс в информационном бюллетене Firefox WebDriver .

Теперь, когда WebDriver BiDi готов к использованию в Firefox, Puppeteer начиная с версии 23 предлагает стабильную поддержку Firefox через WebDriver BiDi. Это позволяет автоматизировать Firefox с помощью того же лаконичного API, что и Chrome. Поддержка Puppeteer протокола Chrome DevTools (CDP) осталась неизменной.

Firefox, CDP и Puppeteer

Puppeteer — это надежный инструмент для разработчиков, позволяющий автоматизировать браузеры на базе Chromium с использованием протокола Chrome DevTools, также известного как CDP. В 2019 году Puppeteer получил экспериментальную поддержку Firefox.

Чтобы это работало, Mozilla реализовала и поддерживала подмножество CDP в Firefox. Это решение позволяло автоматизировать Firefox с помощью Puppeteer API, но имело оговорки:

  • Как следует из названия, CDP используется DevTools Chrome и должен меняться в соответствии с требованиями DevTools.
  • CDP не стандартизирован в общедоступной спецификации, и его поддержание в Firefox требует постоянного взаимодействия и усилий.
  • Поскольку Firefox реализовал только часть CDP, Puppeteer никогда не мог гарантировать полную работу своего API с Firefox, что создавало путаницу для пользователей.

Хотя мы рады, что поддерживаем эту поддержку вместе с Mozilla в течение последних нескольких лет, мы всегда знали, что это не постоянное решение. Опираясь на это партнерство и привлекая других крупных поставщиков браузеров и инструментов , мы вместе создали WebDriver BiDi.

Командная работа делает мечту реальностью

Команда Firefox активно работает над реализацией WebDriver BiDi в Firefox. В то же время команда Puppeteer расширяет поддержку WebDriver BiDi в API Puppeteer. Цель, над которой работали обе команды, заключалась в том, чтобы сделать все API, необходимые для сценариев использования автоматизации производства, доступными с помощью WebDriver BiDi в Puppeteer, гарантируя поддержку как в Chrome, так и в Firefox.

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

Это позволяет пользователям Puppeteer выбирать Firefox или Chrome для своей автоматизации, указав ключ конфигурации browser при запуске экземпляра Puppeteer.

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

Чтобы узнать больше о новых возможностях Firefox 129 и работе Mozilla над WebDriver BiDi, прочтите соответствующую публикацию в блоге Mozilla Hacks .

Поддержка CDP в будущем

В приведенном выше фрагменте кода показано, что для автоматизации Chrome с использованием WebDriver BiDi с Puppeteer вам необходимо явно установить protocol webDriverBiDi . Это связано с тем, что для Chrome Puppeteer по умолчанию будет использовать CDP — чтобы не нарушать существующие механизмы автоматизации, но также продолжать поддерживать автоматизацию, специализированную для функций Chrome.

Поддержка CDP в Firefox устарела, начиная с Firefox 129, и ее планируется удалить в конце 2024 года . Если у вас уже есть средства автоматизации, основанные на поддержке CDP в Firefox, мы настоятельно рекомендуем перейти на WebDriver BiDi. Если это невозможно, напишите по адресу dev-webdriver@mozilla.org и сообщите свой вариант использования.