W zeszłym tygodniu, razem z BrowserStack, ogłosiliśmy, że WebDriver BiDi produkcyjnego środowiska pracy w stosunku do przeglądarek. W tym tygodniu lato WebDriver BiDi trwa Przeglądarki Firefox 129 i Puppeteer 23 otrzymują gotowe wsparcie dla technologii WebDriver BiDi!
Mozilla od ponad 4 lat współpracuje przy WebDriver BiDi pomagając nam opracowywać nowy standard, a potem stopniowo wdrażać w Firefoksie, dokumentując swoje postępy w Firefox WebDriver Newsletter.
Dzięki WebDriver BiDi w wersji 23 przeglądarki Firefox, Puppeteer, już gotowe do wykorzystania w środowisku produkcyjnym zapewnia stabilną obsługę przeglądarki Firefox za pomocą technologii WebDriver BiDi. Pozwala to zautomatyzować Firefox z tym samym zwięzłym interfejsem API co Chrome. Obsługa Chrome przez Puppeteer Protokół CDP (DevTools Protocol) pozostaje bez zmian.
Firefox, CDP i Puppeteer
Puppeteer to niezawodne narzędzie dla programistów do automatyzowania przeglądarek opartych na Chromium za pomocą Chrome. protokół DevTools (nazywany też CDP). W 2019 roku Puppeteer uzyskał wsparcie eksperymentalne dla przeglądarki Firefox.
Aby to umożliwić, Mozilla wdrożyła i utrzymywała podzbiór CDP w Firefox. Dzięki temu rozwiązaniu Firefoksa można zautomatyzować za pomocą interfejsu API Puppeteer, ale wiąże się z zastrzeżeniami:
- Jak sama nazwa wskazuje, CDP jest używane w Narzędziach deweloperskich w Chrome i trzeba je zmienić z wymaganiami Narzędzi deweloperskich.
- Platforma CDP nie jest ustandaryzowana we wspólnej, publicznej specyfikacji, a utrzymanie jej w przeglądarce Firefox wymagało stabilnej komunikacji i wysiłek.
- W przeglądarce Firefox zaimplementowano tylko podzbiór CDP, dlatego firma Puppeteer nigdy nie mogła zapewnić zgodność pełnego interfejsu API z przeglądarką Firefox, co powoduje zamieszanie.
Cieszymy się, że mogliśmy kontynuować, wraz z Mozillą w ostatnich latach zawsze wiedzieliśmy, że nie jest to trwałe rozwiązanie. Bazując na tym oraz w tym z innymi czołowymi dostawcami przeglądarek i narzędzi, wspólnie stworzyliśmy WebDriver BiDi.
Praca w zespole sprawia, że marzenia się spełniają
Zespół Firefoksa pracował nad wdrożeniem funkcji WebDriver BiDi w przeglądarce Firefox. Jednocześnie zespół Puppeteer rozszerza obsługę WebDriver BiDi w interfejsie Puppeteer API. Celem obu zespołów było Spraw, aby każdy interfejs API był wymagany na potrzeby automatyzacji produkcyjnej jest dostępna dzięki technologii WebDriver BiDi w Puppeteer, co zapewnia obsługę zarówno w Chrome, Firefox.
![Udostępniony panel zespołu, w którym widać liczbę testów zdanych zaliczonych w ciągu ostatnich kilku miesięcy.](https://developer.chrome.google.cn/static/blog/firefox-support-in-puppeteer-with-webdriver-bidi/image/passing-tests-over-the-last-months.jpg?hl=pl)
Dzięki temu użytkownicy Puppeteer mogą wybrać Firefoksa lub Chrome dla swoich automatyzacji,
określając klucz konfiguracyjny browser
podczas uruchamiania aplikacji Puppeteer
instancji.
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();
Więcej informacji na temat nowych funkcji przeglądarki Firefox 129 i sposobu korzystania z funkcji WebDriver w przeglądarce Mozilla BiDi zapoznaj się z odpowiednim postem na blogu Mozilla Hacks.
wsparcie CDP w przyszłości
Poprzedni fragment kodu pokazuje, że
automatyzacja Chrome za pomocą
WebDriver BiDi z Puppeteer, musisz wyraźnie ustawić protocol
jako
webDriverBiDi
Dzieje się tak dlatego, że w Chrome Puppeteer domyślnie ustawia
CDP – aby nie zakłócać obecnej automatyzacji, ale też nadal obsługiwać automatyzacje
pod kątem funkcji Chrome.
Obsługa CDP w przeglądarce Firefox została wycofana z przeglądarki Firefox w wersji 129 i które zostaną usunięte z końcem 2024 roku. Jeśli masz już automatyzacje korzystające z obsługi CDP w przeglądarce Firefox, zalecamy przejście na WebDriver BiDi. Jeśli to niemożliwe, skontaktuj się z dev-webdriver@mozilla.org oraz Twój przypadek użycia.