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:
- Uruchom wybraną przeglądarkę z ustawionym protokołem.
- Monitoruj komunikaty w konsoli pod kątem błędów.
- Otwórz stronę internetową, ustaw wymiary widocznego obszaru i kliknij przycisk.
- 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.