Буквально на прошлой неделе вместе с 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 и сообщите свой вариант использования.