WebDriver BiDi – przyszłość automatyzacji w różnych przeglądarkach

W poprzednim artykule omawialiśmy istniejące protokoły automatyzacji, a mianowicie WebDriver „klasyczny” i protokół Chrome DevTools (CDP), oraz ich zalety i ograniczenia.

Poznaj WebDriver BiDi, przyszłość automatyzacji przeglądarki Jest to nowy standardowy protokół automatyzacji przeglądarki, który jest obecnie opracowywany. Jego celem jest połączenie zalet WebDriver „klasycznego” i CDP. WebDriver BiDi zapewnia dwukierunkową komunikację, dzięki czemu jest szybki domyślnie, a także oferuje kontrolę na niskim poziomie.

WebDriver BiDi
WebDriver „klasyczny” Protokół narzędzi deweloperskich w Chrome (CDP)
Najlepsza obsługa w różnych przeglądarkach Szybkie przesyłanie wiadomości w obu kierunkach
standard W3C, Zapewnia kontrolę na poziomie niskiego poziomu
Testowanie

Celem WebDriver BiDi jest umożliwienie tworzenia testów za pomocą dowolnych ulubionych narzędzi i automatyzowanie ich w dowolnej przeglądarce lub sterowniku, co zapewnia pełną elastyczność.

Wizja WebDriver BiDi
Koncepcja WebDriver BiDi

Standaryzacja

Grupa robocza WebDriver BiDi składa się z różnorodnej grupy dostawców przeglądarek, projektów automatyzacji przeglądarek open source i firm oferujących rozwiązania do automatyzacji przeglądarek. Ta współpraca zapewnia obiecującą przyszłość automatyzacji w przeglądarce.

Grupa robocza WebDriver BiDi
Grupa robocza WebDriver BiDi

Większość prac jest wykonywana w tym repozytorium GitHub. Spotkania z przedstawicielami wszystkich głównych dostawców przeglądarek odbywają się co miesiąc. Podczas tych spotkań przedstawiają oni aktualne postępy i omawiają kontrowersyjne i nieznane szczegóły. Grupa robocza obejmująca kilka firm zapewnia, że decyzje są zgodne z poglądami wszystkich zainteresowanych stron.

Utworzenie i wdrożenie nowego protokołu to nie lada wyzwanie. Wymaga to współpracy różnych dostawców. Proces obejmuje:

  • Specyfikacja: proces żądania komentarzy (RFC) służący do zbierania opinii na temat propozycji.
  • Weryfikacja: seria testów, które można przeprowadzać na różnych platformach i które stanowią źródło informacji o wszystkich implementacjach.
  • Wdrażanie: przeglądarki wdrażają protokoły zgodnie ze specyfikacją i przeszły testy weryfikacyjne.

Wyzwania

W tej sekcji omówimy wyzwania związane z implementacją WebDriver BiDi, która ma na celu znalezienie równowagi między zgodnością, użytecznością i możliwością wdrożenia.

Nie tylko kopia CDP: stosowanie zgodności między przeglądarkami

CDP z elementami specyficznymi dla Chrome i Narzędzi deweloperskich nie może być bezpośrednio powielany w specyfikacji WebDriver BiDi. Wdrożenie CDP w innych przeglądarkach nie byłoby możliwe, więc specyfikacja, która opisuje tylko, jak to zrobić, byłaby bezcelowa.

Minimalizowanie opóźnień

WebDriver BiDi musi być zaprojektowany tak, aby radził sobie z wysoką latencją bez obniżania wydajności. W CDP opóźnienie jest niewielkie, ponieważ klient i serwer prawie zawsze działają na tym samym fizycznym komputerze, ale nie jest tak w przypadku WebDriver BiDi. Dlatego WebDriver BiDi musi minimalizować liczbę wymian między klientem a serwerem.

Priorytetowe traktowanie ergonomii w językach dwukierunkowych

Chociaż od programistów nie wymaga się tworzenia klientów WebDriver BiDi od podstaw, ważne jest, aby nie komplikować zbytnio tego protokołu. Zbyt skomplikowane BiDi nie tylko trudno byłoby wdrożyć, ale też trudno byłoby z nim pracować, co utrudniłoby jego przyjęcie i wykorzystanie.

Zapewnienie możliwości implementacji BiDi

WebDriver BiDi musi być możliwy do wdrożenia z uwzględnieniem ograniczeń różnych przeglądarek. Na przykład zachowanie wszystkich obiektów JavaScript udostępnionych klientom przez BiDi może spowodować wycieki pamięci, a niezachowywanie żadnych obiektów utrudnia debugowanie i interakcję z JavaScriptem strony. Ważne jest znalezienie równowagi, która pozwoli na skuteczną automatyzację przeglądarki bez obniżania wydajności.

Rozwiązywanie problemów

W tej sekcji omówimy strategie stosowane do rozwiązywania problemów związanych z wdrażaniem BiDi w WebDriver.

Szybkie prototypowanie

Rozwiązanie problemu z możliwością wdrożenia jest kluczowe dla sukcesu BiDi. Aby przyspieszyć prace nad specyfikacją i testami, zastosowaliśmy szybkie prototypowanie za pomocą NodeJS. Dzięki temu możemy nie tylko eksperymentować z różnymi rozwiązaniami, ale też ułatwić rozwój testów platformy internetowej.

Projektowanie z myślą o wydajności

Ta decyzja projektowa jest podyktowana wydajnością, ponieważ w niektórych przypadkach opóźnienie w WebDriver BiDi jest duże. Na przykład podczas pobierania identyfikatora i wartości obiektu z przeglądarki WebDriver BiDi wymaga tylko 1 przesyłania w obie strony, podczas gdy CDP wymaga 2 przesyłania. Wynika to z tego, że WebDriver BiDi może zwracać zarówno identyfikator, jak i wartość w jednej odpowiedzi (wynik nie powinien być serializowany w formacie JSON), podczas gdy CDP musi zwracać je osobno.

Uwaga na testy platformy internetowej (WPT)

Testy platformy internetowej odgrywają ważną rolę w działaniach BiDi. Obecnie obejmuje ona WebDriver „klasyczny” i WebDriver BiDi, a także stanowi wiarygodne źródło informacji dla wszystkich implementacji. Te testy są przeznaczone do uruchamiania i przekazywania w różnych implementacjach, co zapewnia spójne wykonywanie protokołów w różnych przeglądarkach. Jest to kluczowe dla skuteczności WebDriver BiDi. Sprawdź najnowsze wyniki WPT w panelu.

Jaki jest plan i jakie są postępy?

Aby poznać kierunek rozwoju projektu, zapoznaj się z mapą drogową WebDriver BiDi. Plan jest w trakcie opracowywania i stale ewoluuje.

Aby sprawdzić stan implementacji w różnych przeglądarkach, zapoznaj się z najnowszymi testami platformy internetowej, które stanowią źródło wiarygodnych informacji.

Śledź etapów projektu, aby monitorować jego postępy.

Poznaj osiągnięcia z 2023 roku i bądź na bieżąco z najnowszymi osiągnięciami.

Wsparcie WebDriver BiDi: jak możesz pomóc

Czy interesuje Cię przyszłość automatyzacji przeglądarki z użyciem WebDriver BiDi? Oto jak możesz okazać wsparcie:

  • Bądź pierwszym testerem i użytkownikiem, aby pomóc kształtować przyszłość WebDriver BiDi.
  • Daj znać innym! Udostępnij projekt w mediach społecznościowych, używając hashtagu #WebDriverBiDi.
  • Poproś o pomoc. Prześlij prośbę o dodanie funkcji lub sprawdź, jakie są plany Twoich ulubionych narzędzi dotyczące wdrażania WebDriverBiDi.
  • Udział w procesie RFC, czyli przekazywanie opinii na temat interfejsów API.

Najczęstsze pytania

Czy WebDriver BiDi zastąpi protokół CDP (Chrome DevTools Protocol)?

Nie. Przeglądarki oparte na Chromium nadal będą używać CDP do debugowania, a WebDriver BiDi to nowa specyfikacja, która zapewnia bardziej ergonomiczny interfejs API do potrzeb testowania.

Czy to oznacza, że Puppeteer zostanie wycofany?

Nie. Jednak WebDriver BiDi umożliwi Puppeteer stosowanie narzędzia do automatyzacji w różnych przeglądarkach.

Czy masz publiczną mapę drogową?

Tak. Naszą mapę drogową znajdziesz na GitHub.