Wykorzystaj możliwości WebDriver BiDi: automatyzację w Chrome i Firefoksie za pomocą Puppeteer

Puppeteer rozmawia teraz z Firefoksem! 🎉 Chwila, nie? 🤔 Przyjrzyjmy się bliżej WebDriver BiDi, nowemu protokołowi Puppeteer, i przekonajmy się, jakie korzyści może przynieść ta ekscytująca praca w zakresie automatyzacji w Firefoksie.

WebDriver BiDi to nowy ustandaryzowany protokół automatyzacji w różnych przeglądarkach, który łączy najlepsze funkcje protokołu WebDriver Classic i protokołu CDP (Chrome DevTools Protocol). Zapewnia on komunikację dwukierunkową, zapewniając skuteczniejszą i bardziej wydajną automatyzację oraz szczegółową kontrolę. Postępy możesz śledzić w oficjalnym planie działania.

Od naszej poprzedniej aktualizacji stanu ściśle współpracujemy z grupą roboczą ds. testowania przeglądarek i narzędzi W3C. Dzięki udoskonaleniom technologii WebDriver BiDi Puppeteer wdraża teraz takie funkcje jak rejestrowanie, zdarzenia sieciowe i przesyłanie formularzy.

Pokaż mi kod

Poniższy skrypt Puppeteer przedstawia działanie funkcji WebDriver BiDi i działa bezproblemowo w przeglądarkach Chrome i Firefox:

  1. Uruchom wybraną przeglądarkę z ustawionym protokołem.
  2. Monitoruj komunikaty w konsoli pod kątem błędów.
  3. Otwórz stronę internetową, ustaw wymiary widocznego obszaru i kliknij przycisk.
  4. Sprawdzaj treść tekstu i wspieraj równość.
import * as assert from 'node:assert'; 
import puppeteer from 'puppeteer';

// Arrange: Launch browser with WebDriver BiDi
const browser = await puppeteer.launch({
  protocol: 'webDriverBiDi',
     product: 'firefox', // or 'chrome'
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();

// Arrange: Monitor console messages
page.on('console', message => {
  if (message.type() != 'error') return;
  console.log('RECEIVED: %s', message.text());
});

// Action
await page.setViewport({width: 600, height: 1041});
await page.goto('https://coffee-cart.app/?breakable=1');

const coffee = await page.waitForSelector('[data-test="Espresso"]');
await coffee.click();

// Assert 
const checkout = await page.$('[data-test="checkout"]');
const total = await checkout.evaluate(el => el.textContent);
assert.equal(total, 'Total: $10.00');

browser.close();

Postęp w działaniu funkcji WebDriver BiDi w aplikacji Puppeteer

Do oceny możliwości funkcji WebDriver BiDi w Puppeteer skorzystaliśmy z kompleksowego pakietu testowego Puppeteer. Implementacja Puppeteer i WebDriver BiDi jest wciąż w trakcie opracowywania i nie ma jeszcze funkcji, które oferuje Puppeteer w Chrome i CDP. Chcemy jednak przekazać Ci jasny obraz sytuacji.

Firefox:

  • Usługa WebDriver BiDi osiągnęła poziom jakości odpowiedni do praktycznych zadań związanych z automatyzacją. Testy Puppeteer dotyczące pliku pdf.js z przeglądarek Firefox i CDP zostały przeniesione do przeglądarek Firefox i WebDriver BiDi.
  • Ponad 55% testów pomyślnie przechodzi test WebDriver BiDi, co potwierdza jego rosnącą funkcjonalność.
  • Warto zauważyć, że ponad 82 nowe testy skutecznie wykorzystują funkcję WebDriver BiDi, co toruje drogę do dalszych ulepszeń.

Chrome:

  • Dzięki technologii WebDriver BiDi przeglądarka Chrome osiąga obecnie współczynnik przekazywania na poziomie 68%, co potwierdza jego niezawodność. Chociaż mamy przestrzeń na dalszą optymalizację w porównaniu z opartym na CDP podejściem, jest to obiecujące odkrycia w przyszłości.

Niektóre funkcje, takie jak dostęp do plików cookie, przechwytywanie żądań sieciowych, określone funkcje emulacji i uprawnienia, są nadal w aktywnej standaryzacji. Zostaną one zintegrowane z Puppeteer, gdy będą gotowe. W międzyczasie zapoznaj się z pełną listą funkcji Puppeteer obsługiwanych przez usługę WebDriver BiDi.

Czy Puppeteer nie obsługuje już Firefoksa?

Wcześniej Puppeteer oferował eksperymentalną obsługę przeglądarki Firefox z wykorzystaniem ograniczonej implementacji CDP (działającej w różnych przeglądarkach), ale działała w związku z ograniczeniami i nie było to trwałe rozwiązanie.

Nowe, eksperymentalne rozwiązania w przeglądarkach Firefox i WebDriver BiDi rozwiązuje te problemy.

Wiemy, że możesz mieć dodatkowe pytania, w tym:

  • Czy obsługa CDP przeglądarki Firefox zostanie wycofana?
  • Czy wszystkie funkcje Puppeteer są obsługiwane?

Szczegółowe odpowiedzi i więcej informacji znajdziesz w specjalnym ogłoszeniu dotyczącym przeglądarki Firefox.

Przed Tobą ekscytujące czasy

Testowanie w różnych przeglądarkach jest jednym z głównych potrzeb deweloperów, dlatego z przyjemnością przedstawiamy integrację pakietu WebDriver BiDi z Puppeteer, co stanowi punkt zwrotny w kierunku płynniejszego i wydajniejszego procesu automatyzacji w różnych przeglądarkach. Zachęcamy do zapoznania się z usługą WebDriver BiDi w technologii Puppeteer.

W przyszłości WebDriver BiDi stanie się domyślnym protokołem dla Puppeteer, torując drogę dla spójnego i ulepszonego rozwiązania do automatyzacji.

Jeśli podczas testów Puppeteer wystąpią problemy z WebDriver BiDi, otwórz narzędzie do śledzenia problemów Puppeteer.