WebDriver BiDi gotowy do wykorzystania w środowisku produkcyjnym w przeglądarkach Firefox, Chrome i Puppeteer

Matthias Rohmer
Matthias Rohmer

W ubiegłym tygodniu wspólnie z BrowserStack ogłosiliśmy, że WebDriver BiDi jest gotowy do wdrożenia w BrowserStack. W tym tygodniu lato WebDriver BiDi trwa, a Firefox 129 i Puppeteer 23 otrzymują gotowe do produkcji obsługę WebDriver BiDi.

Mozilla od ponad 4 lat współpracuje przy tworzeniu nowego standardu WebDriver BiDi, początkowo pomagając w opracowaniu nowego standardu, a potem stopniowo wdrażając go w przeglądarce Firefox, starając się dokumentować postępy w newsletterze dla Firefoksa WebDriver.

WebDriver BiDi jest teraz gotowy do wdrożenia w Firefoxie, a Puppeteer od wersji 23 zapewnia stabilną obsługę Firefoxa za pomocą WebDriver BiDi. Dzięki temu możesz automatyzować Firefoxa za pomocą tego samego zwięzłego interfejsu API co w Chrome. Obsługa protokołu Chrome DevTools (CDP) przez Puppeteer pozostaje niezmieniona.

Firefox, CDP i Puppeteer

Puppeteer to niezawodne narzędzie dla programistów do automatyzacji przeglądarek opartych na Chromium za pomocą protokołu Chrome DevTools Protocol (CDP). W 2019 r. Puppeteer otrzymał obsługę eksperymentalną w Firefoksie.

Aby to umożliwić, Mozilla wdrożyła i utrzymywała podzbiór CDP w Firefox. To rozwiązanie umożliwia automatyzację przeglądarki Firefox za pomocą interfejsu Puppeteer API, ale ma pewne ograniczenia:

  • Jak wskazuje nazwa, CDP jest używany przez Narzędzie deweloperskie w Chrome i musi być dostosowywany do wymagań tego narzędzia.
  • Platforma CDP nie jest ustandaryzowana we wspólnej, publicznej specyfikacji, a utrzymanie jej w przeglądarce Firefox wymagało stabilnej komunikacji i wysiłku.
  • Firefox wdrożył tylko podzbiór interfejsu CDP, więc Puppeteer nie może zagwarantować, że jego pełny interfejs API będzie działać z Firefoxem, co może wprowadzać użytkowników w błąd.

Chociaż przez kilka ostatnich lat razem z Mozilla utrzymywaliśmy tę usługę, zawsze wiedzieliśmy, że nie jest to trwałe rozwiązanie. Opierając się na tej współpracy, w tym innych największych dostawców przeglądarek i narzędzi, wspólnie utworzyliśmy WebDriver BiDi.

.

Współpraca to podstawa

Zespół Firefoksa pracował nad wdrożeniem funkcji WebDriver BiDi w przeglądarce Firefox. Jednocześnie zespół Puppeteer rozszerza obsługę WebDriver BiDi o interfejs Puppeteer API. Obydwa zespoły pracowały nad tym, aby udostępnić wszystkie interfejsy API wymagane do automatyzacji w produkcji za pomocą WebDriver BiDi w Puppeteer, zapewniając obsługę zarówno w Chrome, jak i w Firefox.

Panel zespołu udostępnionego innym osobom, który pokazuje liczbę zaliczonych testów w ciągu ostatnich kilku miesięcy.
Wspólny panel zespołu, na którym widać liczbę testów zaliczonych w ciągu ostatnich kilku miesięcy.

Dzięki temu użytkownicy Puppeteer mogą wybrać Firefoxa lub Chrome do automatyzacji, podając klucz konfiguracji browser podczas uruchamiania instancji 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();

Więcej informacji o nowościach w Firefox 129 i o działaniach Mozilli nad WebDriver BiDi znajdziesz w powiązanym poście na blogu Mozilla Hacks.

wsparcie CDP w przyszłości

Powyższy fragment kodu pokazuje, że aby zautomatyzować Chrome za pomocą WebDriver BiDi w Puppeteer, musisz jawnie ustawić protocol na webDriverBiDi. Wynika to z faktu, że w Chrome Puppeteer będzie domyślnie korzystać z CDP, aby nie zakłócać obecnej automatyzacji, lecz także w dalszym ciągu obsługiwać automatyzacje specjalizujące się w funkcjach Chrome.

Obsługa CDP w Firefoksie została wycofana od wersji 129 i planowana jest na koniec 2024 roku. Jeśli masz automatyzacje, które korzystają z obsługi CDP w Firefox, zdecydowanie zalecamy migrację do WebDriver BiDi. Jeśli to niemożliwe, napisz na dev-webdriver@mozilla.org, przesyłając swój przypadek użycia.