Pobrania

z których możesz pobrać określone wersje ChromeDrivera.

Starsze wersje Chrome

W przypadku starszych wersji Chrome poniżej znajdziesz wersje ChromeDriver, które je obsługują.

Więcej informacji o wybieraniu odpowiedniej wersji ChromeDrivera znajdziesz na stronie Wybór wersji.

ChromeDriver 148

Poprawki błędów

  • Dostęp do DOM: naprawiono awarię, która występowała podczas symulowania kliknięcia przycisku w elemencie iframe zagnieżdżonym w zamkniętym elemencie shadow root. Wcześniej używany JavaScript do znajdowania identyfikatora elementu ramki właściciela nie mógł przenikać zamkniętych korzeni cienia. Nowa implementacja bezpośrednio używa formatu f.X.d.Y.e.Z do rozwiązywania ramki (crrev.com/c/7594919, błąd: 469831357).
  • Bezpieczeństwo: wzmocniona sanitacja argumentów Chrome, aby zapobiec potencjalnej luce w zabezpieczeniach związanej z wstrzykiwaniem argumentów pozycyjnych (crrev.com/c/7695604, błąd: 494464734).
  • Testowanie: zwiększono kImplicitWait limit czasu dla testów FindElement(s)WhileNavigatingcommands_unittest podczas uruchamiania w środowisku AddressSanitizer (ASAN). Domyślny 3-sekundowy limit czasu był niewystarczający, aby pętla ponawiania mogła wykorzystać wszystkie błędy symulowane w ramach narzutu ASAN, co powodowało niestabilność (crrev.com/c/7657276).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: usunięto zbędne dołączenia base/functional/callback_forward.h//chrome .cc plikach, wymuszając użycie callback.h, gdy wywołania zwrotne są faktycznie wykorzystywane (crrev.com/c/7200285, Bug: 40318405). Przeniesiono logging::LoggingSettingsbase/logging.h do własnego nagłówka base/logging/logging_settings.h, aby zwiększyć wydajność kompilacji (crrev.com/c/7173024, ponowne wdrożenie crrev.com/c/7160150 po wycofaniu crrev.com/c/7170750). Rozwiązano różne błędy IWYU związane z base/logging.h (crrev.com/c/7730403, Bug: 499476145).
  • Standardy C++: zastąpiono zbędne sprawdzanie mapy count(key), po którym następowało wyszukiwanie, bardziej wydajnym dostępem do iteratora find(key) (crrev.com/c/7705392, crrev.com/c/7693277, Bug: 452950815). Wstrzyknięto ThreadDelegate przez konstruktor Thread, aby zwiększyć hermetyzację, i dodano opcję Restartable do Thread, aby uwzględnić przypadki, w których wątki wymagają ponownego uruchomienia (crrev.com/c/7696887, Bug: 40881604).
  • Bezpieczeństwo pamięci: przekształcono makra #pragma allow_unsafe_buffers na poziomie pliku w makra UNSAFE_TODO() o większej szczegółowości w chrome/ (crrev.com/c/7132241, błąd: 409340989). Skrócono IOBuffer->span().first() do IOBuffer->first() (crrev.com/c/7159119).
  • Zależności: zaktualizowano zależność crossbench, co wprowadza poprawki dotyczące wykrywania lokalnie utworzonych plików binarnych ChromeDriver w systemach macOS i Android (crrev.com/c/7673978).
  • Testowanie: ponownie włączono schemat modulechromedriver_py_tests po wprowadzeniu poprawek w infrastrukturze kompilacji i testowania (crrev.com/c/7707960).

ChromeDriver 147

Poprawki błędów

  • Testowanie: dodano hermetyczny test regresji, aby sprawdzić, czy ElementClick prawidłowo obsługuje kliknięcia w przypadku ramek iframe z innej domeny z elementami nakładki, zwłaszcza w scenariuszach izolacji witryn. Dzięki temu kliknięcia nie będą błędnie kierowane do treści umieszczonych w witrynie zamiast do widocznej nakładki (crrev.com/c/7261984, Błąd: 42321834, Błąd: 42322220).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: zmieniono nazwy trybów i funkcji dekodowania adresów URL, aby były zgodne z przewodnikiem po stylu C++ Google. Zmieniono DecodeURLMode na DecodeUrlModeDecodeURLEscapeSequences() na DecodeUrlEscapeSequences() (crrev.com/c/7593238). Wprowadzono url::UrlEscapeDecoder, aby uprościć używanie dekodowania adresów URL w całej bazie kodu (crrev.com/c/7610180). Usunięto zbędne instrukcje build/branding_buildflags.h includes z plików //chrome (crrev.com/c/7595125, Bug: 40318405). Usunięto logikę BUILDFLAG(IS_FUCHSIA)//chrome, z wyjątkiem ChromeDrivera (crrev.com/c/5485913, Bug: 41481724).
  • Bezpieczeństwo pamięci (spanification): rozwiązano problemy z markerami UNSAFE_TODO w narzędziach ChromeDriver, przenosząc je do bezpiecznych implementacji opartych na zakresach (crrev.com/c/7562602, błąd: 435317390).

ChromeDriver 146

Poprawki błędów

  • Stabilność: naprawiono awarię ChromeDrivera, która mogła wystąpić podczas przetwarzania polecenia, jeśli okno zostało zamknięte w tym samym czasie (np. podczas oczekiwania na zakończenie nawigacji). Poprawka uzyskuje blokadę obiektu WebView, aby zapobiec jego przedwczesnemu usunięciu (crrev.com/c/7257074, Błąd: 468228355).
  • Zabezpieczenia: dodano sprawdzanie nagłówka Origin w przypadku przychodzących połączeń WebSocket z serwerem HTTP ChromeDriver, co zapobiega potencjalnemu przejęciu połączenia z innej domeny (crrev.com/c/7538400, błąd: 478783560).
  • Testowanie: przeniesiono testWebviewDetactedDuringClick do filtra niestabilnych testów, pomijając go we wszystkich uruchomieniach, a nie tylko w trybie bez interfejsu graficznego (crrev.com/c/7545378, błąd: 481485821).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 145

Nowe funkcje

  • Testowanie: zaktualizowaliśmy run_py_tests.py platformę testową, aby akceptowała deterministyczne testy ciągów znaków o różnej długości (np. 53, 101 i 501 znaków) kierowane na elementy input, textareacontenteditable. Zapewnia to pokrycie regresji, dzięki czemu podczas długich operacji send_keys nie są pomijane żadne znaki (crrev.com/c/7221410, Bug: 428116078).
  • Testowanie: dodaliśmy konkretny test elementu HTML <selectlist> (crrev.com/c/7420729, błąd: 342889200).

Poprawki błędów

  • Zrzuty ekranu: przywróciliśmy skalowanie zrzutów ekranu elementów, ponieważ specyfikacja WebDriver nie określa skalowania i było ono niezgodne z innymi funkcjami zrzutów ekranu (crrev.com/c/7409603, błąd: 42323022).
  • Testowanie: naprawiono błędy w testClientHintsDeviceNameIPhoneXtestClientHintsDeviceNameIPad przez zaktualizowanie oczekiwanych wyników testu ChromeDrivera, aby były zgodne z ostatnimi prawidłowymi wartościami (w przypadku pól platform, platformVersion, model i mobile) wprowadzonymi w Narzędziach deweloperskich (crrev.com/c/7408699, błąd: 474179501).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++://chrome zmieniono różne przypadki użycia base::Contains() na std::ranges::contains() (crrev.com/c/7411011, Bug: 470391351), w tym poprawiono formatowanie (crrev.com/c/7247217). Zmieniliśmy parametry ciągów znaków na std::string_view, aby uniknąć niepotrzebnego przydzielania ciągów znaków podczas korzystania z substr() (crrev.com/c/7350716). Usunięto zbędne nagłówki <map> includes z nagłówków //chrome (crrev.com/c/7225838, Bug: 40318405). Poprawiono kolejność dołączania w niektórych plikach (crrev.com/c/7366868). Zastąpiono starsze wywołania zwrotne BodyAsStringCallbackDeprecatedSimpleURLLoader wywołaniami BodyAsStringCallback, które korzystają z std::optional zamiast std::unique_ptr (crrev.com/c/7210000, błąd: 40258809).
  • Testowanie: przywróciliśmy konfigurację testu terenowego InfobarPrioritization, w tym poprawki zapobiegające awariom w testach przeglądarki ChromeDriver podczas obsługi oczekujących pasków informacyjnych, które nie zostały dodane do hierarchii widoków (crrev.com/c/7223590, błąd: 447176374). Ponowne wprowadzenie filtrowania według kraju i ustawień regionalnych w przypadku funkcji Glic, która została wcześniej wycofana z powodu niezwiązanych z nią błędów testowych (crrev.com/c/7245749, ponowne wprowadzenie crrev.com/c/7148759 po wycofaniu crrev.com/c/7233767, błąd: 454431875).

ChromeDriver 144

Nowe funkcje

  • Uprawnienia: zaktualizowaliśmy polecenie SetPermission, aby było zgodne z najnowszą specyfikacją W3C. Używa ono adresu URL bieżącej ramki (źródła osadzonego) oprócz źródła najwyższego poziomu. Prawidłowo konfiguruje to uprawnienia, takie jak storage-access, które zależą od kontekstu osadzonego (crrev.com/c/7106801, ponowne wdrożenie crrev.com/c/7093216 po wycofaniu crrev.com/c/7104484, Bug: 384959114).
  • Testowanie: dodano parametr testMetadata (wraz z nazwą testu) do ładunku przesyłanego podczas przesyłania testu ChromeDriver, aby obsługiwać potwierdzanie niestabilności w przypadku używania strukturalnych identyfikatorów testów (crrev.com/c/7124354, błąd: 456432041).

Poprawki błędów

  • Target Lifecycle: naprawiliśmy błąd, który powodował zawieszanie się ChromeDrivera, gdy ramka nadrzędna została odłączona, a ramka podrzędna oczekiwała na odpowiedź na polecenie. ChromeDriver teraz jawnie odłącza przechodnio ramki podrzędne, gdy ramka nadrzędna WebViewImpl jest zablokowana i oznaczona jako odłączona podczas przetwarzania polecenia (crrev.com/c/7080912, Bug: 438436830).
  • Zarządzanie oknami: wyłączono działanie w tle zasłoniętych okien w przypadku sesji ChromeDriver. Rozwiązuje to problemy w WebDriver BiDi, w których testy mogły się nie powieść, jeśli przeglądarka nieprawidłowo uznała okno za zasłonięte i ograniczyła jego działanie (crrev.com/c/7128058, Bug: 458027819).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: usunięto zbędne dołączenia base/functional/callback_forward.h//chrome .cc plikach, wymuszając użycie callback.h, gdy wywołania zwrotne są faktycznie wykorzystywane (crrev.com/c/7200285, Bug: 40318405). Przeniesiono logging::LoggingSettingsbase/logging.h do własnego nagłówka base/logging/logging_settings.h, aby zwiększyć wydajność kompilacji (crrev.com/c/7173024, ponowne wdrożenie crrev.com/c/7160150 po wycofaniu crrev.com/c/7170750). Przeniesiono użycie base::HexEncode na nowszą funkcję base::HexEncodeLower (crrev.com/c/7103100, Bug: 456472080).
  • Bezpieczeństwo pamięci (spanification): przenieśliśmy WriteToPipeWriteToPipeNoBestEffort w testach jednostkowych PipeBuilderPipeConnection, aby akceptować base::span, co naprawia niebezpieczne użycie bufora (crrev.com/c/7090293, błąd: 455758227). Przekonwertowano makra #pragma allow_unsafe_buffers obejmujące cały plik na makra UNSAFE_TODO() o większej szczegółowości w chrome/ (crrev.com/c/7132241, błąd: 409340989). Skrócono IOBuffer->span().first() do IOBuffer->first() (crrev.com/c/7159119).

ChromeDriver 143

Poprawki błędów

  • Stabilność: naprawiono awarię typu Use-After-Free (UAF) w OverrideNetworkConditions. Surowy wskaźnik zapisany do późniejszego zastosowania był zwalniany między kolejnymi wywołaniami. Teraz jest prawidłowo zarządzany (crrev.com/c/7047422, Błąd: 42323833).
  • Testowanie: naprawiono niestabilne testy dotykowe ChromeDrivera na Androidzie przez użycie interfejsu WaitForCondition API w celu bardziej niezawodnej synchronizacji (crrev.com/c/6978928, błąd: 42321861).
  • DSE Prewarm: domyślnie wyłączyliśmy funkcję Prewarm w ChromeDriverze za pomocą przełącznika --disable-features=Prewarm, co zapobiega zakłócaniu wykonywania testów i odkrywania celów przez wstępnie rozgrzane strony (crrev.com/c/7007072, Bug: 431928370).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: zamieniono ref_counted.h na scoped_refptr.h w nagłówkach //chrome, w których używany jest tylko inteligentny wskaźnik, co zwiększa wydajność kompilacji (crrev.com/c/7080753, błąd: 40245294). Przeniesiono GURL akcesory do ich wariantów Get* (np. GetSpec() zamiast spec()), aby wyraźnie wskazywać alokację ciągów znaków i zapobiegać przypadkowym obniżeniom wydajności (crrev.com/c/7002119, Bug: 448174617).
  • Testowanie: usunięto zbędne wzorce sprawdzania w devtools_client_impl_unittest.cc za pomocą ADD_FAILURE() (crrev.com/c/6998270). Dodano test regresji dla crbug.com/413382905 (crrev.com/c/6879417).

ChromeDriver 142

Nowe funkcje

  • Diagnostyka: dodaliśmy stan TERMINATION_STATUS_EVICTED_FOR_MEMORY, aby odróżnić procesy aktywnie zakończone przez przeglądarkę (w celu oszczędzania pamięci) od procesów, które uległy awarii z powodu błędów typu „brak pamięci”. Obecnie działa to identycznie jak awaria z powodu braku pamięci (wyświetla się smutna karta), ale przygotowuje grunt pod przyszłe odrębne traktowanie (crrev.com/c/6991933, Bug: 394092280).
  • Diagnostyka: dodaliśmy do odpowiedzi WebDrivera goog:processID możliwość zwracania głównego identyfikatora procesu przeglądarki na komputer. Dzięki temu ChromeDriver będzie zgodny z moz:processID w Firefoxie i ułatwi testowanie interfejsów API ułatwień dostępu na platformie (crrev.com/c/5825307, Bug: 438884256).
  • Testowanie: dodano obsługę przesyłania do ResultSink strukturalnych identyfikatorów testów w przypadku testów integracyjnych w Pythonie dla ChromeDrivera (crrev.com/c/6916708, błąd: 418015486).

Poprawki błędów

  • Diagnostyka: zmodyfikowano działanie ChromeDrivera po normalnym zamknięciu Chrome, aby nie wyświetlał już mylącego, ogólnego komunikatu o błędzie związanego z używaniem user-data-dir. Teraz wyraźnie informuje, że instancja została zakończona, i kieruje użytkownika do szczegółowych logów, aby sprawdzić konkretny błąd zgłoszony przez Chrome (crrev.com/c/6977507, Błąd: 42323434).
  • Inicjowanie: zaktualizowano strukturę inicjowania ChromeDrivera, aby zachować zgodność ze zmianami w Selenium WebDriver w wersji 4.16.0 (crrev.com/c/6630600).
  • Android naprawiono CheckAppInstalled w starszych wersjach Androida (starszych niż Android 11), w których menedżer pakietów nie obsługuje flagi --user cur (crrev.com/c/6785949, błąd: 433885051).
  • Testowanie: naprawiliśmy błąd, który powodował, że IgnoreDuplicateNavs nieprawidłowo zastępował domyślne przełączniki funkcji w ChromeDriver. Funkcja została wyłączona w przypadku sesji ChromeDriver, a logika Switches::SetFromSwitches została poprawiona (crrev.com/c/6949166, Bug: 445332809).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: zastąpiono kilka wycofanych wywołań base::JSONWriter::Write() wywołaniami base::WriteJson(), zachowując działanie polegające na zwracaniu pustego ciągu w przypadku niepowodzenia, gdy wartość zwracana nie była sprawdzana (crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Wymagane wyraźne zezwolenie na opcje analizy plików JSON niezgodne z zasadami (np. zezwolenie na komentarze) w base::JSONReader::Readbase::JSONReader::ReadAndReturnValueWithError (crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Usunięto pragmy #pragma allow_unsafe_buffers w całym pliku po ręcznym określeniu zakresów (crrev.com/c/6778035, błąd: 409340989). Usunięto użycie makra LazyInstance (crrev.com/c/6781377, Bug: 432815283). Dodano brakujące nagłówki dla http_response_headers.h za pomocą IWYU (crrev.com/c/6894196, błąd: 40216326).
  • Bezpieczeństwo pamięci (spanification): automatycznie przekształcono wiele wskaźników w zakresy w katalogu chrome/ w przypadku kompilacji na Linuksa, dodając niekrytyczne błędy CHECK, gdy parametry rozmiaru uznano za zbędne (crrev.com/c/6734592, błąd: 431824299).
  • Testowanie: tymczasowo wyłączono testDoesntCrashOnClosingBrowserFromAsyncScript w systemie macOS (crrev.com/c/6995358, błąd: 446461733). Poprawiono błędy w nazwach metod testowych dotyczących „Certificates” (crrev.com/c/6950683). Automatycznie sformatowane pliki GN //chrome/test (crrev.com/c/6789277, błąd: 40760278).
  • FedCM wprowadziliśmy funkcję ShouldShowAccountsPassiveDialogIdentityDialogController, która synchronicznie sprawdza, czy należy wyświetlić okno dialogowe kont, co rozwiązuje problem z awarią związaną z asynchronicznymi sprawdzeniami i instrumentacją Narzędzi deweloperskich (crrev.com/c/6780413, Bug: 425801332).
  • DSE Prewarm: dodano Page.setPrewarmingAllowed do protokołu Narzędzi deweloperskich jako krótkoterminowe rozwiązanie umożliwiające ręczne włączanie i wyłączanie wstępnego rozgrzewania. Poprawiono powiązane testy, aby zapewnić prawidłowe działanie z główną stroną (crrev.com/c/6847287, błąd: 431928370). Włączono funkcję DSEPrewarm w fieldtrial_testing_config.json na macOS i Windows po rozwiązaniu problemów z niestabilnością (crrev.com/c/6951835, Bug: 431928370, Bug: 435621391). (Uwaga: polecenie CDP i włączenie testu zostały wycofane, ponieważ powodowały zmiany powodujące niezgodność w działaniu WebDrivera, które ujawniały nieoczekiwane cele i powodowały inne problemy (crrev.com/c/6966133, crrev.com/c/6966161, Bug: 445883308)).
  • Czyszczenie: usunięto pozostałe odwołania do nieobsługiwanego WebLayer projektu w kodzie Androida (crrev.com/c/6792520, błąd: 40272607).

ChromeDriver 141

Nowe funkcje

  • Testowanie: dodaliśmy obsługę flagi --enable-per-test-tracing w przypadku run_wpt_tests.py, co odpowiada działaniu run_web_tests.py. Spowoduje to pobranie zdarzeń śledzenia JSON z wewnętrznego bufora ChromeDrivera i zapisanie ich w katalogu wyników testu (crrev.com/c/6820247, błąd: 434017035).

Poprawki błędów

  • Diagnostyka: Zapobiegano wyświetlaniu przez ChromeDriver własnego wewnętrznego zrzutu stosu podczas zwracania błędu kTabCrashed. Dzięki temu unikniesz wprowadzania użytkowników w błąd, a jednocześnie zapewnisz, że zrzut stosu awarii renderera pozostanie w logach (crrev.com/c/6841669, Bug: 395131239).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: zastąpiono potencjalnie niebezpieczne wywołania memset standardową inicjalizacją agregatów C++ (instance = {}) w chrome/, aby uniknąć pomijania konstruktorów i zapewnić bezpieczeństwo pamięci (crrev.com/c/6875520, Bug: 435317390). Dodano brakujące dyrektywy #include dla //base/time/time.h za pomocą IWYU (crrev.com/c/6832689, błąd: 40216326). Przepisano dyrektywy pragma wymuszające niebezpieczny bufor (crrev.com/c/6828538).
  • Testowanie: dodaliśmy test regresji dla crbug.com/413382905 (crrev.com/c/6879417).
  • Przejścia widoku: przywróciliśmy poprawkę przejść widoku, która aktualizuje pracę wykonaną przed rozwiązaniem obietnicy ukończenia. Wcześniejsze spekulacyjne wycofanie związane z błędami testów ChromeDrivera okazało się nieprawidłowe (crrev.com/c/6846765, przywrócenie crrev.com/c/6806850 po wycofaniu crrev.com/c/6808537).

ChromeDriver 140

Poprawki błędów

  • Wybór elementu docelowego: rozwiązano problem polegający na tym, że okno narzędzi deweloperskich mogło konkurować ze stroną główną o wybór jako okno główne, gdy Chrome uruchamiano za pomocą --auto-open-devtools-for-tabs. ChromeDriver jawnie wyklucza cele z prefiksem devtools:// podczas określania okna głównego (crrev.com/c/6769505, błąd: 427908560).
  • Wybór elementu docelowego: zapobiega nieprawidłowemu obliczaniu przez ChromeDriver punktu środkowego elementów widocznego w oknie, ignorując wszelkie przycinanie overflow:hidden narzucone przez elementy nadrzędne. Dzięki temu obliczenia będą zgodne ze specyfikacją WebDrivera i innymi scenariuszami PerformActions (crrev.com/c/6735230, Bug: 42322257).
  • Android naprawiono funkcję CheckAppInstalled w starszych wersjach Androida (przed Androidem 11), w których flaga --user cur menedżera pakietów nie jest obsługiwana (crrev.com/c/6785949, błąd: 433885051).
  • Testowanie: usunięto niestabilność w zestawie testów chromedriver_py_tests spowodowaną funkcją DSEPrewarm. ChromeDriver wyłącza teraz wyzwalacz wstępnego rozgrzewania, gdy klient CDP jest dołączony, aby zapobiec nieoczekiwanym liczbom docelowym podczas testów (crrev.com/c/6764274, błąd: 423465927, błąd: 431928370).
  • Testowanie: wycofano dodanie funkcji ShouldShowAccountsPassiveDialog do interfejsu IdentityDialogController (część FedCM), co spowodowało regresję (crrev.com/c/6780413, błąd: 425801332).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 139

Poprawki błędów

  • Struktura inicjowania: zaktualizowaliśmy strukturę inicjowania ChromeDrivera, aby zachować zgodność z aktualizacjami Selenium WebDriver w wersji 4.16.0 (crrev.com/c/6630600).
  • Analizowanie argumentów: połączono wiele argumentów --js-flags (podobnie jak w przypadku argumentu --enable-features) zamiast używać tylko ostatniego podanego argumentu. Zwiększa to użyteczność podczas przekazywania złożonych flag V8 (crrev.com/c/6612042, Bug: 421941798).

Zmiany wewnętrzne i refaktoryzacja

  • Bezpieczeństwo pamięci (spanification): zastąpiono wycofane użycia base::MakeStringPiece() użyciami std::string_view//chrome/test (crrev.com/c/6628089, Bug: 422940464). Dodano base/strings/string_view_util.h, gdzie użyto base::as_string_view(), przygotowując się do przyszłych migracji przestrzeni nazw (crrev.com/c/6625024, Bug: 423048781).
  • Standardy C++: lepsza zgodność z zasadą „Include What You Use” (IWYU) w przypadku //chrome dzięki wyraźnemu uwzględnieniu <vector> (crrev.com/c/6652818), base/notimplemented.h (i usunięciu base/notreached.h, gdy nie jest używany) (crrev.com/c/6655452, Bug: 41493641), base/strings/string_util.h (crrev.com/c/6607646), base/strings/string_number_conversions.h (crrev.com/c/6593576) i usunięciu zbędnych uwzględnień base/debug/stack_trace.h (crrev.com/c/6622838).
  • Testowanie: przeniesiono opcję --driver-logging do run_wpt_tests.py, co umożliwia skryptowi zrzucanie ChromeDrivera i przeglądarki stderr nawet przy niższych poziomach szczegółowości (crrev.com/c/6608138, Błąd: 421262910).
  • Testowanie: ponownie włączono wcześniej wyłączone testy integracyjne ChromeDrivera: testy zrzutów ekranu (testTakeElementScreenshot*) (crrev.com/c/6598797, błąd: 42321815), testy zamykania okna za pomocą JavaScriptu (testCloseWindowUsingJavascript*) (crrev.com/c/6598978, błąd: 42321150) i headless-shell testy rozmiaru okna (crrev.com/c/6621336, błąd: 42323661).
  • Testowanie: poprawiono run_wpt_tests.py --stable, aby prawidłowo identyfikować i używać bieżącej wersji stabilnej Clank (Android) przez analizowanie pliku APK, oraz zaktualizowano skrypt, aby pobierać odpowiednią wersję ChromeDriver z Chrome for Testing (CfT) do katalogu tymczasowego, zamiast zanieczyszczać checkout (crrev.com/c/6635694, błąd: 402548382).
  • Infrastruktura kompilacji: usunięto niepotrzebną zależność kompilacji od write_build_config.py, uniemożliwiając celom android_resources() posiadanie plików manifestu, ponieważ scalanie plików manifestu i nazewnictwo pakietów R.java są teraz obsługiwane przez specjalistyczne atrybuty (crrev.com/c/6625266, Bug: 413331591).
  • FedCM naprawiono flagę funkcji konfiguracji Finch związaną z FedCM (crrev.com/c/6614137, błąd: 421959289).

ChromeDriver 138

Nowe funkcje

  • Zarządzanie funkcjami wyświetlania: zaktualizowaliśmy działanie ChromeDrivera w przypadku segmentów widocznego obszaru, aby było zgodne z niedawną rezolucją grupy roboczej CSS: teraz zawsze zwraca on tablicę z jednym segmentem, gdy urządzenie składane jest używane na płasko lub w przypadku wszystkich urządzeń nieskładanych. Jest to zgodne z działaniem zapytań o media i zmniejsza ryzyko zbierania odcisków cyfrowych (crrev.com/c/6469455, Bug: 414430842).
  • Ustawienia i stan lokalny (Android): dodano obsługę funkcji localStateprefs podczas uruchamiania ChromeDrivera na urządzeniach z Androidem. Wymaga to ADB i niestandardowej flagi user-data-dir. Obecnie stan jest inicjowany za pomocą szablonów domyślnych (crrev.com/c/6397155, Bug: 406427226).

Poprawki błędów

  • Stabilność: rozwiązaliśmy problem z awarią ChromeDrivera w systemie macOS, która występowała, gdy użytkownik zamykał okno pierwszego uruchomienia (FRE) za pomocą przycisku „Dalej”. Awaria była spowodowana zastąpieniem stanu błędu kTargetDetached i próbą uzyskania dostępu do nieprawidłowego WebView (crrev.com/c/6538867, Bug: 410599467).
  • Testy wydajności: naprawiono narzędzie do uruchamiania testów crossbench na botach Windows, które nieprawidłowo próbowały zlokalizować plik binarny ChromeDriver, używając przestarzałej ścieżki ../Release_x64, gdy przekazywano --browser=release_x64. Powodowało to powrót do pobierania starszego pliku binarnego zamiast używania lokalnej kompilacji (crrev.com/c/6502134).

Zmiany wewnętrzne i refaktoryzacja

  • Bezpieczeństwo pamięci (spanification): zastąpiono niekontrolowane wskaźniki w WebSocket::OnReadDuringHandshakeWebSocket::OnReadDuringOpen wskaźnikami base::span, rozwiązując ostrzeżenia unsafe-buffer-usage (crrev.com/c/6557346, błąd: 354307328). Usunięto niepotrzebne dyrektywy #pragma allow_unsafe_buffers pragmas w chrome/test/chromedriver, które nie były już potrzebne po innych migracjach (crrev.com/c/6503154, Bug: 414858406).
  • Standardy C++: usunięto zbędne dyrektywy #include "url/gurl.h"#include <queue>chrome/ nagłówków, dodając w odpowiednich miejscach deklaracje wyprzedzające, aby skrócić czas kompilacji (crrev.com/c/6578272, crrev.com/c/6570349, Bug: 40318405).
  • Migracja interfejsu API: przeniesiono RSAPrivateKey do crypto::PrivateKeySHA256HashString do crypto::Sha256, usuwając przestarzały przypadek obsługi błędów, ponieważ nowe interfejsy API generowania kluczy są niezawodne (crrev.com/c/6490294, Bug: 372283556).
  • Testowanie: dodano atrybut OwnContributionEstimate do poleceń automatyzacji interfejsu Compute Pressure API (implementacje CDP i testdriver) (crrev.com/c/6373001, Bug: 402033762).
  • Testowanie: poprawiono testy integracji weryfikujące ClearDisplayFeatures na botach ciągłej integracji (CFT) przez uproszczenie asercji, aby sprawdzać, czy segmenty obszaru wyświetlania są przywracane do domyślnego rozmiaru obszaru wyświetlania (crrev.com/c/6535067, błąd: 417195296).
  • Testowanie: wydłużono limity czasu w testach WebDrivera interfejsu Protected Audience API, aby rozwiązać problem z niestabilnością na wolniejszych botach CI (crrev.com/c/6494277).

ChromeDriver 137

Nowe funkcje

  • Zarządzanie funkcjami wyświetlania: dodano polecenia ChromeDriver do emulowania i czyszczenia funkcji wyświetlania, co spełnia wymagania dotyczące automatyzacji interfejsów API segmentów obszaru wyświetlania (CSS i JS). Umożliwia to deweloperom programowe testowanie scenariuszy składania lub zginania na urządzeniach dwuekranowych lub składanych (crrev.com/c/6368674, Bug: 40137084).
  • BiDi zaktualizowano ChromeDriver, aby domyślnie uruchamiać BiDi Mapper w ukrytym elemencie docelowym. Zapobiega to zakłócaniu wykonania testu i widoczności strony data:, mapowania. Aby debugować mapowanie, klienci mogą przekazać flagę --debug-bidi-mapper, aby uruchomić je na widocznej karcie (crrev.com/c/6441064, ponowne wdrożenie crrev.com/c/6433672 po wycofaniu crrev.com/c/6439633, błąd: 402339952).

Poprawki błędów

  • BiDi zapobieganie nieprawidłowemu zamykaniu całej sesji przeglądarki przez ChromeDriver podczas przetwarzania poleceń BiDi (np. browsingContext.close), jeśli utracił on śledzenie elementów docelowych utworzonych przez inne sesje CDP lub BiDi. Teraz przed podjęciem decyzji o zamknięciu przeglądarki wyraźnie synchronizuje karty najwyższego poziomu (crrev.com/c/6440293, Bug: 42323838).
  • BiDi zgodność ze specyfikacją WebDriver BiDi poprzez zapewnienie, że ChromeDriver usuwa funkcję goog:channel, jeśli jest ona przekazywana jako pusty ciąg znaków, traktując ją identycznie jak brakujący kanał (crrev.com/c/6438865, Bug: 409282307).
  • Input: naprawiono problem z nieprawidłowym działaniem lub niepowodzeniem zdarzeń dotykowych i zdarzeń wskaźnika przez zaktualizowanie ChromeDrivera, aby obsługiwał ułamkowe (reprezentacja zmiennoprzecinkowa) współrzędne x i y w poleceniach przenoszenia wskaźnika (crrev.com/c/6440834, Bug: 409684333).
  • Wybór miejsca docelowego: zapobieganie przenikaniu elementów iframe poza proces (OOPIF) w plikach PDF otwieranych w widokach gościa (gdy funkcja PdfOopif jest wyłączona) do listy miejsc docelowych najwyższego poziomu. Logika filtrowania została rozszerzona, aby prawidłowo wykluczać te miejsca docelowe z prefiksem chrome-extension:// (crrev.com/c/6383500, Błąd: 396611138).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: przywróciliśmy zmianę polegającą na używaniu znaku std::string_view w nazwach plików w LogMessage i zdarzeniach śledzenia. Rozwiązaliśmy problemy z obsługą ciągów znaków zakończonych znakiem null, które spowodowały poprzednie wycofania (crrev.com/c/6430129, przywrócenie crrev.com/c/6395097, przywrócenie crrev.com/c/6387020 po wycofaniu crrev.com/c/6383699).
  • Standardy C++: zmodernizowano wywołania Environment::GetVar//chrome, aby używać interfejsu API zwracającego std::optional zamiast parametrów wyjściowych (crrev.com/c/6417343, błąd: 400758498).
  • Standardy C++: przeniesiono pomocnicze funkcje obsługi uchwytów specyficzne dla systemu Windows z pliku win_util.h do dedykowanego pliku nagłówkowego windows_handle_util.h, aby uniknąć problemów z cykliczną zależnością (crrev.com/c/6418805, błąd: 406023316).
  • Testowanie: dodano moduł obsługi domen Browser dla Androida i wdrożono interfejs Browser.getWindowForTarget API do obsługi testów tworzenia okien Androida (crrev.com/c/6427605, błąd: 404932444).
  • Testowanie: naprawiono niestabilność testów w systemie macOS spowodowaną zbyt długim czasem inicjowania rozszerzeń (crrev.com/c/6423229, błąd: 407804497).
  • Testowanie: tymczasowo wyłączono równoległe tworzenie user-data-dirtestBrowserWithUsedUserDataDir podczas uruchamiania w chrome-headless-shell, ponieważ powodowało to konflikt z wyłączną blokadą w systemie macOS (crrev.com/c/6470455, błąd: 411407649, błąd: 380903149).
  • Rozszerzenia: zaktualizowano testy Chrome, aby przechodziły, gdy włączone jest testowanie funkcji ExtensionManifestV2Unsupported. Jest to krok podstawowy, ale sam okres próbny pozostaje wyłączony do czasu wprowadzenia aktualizacji w innych repozytoriach (crrev.com/c/6415997, Bug: 367395349). (Uwaga: poprzednia próba włączenia tej wersji próbnej za pomocą konfiguracji została cofnięta crrev.com/c/6397497, co spowodowało cofnięcie crrev.com/c/6358257).
  • Zależności: ręcznie zaktualizowano zależność catapult i powiązane z nią pliki pydeps oraz odwołania devil_util (crrev.com/c/6480814, crrev.com/c/6466865, ponowne wdrożenie crrev.com/c/6406098 po wycofaniu crrev.com/c/6448910, błąd: 397459590).

ChromeDriver 136

Nowe funkcje

  • Cykl życia przeglądarki: dodano funkcję specyficzną dla Chrome quitGracefully, która wymusza na ChromeDriverze próbę prawidłowego zatrzymania przeglądarki (za pomocą Browser.close lub SIGTERM) zamiast domyślnego SIGKILL. Dzięki temu debugery, takie jak rr, mają czas na zrzucenie nagrań przed zakończeniem procesu (crrev.com/c/6322538, ponowne wdrożenie crrev.com/c/6269180 po krótkim wycofaniu crrev.com/c/6320536, błąd: 339644807).
  • Testowanie: sprawdzono argument run_wpt_tests.py --wrapper, generując tymczasowy skrypt otoki, który dodaje do pliku binarnego przeglądarki prefiks w postaci debugera (np. rr) i jego argumentów. Pozwala to obejść problem z niemożnością bezpośredniego zastąpienia pliku binarnego przez ChromeDrivera, gdy args są przetwarzane jako przełączniki (crrev.com/c/6271108, Bug: 339644807).
  • Testowanie: włączono tłumaczenie za pomocą ustawienia w TranslateEnabledTest, aby obsługiwać środowisko testowe, w którym ChromeDriver zarządza procesem przeglądarki i pomija nowe ograniczenie --remote-debugging-port, gdy --user-data-dir jest domyślne (crrev.com/c/6354089, błąd: 327797500).
  • DevTools dodano obsługę funkcji trybu podzielonego Narzędzi deweloperskich, aby otwierać nową kartę w innym oknie na Androidzie (crrev.com/c/6352169, błąd: 401269942, błąd: 382183406).

Poprawki błędów

  • Wybór miejsca docelowego: rozwiązaliśmy problem, który powodował, że elementy iframe PDF działające poza procesem (OOPIF) otwierane w widokach gościa nie były odfiltrowywane z listy miejsc docelowych najwyższego poziomu, gdy funkcja PdfOopif była wyłączona. Filtr został rozszerzony o prefiks chrome-extension, co rozwiązuje problem i obejmuje rozszerzenia Chrome w MV3 tworzące karty (crrev.com/c/6383500, błąd: 396611138).
  • Wybór miejsca docelowego: naprawiliśmy regresję, która powodowała, że polecenie getWindowHandles() kończyło się niepowodzeniem ze stanem connection refused w przypadku kierowania na spakowane aplikacje Chrome (crrev.com/c/6317161, Błąd: 396622746).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 135

Nowe funkcje

  • BiDi zaktualizowano moduł BiDi Mapper, aby dziedziczył uprawnienia ChromeDrivera, gdy określono --enable-unsafe-extension-debugging. Umożliwia to klientom WebDriver BiDi skuteczne testowanie rozszerzeń, które wymagają uprawnień zwykle posiadanych przez klienta WebDriver (crrev.com/c/6288627, błąd: 393500934).

Poprawki błędów

  • Testowanie: ponownie włączono i zaktualizowano oczekiwania dotyczące kilku testów WDSpec, które wcześniej były oznaczone jako nieudane. Przywraca to pokrycie zgodności ze specyfikacją w przypadku testów, które zakończyły się powodzeniem (crrev.com/c/6310420).

Zmiany wewnętrzne i refaktoryzacja

  • Czyszczenie: usunięto wszystkie ślady Lacros (w tym IS_CHROMEOS_LACROS i powiązane dane testowe) z chrome/test/, ponieważ Lacros jest wycofywany, a standardem staje się IS_CHROMEOS (crrev.com/c/6284446, błąd: 354842935).
  • Cleanup: usunięto wszystkie ślady narzędzia md5sum po zastąpieniu go narzędziem devil_util, usuwając starsze zależności kompilacji (crrev.com/c/6309939, Bug: 397452007).
  • Standardy C++: usunięto przestrzeń nazw chrome::ResultCodeIsNormalResultCode(), przenosząc je do globalnej przestrzeni nazw, oraz usunięto przestarzałe importy uruchamiania ChromeOS (crrev.com/c/6196899, Bug: 41050580).
  • Bezpieczeństwo pamięci: uproszczono wywołanie std::lower_bound w ChromeDriverze przez wykorzystanie std::ranges::lower_bound (crrev.com/c/6223172, błąd: 392116519). Wycofano unsafe_libc_call ostrzeżenia dotyczące początkowo zidentyfikowanych plików niezgodnych z zasadami w ramach przygotowań do przyszłego egzekwowania zasad (crrev.com/c/6187925, błąd: 390223051). Oznaczono wartość zwracaną std::to_array jako constexpr, aby zwiększyć bezpieczeństwo i ułatwić ocenę w czasie kompilacji (crrev.com/c/6298909).

ChromeDriver 134

Nowe funkcje

  • Łagodzenie śledzenia przekierowań (DIPS): obsługa w ChromeDriverze funkcji Łagodzenie śledzenia przekierowań z użyciem polecenia RunBounceTrackingMitigations. Test integracji został przekształcony tak, aby korzystać z osobnych stron, co zapewnia prawidłowe rejestrowanie przekierowań z zachowaniem stanu przed wykonaniem polecenia. Ta funkcja obsługuje specyfikację nav-tracking-mitigations i jest zaimplementowana w //chrome (crrev.com/c/4935955, błąd: 1474656). (Uwaga: pierwotnie dodano w crrev.com/c/4873672, a później wycofano).
  • BiDi zaktualizowano ChromeDrivera, aby używał standardowych właściwości rozszerzenia WebDriver BiDi z prefiksem goog:, co jest zgodne ze zmianami w chromium-bidi. Starsza właściwość channel nie jest już dozwolona (crrev.com/c/6179410).
  • Windows: dodaliśmy zasób wersji do pliku binarnego chromedriver.exe w systemie Windows (crrev.com/c/6114586, błąd: 385300323).

Poprawki błędów

  • MPArch/Targets: naprawiliśmy regresję, w której podczas określania głównego elementu docelowego w ChromeOS elementy docelowe rozszerzenia Chrome (chrome-extension://) były nieprawidłowo wykrywane i dołączane, co powodowało niepowodzenie kolejnych poleceń (np. nawigacji). W tej początkowej fazie cele rozszerzeń są teraz prawidłowo pomijane (crrev.com/c/6183202, błąd: 385241097).
  • MPArch/Targets: naprawiono kolejny regres, w którym cele kart dla rozszerzeń background_page nie były prawidłowo odfiltrowywane z widoków internetowych najwyższego poziomu, gdy obsługa celów rozszerzeń była wyłączona (crrev.com/c/6160774, Bug: 385731198).
  • MPArch/Navigation: rozwiązaliśmy problem, który powodował, że podczas aktywacji MPArch karta mogła przez chwilę nie mieć dołączonej aktywnej strony, co sprawiało, że ChromeDriver nieprawidłowo traktował ją jako stan błędu. ChromeDriver czeka teraz, aż karta wczyta nową stronę i zakończy nawigację, zanim rozwiąże stan (crrev.com/c/6177606).
  • Przetwarzanie logów: naprawiono awarię (DCHECK błąd w base::Value()) spowodowaną nieprawidłowym obcinaniem ciągów logów zawierających znaki wielobajtowe. Logika została zaktualizowana, aby używać wykrywania granicy UnicodeString zamiast prostych sprawdzeń długości std::string, co zapewnia prawidłowe punkty kodowe (crrev.com/c/6210809, błąd: 367752739).
  • Testowanie: przeniesiono większość testów WPT związanych z wstępnym renderowaniem (z wyjątkiem kilku testów z znanymi problemami z interfejsem API) z content_shell do headless_shell, ponieważ ostatnia zmiana w MPArch umożliwia ChromeDriverowi prawidłowe uruchamianie tych testów (crrev.com/c/6168830, Bug: 42323502, Bug: 366257368).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 133

Nowe funkcje

  • Architektura: przeprojektowano ChromeDrivera, aby obsługiwał architekturę wielu stron (MPArch) i karty docelowe. WebViewImpl łączy się teraz z elementami docelowymi kart za pomocą AutoAttach. Polecenia, które wcześniej zawierały stronę, teraz wyszukują aktywną stronę na karcie. Ta zmiana umożliwia sprawdzanie stron tła rozszerzeń, które można teraz kierować za pomocą funkcji enable_extension_targets (domyślnie cele rozszerzeń są pomijane) (crrev.com/c/5961156, błąd: 379767670, błąd: 42323502). Usunęliśmy regresję, w której strony z adresem URL chrome-extension:// były nieprawidłowo uwzględniane jako miejsca docelowe rozszerzeń. Wybór został przywrócony do type=background_page (crrev.com/c/6093588, Bug: 383141569). Przeniesiono enableExtensionTargets do opcji Chrome zamiast funkcji najwyższego poziomu (crrev.com/c/6093032).
  • Klasyczna: przywróciliśmy obsługę odwołań do elementów z wieloma kluczami. Ta nieudokumentowana funkcja, często używana do tworzenia odwołań zgodnych z trybami W3C i innymi, jest teraz oficjalnie obsługiwana i objęta testami integracyjnymi (crrev.com/c/6063257, błąd: 379584343).

Poprawki błędów

  • Stabilność: zapobieganie blokowaniu się ChromeDrivera na czas nieokreślony podczas obsługi polecenia browsingContext.close. Dzięki zastosowaniu innego mechanizmu określania, czy przeglądarkę należy zamknąć, ChromeDriver może teraz prawidłowo obsługiwać prośby beforeunload bez zawieszania się (crrev.com/c/6080431, Bug: 42323838, Bug: 379049702).
  • Nawigacja: naprawiliśmy błąd, w którym strona testowa z adresem URL about:blank?test powodowała zawieszenie. Heurystyka służąca do identyfikowania nieodpowiadającego nowego okna (baseURL==about:blankdocumentURL!=about:blank) prawidłowo obsługuje teraz te adresy URL z ciągiem zapytania jako przypadek specjalny (crrev.com/c/6038039, błąd: 377410086).
  • Nawigacja: dodaliśmy logikę ponawiania poleceń, które nie powiodły się z powodu błędu AbortedByNavigation. ChromeDriver będzie teraz próbował wykonać polecenie kilka razy, zanim zrezygnuje i wyświetli standardowy błąd Timeout (crrev.com/c/6012427, Bug: 42323825).
  • Diagnostyka: przekazaliśmy błąd kTargetCrashed bezpośrednio przez NavigationTracker. Jeśli podczas wykrywania nawigacji urządzenie docelowe ulegnie awarii, użytkownik zobaczy konkretny komunikat o błędzie zamiast ogólnego komunikatu o przekroczeniu limitu czasu, co ułatwi diagnostykę (crrev.com/c/6032612, Bug: 377410086).
  • Android poprawiono wyszukiwanie docelowych kart w chrome_android_impl.cc (crrev.com/c/6110492, błąd: 384781876).
  • Testowanie: usunięto niestabilność w kilku testach zmiany rozmiaru okna na win11-arm64 (np. klikanie zasłoniętych elementów). Testy wielokrotnie sprawdzają rozmiar wewnętrznego okna po zmianie rozmiaru, aż zarejestrują prawidłową dodatnią wysokość, uwzględniając powolne odświeżanie okna (crrev.com/c/6012658, Bug: 378470046).
  • Testowanie: usunięto wiele błędów w testach integracyjnych przez mapowanie ogólnych błędów połączenia w Pythonie na WebSocketConnectionClosedException, uproszczenie obsługi błędów (crrev.com/c/6054134) i unikanie sytuacji wyścigu przez używanie SendCommand zamiast PostCommand w przypadku oczekiwania natychmiastowych efektów ubocznych (crrev.com/c/6054137) oraz zastąpienie polegania na natychmiastowych efektach ExecuteScript bardziej niezawodnymi mechanizmami wykrywania nawigacji (crrev.com/c/6063040, Bug: 42323825).
  • Testowanie: wycofaliśmy usunięcie flagi funkcji FedCmIdpSigninStatus, ponieważ spowodowało to awarie (crrev.com/c/6082405, wycofanie crrev.com/c/6078693, Bug: 384866916, Bug: 381211734).
  • Narzędzia: dodano obsługę polecenia Print w skrypcie log_replay (crrev.com/c/6010809, błąd: 378451938).

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: usunięto Mojo.InvalidUTF8String histogram, co umożliwiło wyczyszczenie publicznych nagłówków Mojo i kolejnych kaskad IWYU (crrev.com/c/6133861, błąd: 40509710, błąd: 386793084).
  • Standardy C++: uniknięto alokacji w WaitableEvent::Wait() przez przejście z std::list na base::circular_deque (crrev.com/c/6097198).
  • Standardy C++: w miarę możliwości w całym kodzie chrome/ zastosowano domyślne, zdefiniowane przez użytkownika puste konstruktory i destruktory (crrev.com/c/6101911, crrev.com/c/6056220, Bug: 381119547).
  • Bezpieczeństwo pamięci (spanification): w ramach szerszych działań mających na celu wyeliminowanie -Wunsafe-buffer-usage ostrzeżeń (crrev.com/c/6043879, Bug: 378069401) przeniesiono tablice w stylu C do std::arraychrome/. Wprowadzono ścisłe size_t użycie w funkcjach zakresu (crrev.com/c/6026238, crrev.com/c/6020621).
  • Testowanie: przywróciliśmy pełnoekranowe {ref,crash}tests do wpt_internal/, ponieważ testdriver obsługuje je teraz (crrev.com/c/6088404).
  • Testowanie: poprawiono wptrunner w iOS, aby prawidłowo lokalizować otokę ChromeDriver podczas korzystania z innych niż domyślne katalogów wyjściowych (np. //out/*-ios-wpt-fyi-rel/) przez prawidłowe przekazywanie --build-directory (crrev.com/c/6014940, Błąd: 374199289, Błąd: 355218109).
  • Testowanie: dodano testBrowserCrashWhileWaitingForEvents test integracji, aby zademonstrować przypadki regresji, w których klienci nie zauważają błędów krytycznych (crrev.com/c/6025145, błąd: 379049702).
  • Testowanie: wyłączono konkretne testy WPT, które ulegały awarii podczas uruchamiania w headless_shell w połączeniu z ChromeDriverem, aby ustabilizować kompilatory (crrev.com/c/6032163, błąd: 377410086).

ChromeDriver 132

Nowe funkcje

  • Testowanie: dodano obsługę parametrów wiersza poleceń repeatretry-limit w testach integracyjnych ChromeDrivera, mapując je na standardowe argumenty isolated-script-test-repeatisolated-script-test-launcher-retry-limit (crrev.com/c/5938195, Błąd: 374681919). W przypadku testów wykonywanych lokalnie (nie w CI) domyślna wartość retry-limit została zmieniona na 0 (crrev.com/c/5953326, Bug: 374681919).
  • WebSockets zaimplementowano WebSocketConnection i powiązane klasy w EmbeddedTestServer, co umożliwia przeniesienie testów związanych z WebSocket z SpawnedTestServer. Obejmuje to tworzenie ramek zgodnie z protokołem i uproszczoną rejestrację modułu obsługi (crrev.com/c/5849732, Bug: 40812029).

Poprawki błędów

  • Stabilność: naprawiono awarię ChromeDrivera, która mogła wystąpić, jeśli polecenie kliknięcia spowodowało zamknięcie przeglądarki. W tym celu prawidłowo obsłużono stan błędu kTargetDetached wprowadzony we wcześniejszych zmianach (crrev.com/c/5934524, błąd: 42323264).
  • Stabilność: rozwiązano problem z przerywanymi awariami w teście integracyjnym testClickNavigateRemoteToLocal na komputerach Mac z procesorem ARM64, eliminując sytuację wyścigu (crrev.com/c/5975526, błąd: 375971185).
  • Nawigacja: naprawiono polecenia GoBackGoForward, które wcześniej nie działały, jeśli polecenie Page.getNavigationHistory było wywoływane, gdy dokument przechodził ze stanu aktywnego (co oznaczało trwającą nawigację). ChromeDriver prawidłowo ponawia teraz wykonanie polecenia w tym scenariuszu (crrev.com/c/6011739, Błąd: 378433873).
  • Wykonywanie skryptów: zapewniliśmy, że skrypty, które wywołują nawigację lub zamykają okno, prawidłowo zwracają standardowy ScriptTimeout błąd, jeśli przeglądarka nie gwarantuje wyniku, co zachęca użytkownika do unikania niejednoznacznych struktur testowych (crrev.com/c/5934265, błąd: 372883701).
  • Wykonywanie skryptu: rozwiązano problem, w którym funkcja odtwarzania dziennika kończyła się niepowodzeniem z błędem „unexpected command response” (crrev.com/c/5961142, Bug: 42323342).
  • Kody błędów: poprawiliśmy obsługę błędów w sterowniku ChromeDriver, aby nie wymuszać już opakowywania wszystkich wyjątków z właściwością „code” w ogólny „błąd JavaScript”. Dzięki temu standardowe błędy, takie jak „stale element reference” (z call_function.js) i „invalid element state” (z funkcji Selenium Atoms CLEAR), są prawidłowo przekazywane do użytkownika (crrev.com/c/5937893, Bug: 42323409). Ulepszona obsługa błędów w GetElementTagName, aby prawidłowo interpretować brakujące informacje o nazwie tagu jako „obiekt nie jest elementem” (crrev.com/c/5929087).
  • BiDi rozwiązaliśmy problem, który powodował, że sesje BiDi nie mogły się zainicjować, gdy używany był niestandardowy profil użytkownika. Załadowana strona profilu niestandardowego może uniemożliwiać uruchomienie BiDiMapper. ChromeDriver zapewnia teraz, że pierwsza karta zawsze ładuje data:,, aby zapewnić czystą kartę dla mapowania (crrev.com/c/5960656, Bug: 366886096).
  • Tryb incognito: naprawiono błąd uniemożliwiający tworzenie nowych kart przez ChromeDriver w trybie incognito (crrev.com/c/5952980, błąd: 42323352).
  • Testowanie: usunięto niestabilność testu integracyjnego testScriptNavigateRemoteToLocal (który kończył się niepowodzeniem w 8,33% przypadków) i dodano testy integracyjne w C++, aby odtworzyć i zweryfikować poprawkę dotyczącą sytuacji wyścigu (crrev.com/c/6010867, błąd: 378387680).
  • Testowanie: ponownie włączyliśmy wiele wcześniej niestabilnych testów integracyjnych na komputerach Mac (testWindowMinimize) i Windows (ChromeDownloadDirTest.testFileDownloadAfterTab, InvalidCertificateTest.*) oraz globalnie (testShadowDomFindElement, testy zrzutów ekranu elementów). Tymczasowe przeniesienie niestabilnych testów css/css-scrollbars/ WPT z powrotem do powłoki treści z powłoki bez interfejsu (crrev.com/c/5953708, crrev.com/c/5948803, crrev.com/c/5941351, crrev.com/c/5941098, crrev.com/c/5959254, Bug: 42323825, Bug: 40848017, Bug: 40736504, Bug: 40176424, Bug: 40927590).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność mapowania chromium-bidi, aby uwzględnić najnowsze poprawki i aktualizacje protokołu (crrev.com/c/5953339, crrev.com/c/5865478, Bug: 4226). (Uwaga: zmiana w mapowaniu została na krótko wycofana z powodu błędów WPT, a następnie ponownie wprowadzona (crrev.com/c/5961113)).
  • Architektura: zminimalizowano użycie obiektu sesji lokalnej wątku w ChromeDriver, aby zapobiec błędom związanym z udostępnianiem stanu między testami i uprościć jawne zarządzanie sesjami (crrev.com/c/5978486, Bug: 42323555). Przebudowano testy integracyjne w C++ tak, aby korzystały ze wspólnego środowiska testowego (crrev.com/c/5971474, błąd: 42323555).
  • Czyszczenie: usunięto przestarzałe obejścia związane z „starym trybem bez interfejsu graficznego”, ponieważ starszy kod chrome-headless-shell nie jest już obecny w Chrome (crrev.com/c/5961602, błąd: 42323387).
  • Czyszczenie: usunęliśmy nieużywany plik java_tests.txt, pozostałość po wcześniej usuniętych testach akceptacyjnych ChromeDrivera (crrev.com/c/5970994, błąd: 357737793).
  • Testowanie: dodaliśmy test integracyjny w C++, aby sprawdzić, czy ChromeDriver nie tworzy błędnie równoległych sesji z tym samym adresem URL user-data-dir ani nie przenosi adresów URL między sesjami, co mogłoby powodować niestabilność (crrev.com/c/5961137, błąd: 375312517).
  • Testowanie: zapewniliśmy, że tymczasowe instancje ChromeDrivera uruchamiane przez testy integracyjne są wyłączane tak szybko, jak to możliwe, aby zwolnić zasoby (crrev.com/c/5997970, błąd: 375974725).

ChromeDriver 131

Nowe funkcje

  • BiDi zaktualizowano zależność chromium-bidi mapper do wersji 0.8.0, która zawiera najnowsze aktualizacje protokołu i poprawki błędów (crrev.com/c/5899240, crrev.com/c/5865478, Bug: 4226).
  • Dostęp do DOM: dodaliśmy obsługę zamkniętych korzeni cienia w poleceniu GetElementShadowRoot. Wcześniej to polecenie zwracało błąd NoSuchShadowRoot podczas próby uzyskania dostępu do zamkniętego korzenia cienia (crrev.com/c/5923865, Bug: 372834222).
  • Dostęp do DOM: wdrożono obsługę identyfikatorów okien i ramek, co umożliwia zwracanie z wykonywanych skryptów odwołań do okien lub ramek (w tym ramek iframe poza procesem) w celu dalszego dereferencjonowania (crrev.com/c/5890437, crrev.com/c/5923555, Bug: 366272556, Bug: 40229283).
  • WebAuthn rozszerzyliśmy interfejs API automatyzacji WebAuthn o właściwości userNameuserDisplayName (crrev.com/c/5905423, błąd: 367915823).

Poprawki błędów

Zmiany wewnętrzne i refaktoryzacja

  • Bezpieczeństwo pamięci (spanification): zastąpiono niebezpieczne użycie wskaźnika base::spannet::HttpUtil (crrev.com/c/5854420) i przeniesiono base::File::WriteAtCurrentPos() do jego odpowiednika opartego na zakresie (crrev.com/c/5818972). Zmieniliśmy wartości wskaźnika mapy (np. w std::map, std::unordered_map) na raw_ptr (crrev.com/c/5867189, błąd: 329428315).
  • Standardy C++: zastąpiono makra atrybutów Abseil (ABSL_ATTRIBUTE_*) standardowymi makrami base/ (crrev.com/c/5852373). Uniknięto niechcianych kopii przez zastąpienie ciągów tekstowych i wektorów przekazywanych przez wartość odpowiednimi odwołaniami std::string_view lub odwołaniami stałymi oraz usunięto niepotrzebne kwalifikatory const z argumentów std::string_view (crrev.com/c/5914620, crrev.com/c/5906184, Bug: 369952985).
  • Infrastruktura: skonfigurowano Fuchsię tak, aby używała ChromeDrivera do sterowania web-engine (crrev.com/c/5867896, błąd: 40935291).
  • Testowanie: przenieśliśmy test WebAuthn z ramkami z ograniczeniami z dotychczasowego narzędzia do uruchamiania powłoki treści do Chrome bez interfejsu z ChromeDriverem, ponieważ dotychczasowe narzędzie wkrótce przestanie obsługiwać interfejs WebAuthn testdriver API (crrev.com/c/5920770, błąd: 372169469).

ChromeDriver 130

Nowe funkcje

Zmiany wewnętrzne i refaktoryzacja

  • Standardy C++: rozwiązano problemy z „regułą pięciu” w różnych klasach. Wtyczka stylu Chrome wymaga destruktorów poza wierszem, ale nie wymusza konstruktorów przenoszących poza wierszem, więc kompilator niejawnie usuwał operatory przenoszenia i cicho wracał do kopii. Brakujące deklaracje zostały dodane (crrev.com/c/5846757, błąd: 364788123).
  • Testowanie: uproszczono podsumowanie wyników testu wptrunner przez zastąpienie zakodowanego na stałe ciągu znaków chrome rzeczywistym używanym produktem i ukrycie w podsumowaniu szczegółowego artefaktu command (crrev.com/c/5825633, błąd: 41494889).
  • Testowanie: naprawiono masowe błędy testów integracyjnych ChromeDriver w systemie macOS 15 (Mac15) poprzez dwukrotne wydłużenie określonych limitów czasu, ponieważ testy w tym systemie operacyjnym wymagały znacznie więcej czasu niż w systemie Mac14. Do listy ignorowanych fragmentów kodu dodano też 4 testy wirtualnych czujników z powodu ich niestabilności (crrev.com/c/5817455, Błąd: 354939744).
  • Testowanie: wyłączono niestabilny test ChromeDriverSiteIsolation.testClickNavigateLocalToLocal na Macu (crrev.com/c/5806894, błąd: 361521805) i niestabilne testy ChromeDriverTest.testClickElement*ObscuredByScrollBar w systemie Windows 11 (crrev.com/c/5804083, błąd: 360058651).
  • Testowanie: usunęliśmy testy akceptacyjne ChromeDrivera (które pobierały starsze wersje Chrome, aby testować je z bieżącą wersją ChromeDrivera) z powodu kilku problemów z infrastrukturą. Mogą one zostać ponownie dodane później w ramach integracji ciągłej z automatycznym wdrażaniem (crrev.com/c/5812142, błąd: 357737793).

ChromeDriver 129

Nowe funkcje

  • BiDi zaktualizowano pomocnika inicjowania sesji ChromeDrivera, aby wysyłał polecenie session.new do narzędzia BiDi Mapper, co umożliwia mu bezpośrednie obsługiwanie funkcji. To pierwszy krok w kierunku usunięcia MapperOptions (crrev.com/c/5741432, Bug: 356371297). (Uwaga: powiązana zmiana crrev.com/c/5754093, która zapewniała przetworzone unhandledPromptBehavior, została wycofana crrev.com/c/5755744 z powodu spadku pokrycia testami).
  • Compute Pressure: dodano nowe polecenia rozszerzenia do zarządzania wirtualnym źródłem ciśnienia, wdrażając sekcję Automatyzacja specyfikacji Compute Pressure. Te polecenia są analizowane i przekazywane do warstwy CDP (crrev.com/c/5666583, błąd: 347031400).
  • Rozszerzenia MV2: zaktualizowaliśmy testy sprawdzające działanie MV2, aby używać ScopedTestMV2Enabler w ramach trwającego testu terenowego wycofywania rozszerzeń (platforma) Manifest V2 (crrev.com/c/5685054, błąd: 339061151).

Poprawki błędów

  • Klasyczna serializacja: śledzenie widzianych obiektów podczas serializacji Set w wynikach wykonania skryptu WebDriver Classic, zapobieganie nieskończonym pętlom i tolerowanie zastąpień Array.prototype.includes (crrev.com/c/5765833, Bug: 357472850). (Uwaga: ta zmiana została później cofnięta crrev.com/c/5773175 z powodu regresji WPT).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 128

Nowe funkcje

  • Możliwości: umożliwiliśmy używanie słownika w przypadku możliwości unhandledPromptBehavior, co jest zgodne ze standardowymi strukturami możliwości, chociaż nie jest jeszcze w pełni obsługiwane przez Mapper (crrev.com/c/5692204, crrev.com/c/5682934, Bug: 42323841).
  • Uruchamianie: dodano argument wiersza poleceń --ignore-explicit-port do ChromeDrivera. To tymczasowe obejście zmusza ChromeDrivera do ignorowania wszystkich jawnie podanych portów i zamiast tego do wyszukiwania i powiązywania wolnego portu, co rozwiązuje problemy z konkurencją portów TCP podczas wykonywania testów platformy internetowej (ma zostać usunięte po wersji M132) (crrev.com/c/5724574, crrev.com/c/5703976, Bug: 42323836).

Poprawki błędów

  • Czujniki: poprawiono polecenie ExecuteUpdateVirtualSensor, aby używać SendCommand() zamiast SendCommandAndGetResult(), ponieważ polecenie setSensorOverrideReadings CDP nie zwraca wartości (crrev.com/c/5703589).
  • FedCM rozwiązano problem z sytuacją wyścigu w testach FedCM ChromeDriver, ponieważ nie jest już sprawdzane, czy zwracana jest wartość NoSuchDialog, gdy oczekiwane jest okno, co zapobiega błędom, jeśli okno pojawi się zbyt szybko (crrev.com/c/5713515, błąd: 346530330).
  • Testowanie: ponownie włączyliśmy testy wirtualnego uwierzytelniania WebAuthn na komputerach Mac po rozwiązaniu problemu (crbug.com/40233722) (crrev.com/c/5635806, Bug: 329130177).
  • Komunikaty o błędach: poprawiliśmy błąd w komunikacie o błędzie dotyczącym polecenia execute/async (crrev.com/c/5697913).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 127

Poprawki błędów

  • Stabilność: naprawiono awarię ChromeDrivera, która występowała, gdy polecenie target.detachFromTarget (lub zdarzenie target.detachedFromTarget) było odbierane, gdy klient Narzędzi deweloperskich aktywnie przetwarzał inne polecenia, co zapobiegało przedwczesnemu zwalnianiu obiektów WebViewDevToolsClient (crrev.com/c/5527584, Bug: 339773537).
  • Stabilność: rozwiązano problem polegający na tym, że polecenie Switch To Window mogło nieprawidłowo zwracać „nieznany błąd”, jeśli widok internetowy został odłączony podczas wykonywania polecenia. Teraz prawidłowo ignoruje wewnętrzny błąd „nie znaleziono widoku internetowego”, co w przypadku zamknięcia okna docelowego powoduje standardową odpowiedź „nie ma takiego okna” (crrev.com/c/5583730, Błąd: 338616700).
  • Stabilność: zapewniono, że ChromeDriver toleruje odłączanie docelowego elementu WebView podczas aktualizowania wewnętrznej listy elementów WebView. Jeśli podczas aktualizacji odłączy się element docelowy, ChromeDriver ponowi próbę zamiast zwracać niestandardowy błąd, co zmniejszy niestabilność w środowiskach, w których okna są szybko tworzone i usuwane (crrev.com/c/5565103, Błąd: 338616700, Błąd: 4771).
  • Nawigacja: dodano do ChromeDrivera logikę oczekiwania na nawigację wykrytą przez zdalny punkt końcowy podczas wyszukiwania elementów. Zapobiega to zwracaniu przez ChromeDriver niestandardowego błędu lub awarii z błędem DCHECK, gdy nawigacja zbiega się z operacją wyszukiwania elementu (crrev.com/c/5563113, cofnięcie crrev.com/c/5563420, ponowne wdrożenie crrev.com/c/5562089, Bug: 4771).
  • BiDi rozwiązano problem z sytuacją wyścigu między ChromeDriverem a BiDiMapperem podczas tworzenia sesji. ChromeDriver czeka teraz na zwrócenie przez polecenie browsingContext.getTree niepustej listy, zanim zakończy polecenie NewSession, co zapewnia prawidłową rejestrację nowo utworzonej domyślnej karty (crrev.com/c/5575497, błąd: 341048786, błąd: 1503101).
  • BiDi rozwiązano problem, w którym po utworzeniu sesji fokus pozostawał na karcie w tle BiDiMapper zamiast na aktywnej karcie użytkownika. Aby to naprawić, jawnie przyznano fokus pierwszej karcie użytkownika (crrev.com/c/5594070, błąd: 341048786, błąd: 1503101).
  • BiDi zatrzymano próbę dołączenia elementu docelowego przez ChromeDriver podczas obsługi poleceń BiDi (np. browsingContext.close), aby zapobiec nieokreślonemu wstrzymaniu poleceń CDP, jeśli otwarty jest prompt użytkownika. Obsługa jest w całości przekazywana do połączonej już warstwy BiDi (crrev.com/c/5541915, cofnięcie crrev.com/c/5539818, ponowne wdrożenie crrev.com/c/5522393, błąd: 4758).
  • FedCM naprawiono błąd testu WPT fedcm-loginhint.https.html, w którym okno dialogowe było nieprawidłowo oznaczane jako zamknięte. Stan jest teraz aktualizowany tylko wtedy, gdy operacja selectAccount zakończy się powodzeniem (crrev.com/c/5398379, błąd: 331237776).
  • Testowanie: naprawiono błąd DCHECK podczas analizowania pliku JSON, gdy znak osiągnął dokładnie granicę kExtendedASCIIStart (crrev.com/c/5565276, błąd: 40284755).
  • Testowanie: naprawiono test WPT scrollend-event-fires-to-iframe-window.html, używając elementu iframe jako źródła przewijania i zaokrąglając dane wejściowe ruchu wskaźnika do liczb całkowitych, co zapobiega błędom ChromeDrivera związanym z ułamkowymi pozycjami dotyku (crrev.com/c/5570150, błąd: 340956654).
  • Testowanie: ulepszone diagnostyka w testach integracyjnych ChromeDrivera przez drukowanie wypróbowanych ścieżek, gdy run_py_tests.py nie może zlokalizować pliku binarnego przeglądarki (crrev.com/c/5604204, błąd: 4781).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 126

Nowe funkcje

  • BiDi zaktualizowano ChromeDrivera, aby podczas uruchamiania przeglądarki w sesji WebDriver BiDi przekazywał przełącznik --disable-background-timer-throttling, co zapobiega ograniczaniu działania kart w tle (crrev.com/c/5515013, błąd: 4762).
  • BiDi dodaliśmy obsługę narzędzia BiDi Mapper, które umożliwia wysyłanie wiadomości debugowania (sendDebugMessage), gdy wymagane jest logowanie szczegółowe. ChromeDriver oznacza te zdarzenia jako bidi messages do analizowania, chociaż BidiTracker obecnie je ignoruje (crrev.com/c/5465782, Bug: 4753).
  • Klasyczny: zaimplementowano automatyczne akceptowanie wszystkich okien beforeunload (alertów) zgodnie ze standardem WebDriver, który określa, że nigdy nie mogą się one pojawiać w sesji klasycznej (crrev.com/c/5517510, błąd: 4757).

Poprawki błędów

  • Klasyczna: usunięto zbędne ograniczenie maksymalnej liczby prób w logice pobierania elementu. Pobieranie jest teraz ograniczone tylko przez domyślny limit czasu, co zapobiega sytuacjom, w których operacja może zakończyć się przedwcześnie i nieprawidłowo zwrócić niestandardowy błąd NoSuchExecutionContext (crrev.com/c/5478668, Bug: 4379).
  • Wersja klasyczna: naprawiono regresję, która powodowała, że ChromeDriver odpowiadał błędem javascript error zamiast invalid selector, gdy żądanie pobrania używało nieprawidłowej strategii lokalizacji (crrev.com/c/5490662, Bug: 4743).
  • Klasyczna: zapewniono, że polecenia okna na Androidzie (Maksymalizuj, Minimalizuj, Pełny ekran) zwracają standardowy błąd unsupported operation zamiast kontynuować działanie, ponieważ te działania nie są obsługiwane przez przeglądarkę na Androidzie (crrev.com/c/5490224, błąd: 4689).
  • Klasyczna: poprawiono ChromeDrivera, aby nigdy nie zwracał wewnętrznego kodu błędu kChromeNotReachable. Teraz prawidłowo zwraca standardowy błąd kSessionNotCreated, gdy klient HTTP nie może połączyć się z przeglądarką (crrev.com/c/5476390, błąd: 4379).
  • Klasyczna: poprawiono ChromeDriver, aby nigdy nie zwracał niestandardowego błędu kNoSuchExecutionContext podczas wykonywania poleceń okna (crrev.com/c/5483606, Bug: 4379).
  • Wersja klasyczna: usunięto z listy obsługiwanych kodów błędu nieużywany i nieobsługiwany kod błędu kForbidden (crrev.com/c/5476927, błąd: 4379).
  • BiDi zaktualizowano ChromeDriver, aby przed zamknięciem dedykowanej karty Mapper wyświetlał użytkownikowi prośbę o potwierdzenie, co jest zgodne ze zmianami wprowadzonymi w chromium-bidi (crrev.com/c/5508600, błąd: 4761).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 125

Nowe funkcje

  • Pozycja urządzenia: dodano polecenia ChromeDriver do zarządzania pozycją urządzenia, które obsługują sekcję Automatyzacja specyfikacji pozycji urządzenia. Umożliwia to zastąpienie pozycji urządzenia ustawionej przez sprzęt i usunięcie tego zastąpienia za pomocą poleceń rozszerzenia (crrev.com/c/5437993, błąd: 330376761).

Poprawki błędów

  • BiDi zmieniono pośrednie miejsce przechowywania przychodzącego polecenia BiDi idDouble na base::Value. Dzięki temu wartość id jest dokładnie odzwierciedlana w odpowiedzi bez nieoczekiwanego końcowego punktu dziesiętnego lub części ułamkowej po serializacji JSON (crrev.com/c/5444225, Bug: 4676).
  • FedCM przywróciliśmy zmianę umożliwiającą CORS w punkcie końcowym potwierdzenia tożsamości po tym, jak dostawcy tożsamości byli gotowi (crrev.com/c/5440132, cofnięcie crrev.com/c/5381316, przywrócenie crrev.com/c/5370086, błąd: 40284123).
  • FedCM naprawiono błąd, w którym okno było nieprawidłowo oznaczane jako zamknięte. Zapewniono, że jest ono oznaczane jako zamknięte tylko wtedy, gdy polecenie selectAccount zakończy się powodzeniem. Rozwiązuje to problemy z testami, gdy funkcja selectAccount jest wywoływana bez oczekiwanego selektora kont (crrev.com/c/5398379, Bug: 331237776). Uniknięto wywoływania funkcji fedcm_get_and_select_first_account, gdy nie jest oczekiwany selektor konta, aby zapobiec wywoływaniu tego błędu (crrev.com/c/5398800).
  • Testowanie: naprawiono błąd w teście popover-light-dismiss.html WPT przez połączenie sekwencji działań i użycie dokumentu głównej ramki jako źródła działania pointerUp, co zapobiega nieprawidłowemu wysyłaniu przez ChromeDrivera współbieżnych zdarzeń pointerUp w ramkach (crrev.com/c/5402096, Bug: 325981758).
  • Testowanie: poprawiono wptrunner, aby prawidłowo przekazywać dane wyjściowe stderr (w tym dzienniki przeglądarki zapisywane podczas korzystania z --enable-chrome-logs) do artefaktu stderr zamiast do crash_log, oraz przeniesiono błędy platformy testowej (zawierające zrzut stosu przeglądarki) do crash_log (crrev.com/c/5437023, błąd: 41494889).
  • Testowanie: poprawiono wptrunner, aby kierować logi przeglądarki do prawidłowego artefaktu testowego przez grupowanie danych wyjściowych według procesu ChromeDriver, co zapobiega przeplataniu się i osieroceniu logów podczas równoległego wykonywania testów (crrev.com/c/5320681, błąd: 41494889).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper, integrując najnowsze ulepszenia protokołu i poprawki błędów (crrev.com/c/5433300, crrev.com/c/5393442, Bug: 4226). (Uwaga: poprzednia zmiana crrev.com/c/5374366 została wycofana crrev.com/c/5374839, a następnie ponownie wprowadzona z wyłączonymi niestabilnymi testami i zaktualizowanymi licencjami crrev.com/c/5374914).
  • Diagnostyka: przekierowanie wyjątków ChromeDriver do StackTrace Chrome. Gdy sesja zostanie usunięta z powodu awarii strony lub karty (np. wiszące wskaźniki na komputerach Mac), w komunikacie o błędzie pojawi się ślad stosu przeglądarki, co znacznie ułatwi debugowanie (crrev.com/c/5374371, Bug: 330009945).
  • Testowanie: tymczasowo wyłączono niestabilny test integracyjny testTakeLargeElementViewportScreenshot na komputerach Mac (szczególnie mac-arm64) (crrev.com/c/5447515, błąd: 333826980).
  • Testowanie: zaktualizowaliśmy argumenty uruchamiania ChromeDrivera w środowiskach testowych (CEL), aby były zgodne ze składnią Selenium 4+ (crrev.com/c/5448812, błąd: 308885357).
  • Testowanie: wyodrębniono dokładny wiersz poleceń chrome użyty do uruchomienia każdego testu WPT z dziennika chromedriver do artefaktu ResultDB o nazwie command. Ułatwia to ręczne debugowanie za pomocą run_blink_wptserve.py (crrev.com/c/5441189, błąd: 41494889).
  • Zależności: usunięto Closure z listy zależności selenium-atoms, a w konsekwencji z informacji o oprogramowaniu innych firm w ChromeDriverze (crrev.com/c/5424804, błąd: 4226).
  • Zależności: usunięto nieużywane zależności w dynamic_annotations w całym repozytorium podstawowym (crrev.com/c/3398908, błąd: 1282422).
  • Formatowanie: zastosowano nową konfigurację clang-format do problematycznych nagłówków w systemie Windows (crrev.com/c/5367127, błąd: 329138753).

ChromeDriver 124

Nowe funkcje

  • BiDi dodano krok kompilacji, aby zminimalizować skrypt BiDiMapper przed osadzeniem go w ChromeDriverze, ponieważ mapa źródła jest teraz pobierana z CIPD w wersji niezminimalizowanej (crrev.com/c/5310075, błąd: 4226).
  • WebAuthn dodano polecenie SetCredentialProperties, które umożliwia klientom aktualizowanie flag kopii zapasowych danych logowania WebAuthn (crrev.com/c/5296389, błąd: 40945430).
  • WebAuthn udostępniliśmy flagi kopii zapasowej WebAuthn w WebDriverze, dodając defaultBackupEligibilitydefaultBackupState do polecenia „Add Virtual Authenticator” oraz backupEligibilitybackupState do polecenia „Add Credential” (crrev.com/c/5297117, Bug: 40945430).
  • Testowanie: dodano obsługę argumentu wiersza poleceń --failfast do testów integracyjnych ChromeDriver w Pythonie, co umożliwia zatrzymanie testu przy pierwszym błędzie, aby ułatwić debugowanie (crrev.com/c/5374546).
  • Testowanie: dodano obsługę content-shell dla polecenia sterownika SetRPHRegistrationMode za pomocą interfejsów API testdriver-vendor.js (crrev.com/c/5205730, błąd: 1359103).

Poprawki błędów

  • Stabilność: przeniesiono sprawdzanie wygaśnięcia limitu czasu do treści pętli poll-and-wait w ChromeImpl::SetWindowBounds. Rozwiązuje to problem, który powodował, że przy dużym obciążeniu limit czasu mógł upłynąć przed pierwszą iteracją pętli (crrev.com/c/5366899, Bug: 4642).
  • Wydajność: zminimalizowano czas oczekiwania w ChromeImpl::SetWindowBounds przez zastosowanie wzrastającego czasu do ponowienia tylko wtedy, gdy granice okna nie osiągnęły jeszcze pożądanego stanu, co zmniejsza opóźnienie konfiguracji WPT (crrev.com/c/5366457, błąd: 4642).
  • Uruchamianie: zaktualizowano ChromeDrivera, aby podczas określania katalogu danych dla content_shell używał --user-data-dir zamiast --data-path. Jest to zgodne z tym, jak odczytuje aktywny port Narzędzi deweloperskich (crrev.com/c/5226609, błąd: 1295373).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper, uwzględniając najnowsze poprawki i funkcje protokołu (crrev.com/c/5374366, crrev.com/c/5349491, crrev.com/c/5317650, Bug: 4226). (Uwaga: zmiana została na krótko wycofana, a następnie ponownie wprowadzona z powodu niepowodzenia testów crrev.com/c/5374839, crrev.com/c/5368680, crrev.com/c/5319423).
  • Zastąpiono użycia absl::optional elementem std::optional w całej bazie kodu po przekształceniu absl::optional w alias typu (crrev.com/c/5296147, Błąd: 1500249).
  • Rozszerzono zakres MiraclePtr (raw_ptr) na dodatkowe kontenery standardowe, w tym std::list, std::unordered_set, base::flat_set, std::stackstd::queue (crrev.com/c/5306923, Bug: 325302189).
  • Zmieniono funkcję WriteBigEndian(), aby używać konwersji base::numerics-bajtowych lub BigEndianWriter (która teraz akceptuje base::span), co zwiększa bezpieczeństwo podczas zapisywania bajtów w formacie big-endian (crrev.com/c/5202348, Bug: 1490484).
  • Przełączono się na używanie ChromeDrivera do uruchamiania testów platformy internetowej (WPT) w content_shell (z wyjątkiem testów wirtualnych i testów porównawczych do czasu naprawienia błędów w górę strumienia) (crrev.com/c/5347371, Bug: 40214293).
  • Przekształcono wszystkie dotychczasowe testy internetowe interfejsu Generic Sensor, aby zamiast atrap JS/Mojo używały test_driver.js i wirtualnych czujników. Zgodnie z nową sekcją Automatyzacja w specyfikacji interfejsu Generic Sensor (crrev.com/c/4770867, błąd: 1278377, błąd: 1471996).
  • Ulepszone generowanie licencji dzięki dodaniu append_notices.py do generowania kredytów dla zależności BiDiMapper i zaktualizowaniu wywołania licenses.py, aby opierało się wyłącznie na pliku README selenium-atoms w przypadku informacji o oprogramowaniu innych firm (crrev.com/c/5350601, crrev.com/c/5339957, Bug: 4729, Bug: 4735).

ChromeDriver 123

Nowe funkcje

  • FedCM wyświetlanie okien modalnych w przypadku przepływów przycisku pojedynczego konta, w tym dodanie obsługi widoków modalnych w interfejsie automatyzacji (crrev.com/c/5231438, błąd: 1518356).
  • FedCM wdrożono obsługę ChromeDrivera w zakresie otwierania linków w oknach FedCM, traktując je jako przyciski dla uproszczenia automatyzacji (crrev.com/c/5225543, błąd: 1513520).
  • Czujniki: zmodyfikowano wirtualne polecenia czujnika WebDriver, aby odczytywać kąty Eulera (alfa-beta-gamma) zamiast kwaternionów, zgodnie z najnowszymi aktualizacjami specyfikacji czujnika orientacji. Wewnętrzne warstwy CDP i usług nadal używają kwaternionów za pomocą kroku konwersji (crrev.com/c/5229177, błąd: 1506995, błąd: 1520912, błąd: 1520919).

Poprawki błędów

  • Klasyczny: rozwiązaliśmy problem, który powodował, że zwracanie węzła z innej ramki za pomocą skryptu nieprawidłowo powodowało błąd StaleElementReference. Teraz zwraca on prawidłowo błąd JavaScriptError, aby zachować zgodność ze standardem WebDriver (crrev.com/c/5222746, Bug: 4668).
  • Testowanie: naprawiliśmy test zdarzeń przewijania, który nie działał w Chrome/ChromeDriver, ponieważ przeciąganie dotykowe wykraczało poza granice okna. Przeciąganie jest teraz prawidłowo ograniczone (crrev.com/c/5297676, błąd: 40832230).
  • Testowanie: poprawiono open-close.https.html testy MIDI, aby nie tworzyć niepotrzebnie obietnic, co pozwala uniknąć nieobsłużonych odrzuceń obietnic, które powodowały niepowodzenie testu w ChromeDriverze (crrev.com/c/5239869, błąd: 1499775).
  • Testowanie: poprawiono zbiór uprawnień w wpt_internal/system-wake-lock/idlharness* testach, w których test_driver.set_permission(...) nieprawidłowo przekazywał false zamiast null lub WindowProxy, co wprowadzało w błąd ChromeDrivera (crrev.com/c/5271087, błąd: 40287920).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper, aby pobrać najnowsze poprawki i funkcje (crrev.com/c/5205452, crrev.com/c/5255321, crrev.com/c/5238148, crrev.com/c/5237125, Bug: 4226). (Uwaga: zmiana została na krótko cofnięta, a następnie ponownie wprowadzona z powodu błędów kompilacji crrev.com/c/5238855).
  • Poprawiliśmy jakość kodu ChromeDriver, eliminując niebezpieczne statyczne rzutowania z klasy bazowej na klasę pochodną w przypadku ChromeImplDevToolsClientImpl, co zapobiega potencjalnym niezdefiniowanym zachowaniom (crrev.com/c/5277062, crrev.com/c/5272562, Bug: 4702).
  • Usunięto niebezpieczne rzutowania w WebViewImpl (crrev.com/c/5272230, Bug: 4702).
  • Usunięto przestarzałe formy base::Base64Encode() i zastąpiono je nowszą formą std::string, która zwraca wariant zamiast używać parametrów wyjściowych (crrev.com/c/5179900, crrev.com/c/5246585, Bug: 1486214).
  • Zaktualizowano wszystkie dyrektywy #include dla base/..., aby używać "" zamiast <> w celu zachowania spójności (crrev.com/c/5237376, błąd: 1500249).
  • Przeniesiono wszystkie pliki DIR_METADATAchrome/test/ do Buganizera (crrev.com/c/5284119, błąd: 1518875).
  • Zapobiegliśmy tworzeniu przez wptrunner lokalnego pliku - podczas przekazywania -vvv przez usunięcie niepotrzebnego przełącznika chromedriver --log-path=-, ponieważ stderr jest już przekierowywany do stdout (crrev.com/c/5282721).
  • Ulepszono narzędzie wptrunner, aby podsumowywać wyniki testów w przypadku regresji, w tym wyniki testów podrzędnych i ślady stosu ChromeDriver bezpośrednio w danych wyjściowych podsumowania (crrev.com/c/5238662, błąd: 1521922).
  • Uproszczone debugowanie testów integracyjnych ChromeDrivera dzięki wprowadzeniu parametru --remote-chromedriver-port do run_py_tests.py, co umożliwia połączenie z istniejącą instancją działającą w debugerze (crrev.com/c/5237254, błąd: 4693).
  • Uniknięto wywołań dwuargumentowych funkcji base::HexEncode()RandBytes(), aby kompilator mógł wywnioskować prawidłowy rozmiar, co uprościło kod (crrev.com/c/5241357).

ChromeDriver 122

Poprawki błędów

  • BiDi zaktualizowano serializację głębokich węzłów, aby uwzględniała loaderId, co umożliwia ChromeDriverowi i BiDi Mapperowi prawidłowe odwoływanie się do węzłów i dereferencję węzłów bez nadmiernej liczby podróży w obie strony (crrev.com/c/5116240, błąd: 1420968).
  • Możliwości: zaktualizowano ChromeDriver, aby natychmiast po uruchomieniu przekazywał do BiDi Mapper możliwość acceptInsecureCerts, co zapobiega sytuacjom wyścigu, w których możliwość może zostać zastosowana zbyt późno (crrev.com/c/5125711, błąd: 4643).
  • Klasyczny: zmieniliśmy architekturę generowania odwołań do elementów, aby używać formatu <frame_id>.<loader_id>.<backend_node_id>. Dzięki temu ChromeDriver może jednoznacznie odróżniać prawidłowe, nieznane i nieaktualne odwołania do elementów podczas nawigacji po ramkach i aktualizacji DOM (crrev.com/c/5094519, błąd: 4379).
  • Classic: naprawiono problem, w którym polecenie window/handles mogło zakończyć się niepowodzeniem z błędem „no such window”, jeśli nowo utworzone okno docelowe zostało zamknięte (np. w wyniku sytuacji wyścigu) zanim ChromeDriver mógł się do niego podłączyć (crrev.com/c/5147409, Bug: 1506833).
  • FedCM dodano wewnętrzny detektor zdarzeń, który powiadamia o zamknięciu okna FedCM, co zapobiega zwracaniu przez polecenie dialogtype nieaktualnych danych, jeśli okno zostało zamknięte z zewnątrz (np. za pomocą AbortController.abort) (crrev.com/c/5067504, błąd: 1506292).
  • FedCM usunięto prefiks dostawcy z polecenia ClickDialogButton, ponieważ został on zatwierdzony w specyfikacji FedCM (crrev.com/c/5092527, błąd: 1499341).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper do najnowszej wersji (crrev.com/c/5205452, błąd: 4226).
  • Zmniejszono ruch ChromeDriver i protokołu narzędzi deweloperskich w Chrome (CDP) przez usunięcie zbędnych wywołań Page.enable wysyłanych z każdego DevToolsEventListener, ponieważ DevToolsClientImpl obsługuje już to działanie dla każdego miejsca docelowego (crrev.com/c/5088789, błąd: 4600).
  • Wszystkie narzędzia do tworzenia Wptrunnera dla content_shell zostały zmienione na eksperymentalne, ponieważ uruchamianie testów w trybie protokołu nie jest obecnie w pełni obsługiwane, a integracja ChromeDrivera jest w toku (crrev.com/c/5225148, błąd: 1474702).
  • Pominięto testy, które wymagają window.test_driver_internal.get_computed_role na content_shell, ponieważ nie zostało to jeszcze wdrożone, co zapobiega TypeError błędom (crrev.com/c/5189678, błąd: 1517744).
  • Ponownie wdrożono refaktoryzację, aby używać niezależnych od platformy IS_OZONE_{X11, WAYLAND} flag zamiast OZONE_PLATFORM_* (crrev.com/c/5086329, Bug: 1500494).
  • Zaktualizowano zależność selenium-atoms do najnowszej wersji (crrev.com/c/5110808, błąd: 4662).
  • Poprawiono logikę testów SnapEvents uruchamianych na pełnej wersji binarnej Chrome przez zaokrąglanie danych wejściowych dotyczących ruchu wskaźnika, wymuszanie parametru origin w przypadku przewijania i używanie asercji przybliżonych (assert_approx_equals) do obsługi różnic ułamkowych w przewijaniu lub przesunięciu (crrev.com/c/5097343).
  • Dodano StringPrintfNonConstexpr(), aby odróżnić go od StringPrintf(), gdy ciągi formatujące nie są stałymi czasu kompilacji (crrev.com/c/4950568, Bug: 1371963).
  • Zapewniono, że chromium::import! makro Rust do ucieczki znaków używa funkcji iniektywnej, aby zapobiegać kolizjom w generowanych nazwach docelowych GN (crrev.com/c/5132119, Bug: 1512174).
  • Uproszczono implementację ScopedTempDirWithRetry przez dodanie konstruktora i wczesnych zwrotów w destruktorze (crrev.com/c/5113843).

ChromeDriver 121

Nowe funkcje

  • Testowanie: dodano obsługę uruchamiania zintegrowanych testów ChromeDrivera (chromedriver_py_test) w chrome-headless-shell oprócz standardowej przeglądarki Chrome na robotach kompilujących. Obejmuje to możliwość wykrywania pliku binarnego przeglądarki na podstawie parametru --browser-name i warunkowego uruchamiania określonych zestawów testów (crrev.com/c/4995189, crrev.com/c/4989442, Bug: 4358).

Poprawki błędów

  • Stabilność: zainicjowano domyślny element KeyboardLayoutEngine jako StubKeyboardLayoutEngine, aby zapobiec awariom ChromeDrivera spowodowanym przez trafienie DCHECKKeyboardLayoutEngineManager::SetKeyboardLayoutEngine (crrev.com/c/5017859, błąd: 4625).
  • Stabilność: rozwiązano problem z niestabilnością, który powodował awarię ChromeDrivera, gdy wątek sesji wysyłał żądanie zamknięcia połączenia po tym, jak klient wysłał już żądanie zamknięcia tego samego połączenia (crrev.com/c/4994636, Bug: 4606).
  • Zarządzanie zasobami: naprawiono wycieki zasobów w testach integracyjnych ChromeDrivera (RemoteBrowserTest) poprzez zapewnienie, że proces przeglądarki jest zamykany nawet wtedy, gdy polecenie ChromeDrivera zgłosi wyjątek (crrev.com/c/5009554, błąd: 4614).
  • Zarządzanie zasobami: w testach integracyjnych ChromeDrivera zaimplementowano logikę wykrywania i zamykania procesów przeglądarki porzuconych przez proces ChromeDrivera (crrev.com/c/5014093, błąd: 4617).
  • Uruchamianie: rozwiązaliśmy problem, w którym funkcja chrome-headless-shell zwracała pustą listę docelową, co uniemożliwiało utworzenie sesji. Aby to naprawić, dodaliśmy argument data:, do wiersza poleceń przeglądarki, gdy nazwa przeglądarki to chrome-headless-shell (crrev.com/c/5010392, crrev.com/c/5009535, Bug: 4615, Bug: 4358).
  • FedCM dodaliśmy nowe zdarzenie, które powiadamia o zamknięciu okna FedCM.Dzięki temu dialogtype i inne polecenia nie zwracają nieaktualnych danych, jeśli okno zostało zamknięte z zewnątrz (np. za pomocą AbortController.abort) (crrev.com/c/5067504, błąd: 1506292).
  • Testowanie: naprawiliśmy i ponownie włączyliśmy wszystkie testy integracyjne ChromeDrivera, które były wcześniej wyłączone w przypadku chrome-headless-shell w systemie Windows (crrev.com/c/5027594, błąd: 4358).
  • Testowanie: osłabiliśmy zbyt rygorystyczne asercje w testElementRegionTest, aby dostosować je do standardu WebDrivera, co pozwoliło wyeliminować niestabilność spowodowaną specyfiką renderowania w przeglądarce (crrev.com/c/5017865, Bug: 4526).

Zmiany wewnętrzne i refaktoryzacja

ChromeDriver 120

Nowe funkcje

  • BiDi dodano obsługę poleceń session.newsession.end, co umożliwia użytkownikom tworzenie i zamykanie sesji bezpośrednio za pomocą poleceń BiDi (crrev.com/c/4941941, błąd: 4496).
  • BiDi dodano obsługę polecenia session.status PureBiDi, które umożliwia użytkownikom nawiązanie połączenia WebSocket niezwiązanego z żadną sesją i pobranie stanu sesji (crrev.com/c/4938596, błąd: 4496). (Ponownie wdrożono po wcześniejszym wycofaniu zmian w crrev.com/c/4922097)
  • BiDi zwiększono zależność BiDi Mapper i dostosowano ją do nowego, uproszczonego procesu uruchamiania Mapper (crrev.com/c/4952609, błąd: 4226).
  • Czujniki: wdrożono wirtualne polecenia czujników w browser_protocol.pdl i warstwie CDP (domena emulacji), dodając obsługę sekcji automatyzacji w specyfikacji ogólnego czujnika (crrev.com/c/4770864, błąd: 1278377).
  • Czujniki: dodano polecenia rozszerzenia ChromeDriver do zarządzania wirtualnymi czujnikami, tłumaczenia parametrów WebDriver na nowe wywołania CDP (crrev.com/c/4770866, Bug: 1278377).
  • Czujniki: dodano ścieżkę kodu content_shell do manipulowania czujnikami wirtualnymi za pomocą testdriver.js, całkowicie pomijając ChromeDriver w przypadku testów internetowych (crrev.com/c/4770865, błąd: 1278377).
  • Ograniczenia śledzenia: dodano obsługę w ChromeDriverze ograniczeń śledzenia odbić (DIPS), co umożliwia automatyzację specyfikacji nav-tracking-mitigations (crrev.com/c/4873672, błąd: 1474656). (Uwaga: ta zmiana została tymczasowo wycofana z powodu błędów testów na komputerach Mac w crrev.com/c/4938394).

Poprawki błędów

  • Startup: dodano do ChromeDrivera wykrywanie Headless Shell, co umożliwia mu wyszukiwanie pliku binarnego chrome-headless-shell, jeśli zostanie to zażądane za pomocą funkcji i nie zostanie podana jawna ścieżka (crrev.com/c/4987262, Błąd: 4358). (Ponowne wprowadzenie po wcześniejszym wycofaniu zmian w crrev.com/c/4984449)
  • WebSockets wprowadzono częściową obsługę uzgadniania zamknięcia WebSocket, dzięki czemu ChromeDriver odpowiada ramką CLOSE, gdy otrzyma ją z końca zdalnego (crrev.com/c/4931500, błąd: 4499).
  • Uprawnienia: udostępniono options.disclaim_responsibility jako flagę kompilacji, aby umożliwić kompilacjom dostawców (np. Microsoft Teams) wyłączenie tej funkcji, co zapobiega wstrzymywaniu automatyzacji testów przez monity o uprawnienia w systemie macOS (crrev.com/c/4929495, błąd: 1223643).
  • Zgodność ze standardem C++: naprawiono niezdefiniowane zachowanie (UB) wykryte przez UBSan podczas rzutowania liczby zmiennoprzecinkowej o wartości spoza zakresu na liczbę całkowitą przez dodanie sprawdzania zakresu (crrev.com/c/4980055, błąd: 1394755).
  • FedCM usunięto obsługę starej składni nagłówka, aby zapewnić zgodność ze standardową składnią login-status-http (crrev.com/c/4957073, błąd: 1381501).

Zmiany wewnętrzne i refaktoryzacja

  • Dodano test integracji testReturnFrameElement, aby sprawdzić, jak ChromeDriver traktuje window.frameElement jako nieaktualne odwołanie (crrev.com/c/4983549, Bug: 4477).
  • Ulepszone rejestrowanie przez zapewnienie, że ChromeDriver rejestruje konkretne ścieżki, w których próbuje znaleźć plik binarny przeglądarki (crrev.com/c/4976116, Błąd: 4539).
  • Zmiana nazw różnych funkcji base::Time na bardziej opisowe (np. FromDoubleT() na FromSecondsSinceUnixEpoch()) (crrev.com/c/4956111).
  • Przebudowano konstruktor net::StringIOBuffer i instancje IOBuffer, aby uniknąć niepotrzebnego kopiowania ciągów znaków i alokacji o zerowej długości (crrev.com/c/4938384, crrev.com/c/4959174).
  • Ulepszono obsługę ciągów znaków przez zastąpienie znaku base::StrCat znakiem + w odpowiednich miejscach i użycie znaku base::AppendHexEncodedByte() (crrev.com/c/4963465, crrev.com/c/4977165).
  • //chrome* testach zmieniliśmy nazwę DIR_SOURCE_ROOT na DIR_SRC_TEST_DATA_ROOT, w celu uniknięcia wątpliwości (crrev.com/c/4916045, błąd: 1264897).
  • Wyłączono niestabilne testy PureBidiTest na platformach Mac (crrev.com/c/4983555, Bug: 1496826).

ChromeDriver 119

Nowe funkcje

  • BiDi wdrożono obsługę rozwiązywania słabych lokalnych odwołań do obiektów zwracanych przez zdalny punkt końcowy podczas zdalnych wywołań funkcji (crrev.com/c/4886760, Bug: 4536).
  • FedCM dodano polecenie z prefiksem dostawcy confirmidpsignin, aby obsługiwać testowanie origin interfejsu IDP Sign-In Status API (crrev.com/c/4811725, błąd: 1451884).

Poprawki błędów

  • Emulacja urządzeń mobilnych: usunęliśmy problem, który polegał na tym, że predefiniowane urządzenia bez wskazówek dotyczących klienta (np. starsze konfiguracje) były uszkodzone przez wypełnianie ich rozsądnymi wartościami domyślnymi (crrev.com/c/4887254, Błąd: 4550).
  • Klasyczny: stała serializacja obiektów MapSet; są one teraz prawidłowo serializowane jako Object, a nie Collection, ponieważ nie mają właściwości length (crrev.com/c/4881378, Błąd: 4031).
  • Klasyczna: przywróciliśmy logikę, która zawsze pobiera i używa najnowszej zgodnej wersji ChromeDrivera podczas testów, a do konkretnych wersji wraca tylko w przypadku problemów ze zgodnością (crrev.com/c/4779613, cofnięcie crrev.com/c/4778973).
  • FedCM ujednoliciliśmy polecenia automatyzacji przeglądarki, zmieniając nazwę Signin na Login (confirmidplogin), aby dostosować ją do najnowszych dyskusji na temat specyfikacji FedCM (crrev.com/c/4901302, błąd: 1451884).
  • Testowanie: naprawiono testy FedCM, które kończyły się niepowodzeniem, gdy pliki cookie innych firm były wyłączone. W tym celu podczas wykonywania testu włączono interfejs IDP Sign-In Status API (crrev.com/c/4889802, błąd: 1484833).
  • Testowanie: w programach testujących zastąpiono nieprawidłowy symbol zastępczy adresu URL ~NOTFOUND symbolem ^NOTFOUND, aby dostosować się do nadchodzących zmian w standardzie adresów URL w Chromium (crrev.com/c/4845589, błąd: 1416013).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper do wersji 0.4.27, co wprowadza najnowsze poprawki i funkcje (crrev.com/c/4862031, crrev.com/c/4890322).
  • Zastąpiliśmy w //url kilka interfejsów API wskaźnika/długości interfejsem std::string_view, aby zwiększyć bezpieczeństwo i wygodę (crrev.com/c/4897456).
  • Przekształciliśmy narzędzie generateWebDriverValue, aby natywnie korzystało z opcji głębokiej serializacji (serializationOptions.serialization: deep) udostępnianej przez protokół BiDi (crrev.com/c/4889644).
  • Dodaliśmy testy integracyjne, aby sprawdzić, czy wyszukiwanie w przypadku nieaktualnego odwołania do elementu prawidłowo zwraca błąd „nieaktualne odwołanie do elementu” (crrev.com/c/4886793, Błąd: 4440).
  • Ulepszone formatowanie stylu kodu w call_function.js (crrev.com/c/4882511, błąd: 4031).
  • Ulepszone opinie użytkowników dzięki wyraźnemu informowaniu ich o tym, że w przypadku połączenia przez WebSocket obsługiwane są potoki, które są zalecane ze względu na większą niezawodność i bezpieczeństwo (crrev.com/c/4882626, błąd: 3480).
  • Zaktualizowano konfigurację pakietu WPT, aby archiwizować results.html w przypadku testów webdriver_tests_suite, co zapewnia lepszy interfejs do wyświetlania wyników (crrev.com/c/4873223).
  • Naprawiono integrację Narzędzi deweloperskich z WebView, oznaczając WebView WebContents i ustawiając ich typ Narzędzi deweloperskich na popup_page zamiast other (crrev.com/c/4842093).
  • Zmieniliśmy nazwę docelowego kompilacji WPT chrome_wpt na chrome_wpt_tests, aby zachować spójność, i usunęliśmy zbędny cel webdriver_wpt_tests (crrev.com/c/4847474, Bug: 1474702).
  • Przeniesiono run_py_tests.py z wycofanej biblioteki optparse do argparse (crrev.com/c/4849411, błąd: 4557).

ChromeDriver 118

Nowe funkcje

  • Testy integracyjne: wprowadziliśmy testy integracyjne w C++ dla ChromeDrivera, które umożliwiają testowanie konkretnych klas na podstawie rzeczywistego ruchu CDP, wypełniając lukę między testami jednostkowymi a testami integracyjnymi w Pythonie (crrev.com/c/4707855, błąd: 4528).
  • Crossbench: zaktualizowano zależność crossbench, wprowadzając liczne ulepszenia, w tym nowe scenariusze testów porównawczych, lepszą obsługę platform i urządzeń, ulepszone debugowanie i różne poprawki (crrev.com/c/4803743).

Poprawki błędów

  • Możliwości: rozwiązaliśmy problem, który powodował, że w domyślnych konfiguracjach brakowało debuggerAddress w zwracanych możliwościach. Teraz jest on prawidłowo zwracany, aby obsługiwać komunikację BiDi opartą na protokole CDP w Selenium (crrev.com/c/4789068, błąd: 4533).
  • Możliwości: zapewniono, że ChromeDriver zwraca standardowe wartości platformName (np. „linux”, „windows”, „mac”) zgodnie ze specyfikacją WebDrivera (crrev.com/c/4797735, błąd: 4548).

Zmiany wewnętrzne i refaktoryzacja

  • Przeniesiono kod w MockSocket, aby preferować base::span<> zamiast surowych wskaźników, co zwiększa bezpieczeństwo (crrev.com/c/4832086).
  • Usunięto wycofane użycia base::raw_ptrbase::raw_ref na rzecz ich niekwalifikowanych form raw_ptrraw_ref w ramach automatycznego czyszczenia (crrev.com/c/4773481).
  • Cofnięto tymczasowo zmianę, która zawsze używała najnowszego ChromeDrivera, ponieważ powodowała awarie w stabilnych i beta wersjach Chrome na Windowsie (crrev.com/c/4778973, cofnięcie crrev.com/c/4777430).
  • Dostosowane konfiguracje WPT (Web Platform Tests), w tym pomijanie błędów występujących tylko w trybie debugowania w pointer_touch.py i wdrażanie weryfikacji fokusu po stronie przeglądarki w przypadku ramek chronionych (crrev.com/c/4844810, crrev.com/c/4572517).
  • Dodano brakujący element #include <vector> do elementu client_hints.h w celu zachowania zgodności z zasadami IWYU (crrev.com/c/4767547).
  • Przeniesiono typy podstawowe specyficzne dla Apple (ScopedTypeRef, ScopedCFTypeRef, scoped_nsautorelease_pool) do przestrzeni nazw base::apple::, pozostawiając tymczasowe nagłówki przekierowujące dla Crashpada (crrev.com/c/4799213, crrev.com/c/4790744, crrev.com/c/4790741, crrev.com/c/4784010).

ChromeDriver 117

Nowe funkcje

Poprawki błędów

  • Stabilność: naprawiono dostęp do wskaźnika zerowego, który powodował awarię ChromeDrivera, co z kolei skutkowało błędami ConnectionRefused podczas testów (crrev.com/c/4675633, Bug: 1457101).
  • Nawigacja: rozwiązaliśmy problem, który powodował, że błędy NoSuchExecutionContextNoSuchWindow w Chrome podczas nawigacji nie były obsługiwane w jednolity sposób. Oba są teraz prawidłowo mapowane na ponawianie operacji (crrev.com/c/4667156, błąd: 4459).
  • Emulacja urządzeń mobilnych: poprawiliśmy logikę wnioskowania dla clientHints.mobile. Jest ona teraz prawidłowo wywnioskowana z userAgent na Androidzie i domyślnie ma wartość „false” na innych platformach. Rozwiązaliśmy problem, w którym tablety były nieprawidłowo zgłaszane jako urządzenia mobilne (crrev.com/c/4649348, Bug: 4243).
  • Tworzenie sesji: zaktualizowano tworzenie sesji, aby w przypadku niepowodzenia prawidłowo zwracać standardowy kod błędu SessionNotCreated, ściśle zgodny ze specyfikacją W3C WebDriver (crrev.com/c/4638223, Błąd: 4379). Uwaga: ta zmiana została później cofnięta, ponieważ niektóre ścieżki kodu wymagają innych kodów błędów (crrev.com/c/4651188).

Zmiany wewnętrzne i refaktoryzacja

  • Usunęliśmy skrypty ręcznego procesu wydawania ChromeDrivera, ponieważ jest on teraz w pełni zintegrowany z procesem wydawania Chrome i dostępny w infrastrukturze Chrome for Testing (crrev.com/c/4520687, błąd: 4142).
  • Przeniesiono infrastrukturę WPT (Web Platform Tests) na oficjalny wptrunner zamiast niestandardowego run_webdriver_tests.py, co znacznie poprawiło szybkość i niezawodność wykonywania testów oraz zapewniło ponowne uruchamianie ChromeDrivera między testami w celu odizolowania awarii (crrev.com/c/4723147, crrev.com/c/4676070, crrev.com/c/4639168).
  • Przeprowadziliśmy gruntowny refaktoryzację klasy ChromeLauncher i powiązanych klas, aby umożliwić przejście na potoki, zmniejszyć powiązanie z klasą DevToolsHttpClient i przenieść logikę WebSocket do dedykowanych gałęzi (crrev.com/c/4632801, crrev.com/c/4674345).
  • Zmieniliśmy nazwę mylącego pola BrowserInfo.is_headless na BrowserInfo.is_headless_shell, w celu uniknięcia wątpliwości (crrev.com/c/4650452, błąd: 4358).
  • Zastąpiono różne wycofane metody base::Value nowoczesnymi odpowiednikami base::Value::Dict (np. FindDouble(), Set(), size()) w całej bazie kodu (crrev.com/c/4258936, crrev.com/c/4336805, crrev.com/c/4461067).112.0.5603.0, 113.0.5653.0, 114.0.5733.0
  • Zrezygnowaliśmy z używania [w]ctype.h na rzecz bezpieczniejszych narzędzi do obsługi podstawowych ciągów znaków i wdrożyliśmy nowe funkcje dla base::expected (crrev.com/c/4749459, crrev.com/c/4755226).
  • TestDriver zaimplementowano polecenia automatyzacji get_fedcm_dialog_titleselect_fedcm_account w przypadku testów WPT FedCM (crrev.com/c/4618303).
  • Zaktualizowano skrypty kompilacji mapowania tekstu dwukierunkowego, aby działały prawidłowo niezależnie od bieżącego katalogu roboczego (crrev.com/c/4670550).
  • Przekonwertowano pliki /chrome/test/chromedriver, aby w kompilacjach na macOS używać ARC (automatycznego zliczania referencji), i dodano niezbędny kod standardowy (crrev.com/c/4663602).
  • Podjęto próbę domyślnego wyłączenia komunikacji potokowej za pomocą automatycznego zatwierdzenia, ale zmiana dotyczyła tylko konfiguracji i nie zmieniała wprowadzonego wcześniej podstawowego działania potoków domyślnych (crrev.com/c/4683947).

ChromeDriver 116

Nowe funkcje

  • FedCM dodaliśmy nową funkcję, która umożliwia klientom sprawdzanie, czy ChromeDriver obsługuje polecenia FedCM, bez konieczności ich wykonywania i wykrywania błędów (crrev.com/c/4624924, Bug: 1356159).
  • Testowanie: włączono ponowne wykorzystywanie okna testowego w przypadku testów testharness uruchamianych za pomocą ChromeDrivera w wptrunner, aby ocenić jego wpływ na wydajność i niestabilność (crrev.com/c/4515180, błąd: 1394572).

Poprawki błędów

  • Zgodność ze standardem C++: naprawiono niezdefiniowane zachowanie spowodowane nieprawidłowym użyciem wyliczeń zakresowych (enum class) bezpośrednio w ciągach formatujących, rozwiązując nowe ostrzeżenia kompilatora Clang (crrev.com/c/4628112, błąd: 1456289).
  • FedCM rozwiązano potencjalną przyczynę niestabilności testów, naprawiając przypadek brzegowy, który uniemożliwiał prawidłowe działanie setdelayenabled (crrev.com/c/4606064, błąd: 1453412).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper i skrypt kompilacji, aby domyślnie pobierać najnowszą wersję z gałęzi „main” (crrev.com/c/4615087, crrev.com/c/4615791, błąd 4226).
  • ChromeDriver otwiera i zapisuje wszystkie pliki przy użyciu kodowania UTF-8 (crrev.com/c/4614522).
  • Przebudowano ChromeImpl, aby wyeliminować jego zależność od DevToolsHttpClient, i ograniczono użycie SyncWebSocketFactoryBrowserInfo w przygotowaniu do komunikacji za pomocą potoków zamiast WebSocketów (crrev.com/c/4571690, crrev.com/c/4571199, Bug: 3480).
  • Usunęliśmy wycofany „tryb domyślny” w przypadku ramek z ograniczonym dostępem i zaktualizowaliśmy powiązane testy, aby włączyć nową flagę funkcji, kontynuując migrację do aukcji FLEDGE (crrev.com/c/4558645).
  • Ulepszone testy FedCM przez zastąpienie ogólnych asercji WaitForCondition asercjami assertTrue, aby wyraźnie wskazywać, kiedy występują przekroczenia limitu czasu (crrev.com/c/4590211).
  • Oznaczono znane, niestabilne ostrzeżenia o zawieszaniu się raw_ptrlinux-rel testach jednostkowych (crrev.com/c/4598070).
  • Zaktualizowano plik OWNERS dla narzędzia do mapowania BiDi (crrev.com/c/4614518).

ChromeDriver 115

Nowe funkcje

  • Emulacja urządzeń mobilnych: wdrożono obsługę interfejsu User-Agent Client Hints w emulacji urządzeń mobilnych, co umożliwia ChromeDriverowi analizowanie wskazówek dotyczących klienta z możliwości i gotowych ustawień oraz przekazywanie ich do Chrome (crrev.com/c/4498667, crrev.com/c/4466129, Błąd: 4243).
  • Emulacja urządzeń mobilnych: zaktualizowaliśmy gotowe ustawienia emulacji urządzeń mobilnych, aby podczas zastępowania ciągu znaków formatu %s w kliencie użytkownika używać głównej wersji przeglądarki hosta zamiast wersji ChromeDrivera (crrev.com/c/4502850, błąd: 4243).
  • Konfiguracja: dodaliśmy obsługę pobierania określonej wersji ChromeDrivera dla danego kanału, co usprawnia scenariusze automatyzacji, w których ChromeDriver działa na innej platformie (np. Android/WebView) niż host (crrev.com/c/4550281).116.0.5791.0

Poprawki błędów

  • Wersja klasyczna: rozwiązaliśmy problem, który powodował, że w przypadku niepowodzenia rozpoznania węzła zwracany był nieprawidłowy błąd UnknownError zamiast standardowego błędu NoSuchElement (crrev.com/c/4508952, błąd: 4440).
  • Emulacja urządzeń mobilnych: dodaliśmy bardziej rygorystyczne asercje do ustawień wstępnych emulacji urządzeń mobilnych, aby wymusić, że flaga clientHints.mobile musi mieć wartość true, jeśli ciąg userAgent zawiera „Mobile” (crrev.com/c/4507142, błąd: 4243).
  • Emulacja urządzeń mobilnych: przeniesiono zastąpienia DeviceMetrics, aby używać polecenia Emulation.setDeviceMetricsOverride CDP zamiast wycofanego odpowiednika w domenie Page (crrev.com/c/4502614, błąd: 4243).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper, co umożliwiło korzystanie z funkcji głębokiej serializacji (crrev.com/c/4535936, crrev.com/c/4512195).
  • Usunięto wycofaną metodę ConnectDevToolsClient w ramach przygotowań do migracji ChromeDrivera w celu komunikacji za pomocą potoków (crrev.com/c/4521485, Bug: 3480).
  • Przeniesiono bazę kodu, aby preferować base::Value::Dict zamiast base::Value, i zastąpiono wycofane metody, takie jak FindStringKey(), SetKey()SetByDottedPath() (crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150).
  • Przełączono się na używanie funkcji string_util.h zamiast [w]ctype.h w celu bezpieczniejszego przekształcania typów (crrev.com/c/4529187).
  • Zmieniono logikę wczytywania pliku początkowego, aby używać ścieżek bezwzględnych i zapewnić spójność, gdy skrypty i Chrome działają w różnych lokalizacjach (crrev.com/c/4504656).
  • Usunięto nieużywaną metodę CallAsyncFunction()web_view.h (crrev.com/c/4518363, błąd: 3376).
  • Zastosowano automatyczne przekształcenie nazwy base::raw_ptr na raw_ptr, aby dostosować ją do preferencji przewodnika po stylu (crrev.com/c/4476651).

ChromeDriver 114

Nowe funkcje

  • Klasyczna: przekazywanie informacji MobileDevice do MobileEmulationOverrideManager w celu przygotowania gruntu pod przyszłe wskazówki dotyczące klienta i zastępowanie ciągu UserAgent (crrev.com/c/4447524).
  • Testowanie: dodano testowe elementy stałe dla ChromeDrivera (crrev.com/c/4459939).

Poprawki błędów

  • Headless: naprawiono awarię w nowym trybie bez interfejsu użytkownika, cicho ignorując żądania podglądu wydruku ze skryptu (np. window.print()), co pozwoliło dostosować działanie do starego trybu bez interfejsu użytkownika (crrev.com/c/4436313, błąd: 4385).
  • Capabilities: naprawiono błąd użycia po przeniesieniu w możliwościach ChromeDrivera (crrev.com/c/4462094, Bug: 4243).
  • DevTools usunięto DCHECKDevToolsClientImpl::SendCommandInternal, aby zapobiec awariom w przypadku zerwania połączenia z Narzędziami deweloperskimi, ponieważ nie jest to naruszenie niezmiennika (crrev.com/c/4370486, błąd: 4385).

Zmiany wewnętrzne i refaktoryzacja

  • BiDi zaktualizowano zależność BiDi Mapper (crrev.com/c/4418727).
  • Rozwiązano problem z wieloma ostrzeżeniami o nieużywanych wskaźnikach podczas wykonywania testów jednostkowych przez prawidłowe zarządzanie nieposiadanymi odwołaniami i lokalnym niszczeniem w testach WebViewImpl i rejestratora wydajności (crrev.com/c/4374824, crrev.com/c/4368179).
  • Przeniesiono bazę kodu, aby korzystać z nowego interfejsu base::Value API w wersji 2, zastępując wycofane metody, takie jak Value::SetPath(), Value::SetStringPath()base::ListValue (crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520).
  • Zastąpiono wszystkie wystąpienia base::GUID ciągiem base::Uuid, aby dostosować je do zmiany nazwy podstawowej biblioteki (crrev.com/c/4455083).
  • Przeprowadzono różne porządki w kodzie, w tym skrócono kod, użyto operacji monadycznych dla expected, usunięto martwy kod i naprawiono naruszenia stylu (crrev.com/c/4475368, crrev.com/c/4464199).
  • Zaktualizowano testy z użyciem ramek ograniczonych, aby używać atrybutu config zamiast wycofanego atrybutu src (crrev.com/c/4382231).
  • Usunięto nieefektywne użycie ShadowDOMV0 (crrev.com/c/4388302).
  • Cofnięto dodanie flagi poprawki PDF w Skia (SK_IGNORE_PDF_EOF_NEWLINE_FIX), aby umożliwić ponowne ustalenie wartości bazowych (crrev.com/c/4401451).
  • Zaktualizowano właściciela scenariusza testowania ChromeDrivera i wprowadzono zmiany, aby generować plik JSON konfiguracji wyłącznie na potrzeby precyzyjnego określania lokalizacji (crrev.com/c/4437492, crrev.com/c/4298554).
  • Dodano brakujący plik dołączany (<cstring>) dla std::strlenweb_view_impl.cc, aby rozwiązać problem z kompilacją IWYU (crrev.com/c/4376772).
  • Usunięto nieużywany plik testowy (orientation_test.html) (crrev.com/c/4335668).

ChromeDriver 113.0.5672.63

Obsługuje Chrome w wersji 113

  • Rozwiązano problem 4205: te same identyfikatory obiektów w przypadku klasycznych i dwukierunkowych reklam kierowanych na listę klientów [Pri-1]
  • Rozwiązany problem 4302: Nie zakładaj, że Mapper znajduje się na pierwszej karcie w funkcji ExecuteGetWindowHandles [Pri-1]
  • Rozwiązanie problemu 4356: Chrome 110 nie korzysta z wartości ustawienia „download.default_directory” [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 113.0.5672.24

Obsługuje Chrome w wersji 113

  • Rozwiązano problem 4205: te same identyfikatory obiektów w przypadku klasycznych i dwukierunkowych reklam kierowanych na listę klientów [Pri-1]
  • Rozwiązany problem 4302: Nie zakładaj, że Mapper znajduje się na pierwszej karcie w funkcji ExecuteGetWindowHandles [Pri-1]
  • Rozwiązanie problemu 4356: Chrome 110 nie korzysta z wartości ustawienia „download.default_directory” [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 112.0.5615.49

Obsługuje Chrome w wersji 112

  • Rozwiązany problem 3517: Włączanie funkcji drukowania w przypadku urządzeń bez monitora [Pri-]
  • Rozwiązaliśmy problem 4419: duży narzut w teście Speedometer podczas korzystania z chromedrivera [Pri-3]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 112.0.5615.28

Obsługuje Chrome w wersji 112

  • Rozwiązany problem 4357: problem z sesją w Chromedriverze w wersji 110.0.5481.77 z opcjami --headless i --user-data-dir. [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 111.0.5563.64

Obsługuje Chrome w wersji 111

  • Rozwiązany problem 4216: Uruchamianie ChromeDrivera z niestandardowym BiDiMapperem [Pri-]
  • Rozwiązano problem 4300: uchwyt okna jest interoperacyjny między wersją klasyczną a wersją dwukierunkową [Pri-]
  • Rozwiązany problem 4325: obsługa funkcji toJSON w jsonSerialize w pliku call_function.js odbiega od standardu. [Pri-]
  • Rozwiązano problem 4330: DCHECK fails at DevToolsClientImpl::AddListener [Pri-]
  • Rozwiązany problem 4357: problem z sesją ChromeDrivera z opcjami --headless i --user-data-dir [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 111.0.5563.41

Obsługuje Chrome w wersji 111

  • Rozwiązany problem 4357: problem z sesją ChromeDrivera z opcjami --headless i --user-data-dir [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 111.0.5563.19

Obsługuje Chrome w wersji 111

  • Rozwiązany problem 4216: Uruchamianie ChromeDrivera z niestandardowym BiDiMapperem [Pri-]
  • Rozwiązano problem 4300: uchwyt okna jest interoperacyjny między wersją klasyczną a wersją dwukierunkową [Pri-]
  • Rozwiązany problem 4325: obsługa funkcji toJSON w jsonSerialize w pliku call_function.js odbiega od standardu. [Pri-]
  • Rozwiązano problem 4330: DCHECK fails at DevToolsClientImpl::AddListener [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 110.0.5481.77

Obsługuje Chrome w wersji 110

  • Rozwiązaliśmy problem 4193: Nie udało się rozpocząć nowej sesji na Androidzie 13 [Pri-]
  • Rozwiązano problem 4272: WebSocket powinien traktować kod 0 jako wskazanie FIN [Pri-]
  • Rozwiązany problem 4276: Rozwiązanie problemów z łącznością w ChromeDriver [Pri-]
  • Rozwiązany problem 4295: ChromeDriver z "webSocketUrl": true jest podatny na wyścig [Pri-]
  • Rozwiązano problem 4297: ChromeDriver Bidi nieprawidłowo serializuje [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 110.0.5481.30

Obsługuje Chrome w wersji 110

  • Rozwiązaliśmy problem 4193: Nie udało się rozpocząć nowej sesji na Androidzie 13 [Pri-]
  • Rozwiązano problem 4272: WebSocket powinien traktować kod 0 jako wskazanie FIN [Pri-]
  • Rozwiązany problem 4276: Rozwiązanie problemów z łącznością w ChromeDriver [Pri-]
  • Rozwiązany problem 4295: ChromeDriver z "webSocketUrl": true jest podatny na wyścig [Pri-]
  • Rozwiązano problem 4297: ChromeDriver Bidi nieprawidłowo serializuje [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 109.0.5414.74

Obsługuje Chrome w wersji 109

  • Rozwiązany problem 4179: sesja dwukierunkowa musi obsługiwać wiele połączeń [Pri-]
  • Rozwiązany problem 4203: Ulepszanie informacji o kredytach [Pri-]
  • Rozwiązany problem 4263: awaria po naciśnięciu Meta+A [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 109.0.5414.25

Obsługuje Chrome w wersji 109

  • Rozwiązany problem 4179: sesja dwukierunkowa musi obsługiwać wiele połączeń [Pri-]
  • Rozwiązany problem 4203: Ulepszanie informacji o kredytach [Pri-]
  • Rozwiązany problem 4263: awaria po naciśnięciu Meta+A [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 108.0.5359.71

Obsługuje Chrome w wersji 108. Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 108.0.5359.22

Obsługuje Chrome w wersji 108

  • Rozwiązany problem 4204: naprawiono nieudany test WPT test_top_level_and_one_child [Pri-]
  • Rozwiązany problem 4215: zmiana nazwy kompilacji chromedriver_mac64_m1 na chromedriver_mac_arm64 [Pri-]
  • Rozwiązanie problemu 4221: awaria, gdy polecenie kliknięcia zamyka przeglądarkę [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 107.0.5304.62

Obsługuje Chrome w wersji 107

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 107.0.5304.18

Obsługuje Chrome w wersji 107

  • Rozwiązano problem 4180: zakaz obsługi poleceń BiDi do czasu powiadomienia o uruchomieniu BiDiMapper [Pri-]
  • Rozwiązany problem 4198: ChromeDriver BiDi nie powinien zakładać, że BiDiMapper zawsze znajduje się na pierwszej karcie [Pri-]
  • Rozwiązany problem 4207: błąd WebDrivera podczas uruchamiania WPT [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 106.0.5249.61

Obsługuje Chrome w wersji 106

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 106.0.5249.21

Obsługuje Chrome w wersji 106

  • Rozwiązany problem 4016: Dodanie podstawowej obsługi BiDi do ChromeDrivera (na podstawie mapowania) [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 105.0.5195.52

Obsługuje Chrome w wersji 105

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 105.0.5195.19

Obsługiwana wersja Chrome

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 104.0.5112.79

Obsługuje Chrome w wersji 104

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 104.0.5112.29

Obsługuje Chrome w wersji 104

  • Rozwiązano problem 4121: polecenie WebDrivera czasami kończy się niepowodzeniem z komunikatem „unexpected command response” [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 104.0.5112.20

Obsługuje Chrome w wersji 104

  • Rozwiązano problem 4121: polecenie WebDrivera czasami kończy się niepowodzeniem z komunikatem „unexpected command response” [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 103.0.5060.134

Obsługuje Chrome w wersji 103

  • Rozwiązano problem 4048: odłączona ramka docelowa [Pri-]
  • Rozwiązano problem 4121: polecenie WebDrivera czasami kończy się niepowodzeniem z komunikatem „unexpected command response” [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 103.0.5060.53

Obsługuje Chrome w wersji 103

  • Rozwiązano problem 4048: odłączona ramka docelowa [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 103.0.5060.24

Obsługuje Chrome w wersji 103

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 102.0.5005.61

Obsługuje Chrome w wersji 102

  • Rozwiązano problem 1309282: chromedriver nie obsługuje przełączników wielowartościowych [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 102.0.5005.27

Obsługuje Chrome w wersji 102

  • Rozwiązano problem 1309282: chromedriver nie obsługuje przełączników wielowartościowych [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 101.0.4951.41

Obsługuje Chrome w wersji 101

  • Rozwiązaliśmy problem 4046: DCHECK hit when appending empty fenced frame [Pri-]
  • Rozwiązano problem 4080: przełączanie na zagnieżdżoną ramkę nie działa [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 101.0.4951.15

Obsługuje Chrome w wersji 101

  • Rozwiązaliśmy problem 4046: DCHECK hit when appending empty fenced frame [Pri-]
  • Rozwiązano problem 4080: przełączanie na zagnieżdżoną ramkę nie działa [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 100.0.4896.60

Obsługuje Chrome w wersji 100

  • Rozwiązany problem 4002: obsługa ograniczonych ramek [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 100.0.4896.20

Obsługuje Chrome w wersji 100

  • Rozwiązany problem 4002: obsługa ograniczonych ramek [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 99.0.4844.51

Obsługuje Chrome w wersji 99

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 99.0.4844.35

Obsługuje Chrome w wersji 99

  • REVERTED!!! Rozwiązaliśmy problem 2269: Nie można używać znaków spoza zakresu BMP (punktów kodowych powyżej U+FFFF) [Pri-3]
  • Resolved issue chromium:1295243: Regression in ChromeDriver sendKeys [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 99.0.4844.17

Obsługuje Chrome w wersji 99

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 98.0.4758.102

Obsługuje Chrome w wersji 98

  • Rozwiązaliśmy problem 3933: kliknięcie na krawędzi obszaru widoku jest nieskuteczne i nie powoduje błędu [Pri-]
  • REVERTED!!! Rozwiązaliśmy problem 2269: Nie można używać znaków spoza zakresu BMP (punktów kodowych powyżej U+FFFF) [Pri-3]
  • Resolved issue chromium:1295243: Regression in ChromeDriver sendKeys [Pri-1]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 98.0.4758.80

Obsługuje Chrome w wersji 98

  • Rozwiązaliśmy problem 3933: kliknięcie na krawędzi obszaru widoku jest nieskuteczne i nie powoduje błędu [Pri-]
  • Rozwiązaliśmy problem 2269: Nie można używać znaków spoza zakresu BMP (punktów kodowych powyżej U+FFFF) [Pri-3]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 98.0.4758.48

Obsługuje Chrome w wersji 98

  • Rozwiązaliśmy problem 3933: kliknięcie na krawędzi obszaru widoku jest nieskuteczne i nie powoduje błędu [Pri-]
  • Rozwiązaliśmy problem 2269: Nie można używać znaków spoza zakresu BMP (punktów kodowych powyżej U+FFFF) [Pri-3]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 97.0.4692.71

Obsługuje Chrome w wersji 97

  • Rozwiązany problem 3878: lepsza obsługa ułamkowych współrzędnych elementów w przypadku kliknięcia elementu [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 97.0.4692.36

Obsługuje Chrome w wersji 97

  • Rozwiązany problem 3878: lepsza obsługa ułamkowych współrzędnych elementów w przypadku kliknięcia elementu [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 97.0.4692.20

Obsługuje Chrome w wersji 97

  • Rozwiązany problem 3878: lepsza obsługa ułamkowych współrzędnych elementów w przypadku kliknięcia elementu [Pri-]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 96.0.4664.45

Obsługuje Chrome w wersji 96

  • Rozwiązanie problemu 3445: Niemożliwość uzyskania dostępu do elementów w elemencie iframe w korzeniu cienia [Pri-3]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 96.0.4664.35

Obsługuje Chrome w wersji 96

  • Rozwiązanie problemu 3445: Niemożliwość uzyskania dostępu do elementów w elemencie iframe w korzeniu cienia [Pri-3]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 96.0.4664.18

Obsługuje Chrome w wersji 96

  • Rozwiązanie problemu 3445: Niemożliwość uzyskania dostępu do elementów w elemencie iframe w korzeniu cienia [Pri-3]

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 95.0.4638.69

Obsługuje Chrome w wersji 95

  • Rozwiązany problem 3857: określono nagłówek hosta lub nagłówek pochodzenia, który nie znajduje się na białej liście ani nie jest hostem lokalnym [Pri-1]
  • Dodano argument --allowed-origins

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 95.0.4638.54

Obsługuje Chrome w wersji 95

  • Rozwiązany problem 3857: określono nagłówek hosta lub nagłówek pochodzenia, który nie znajduje się na białej liście ani nie jest hostem lokalnym [Pri-1]
  • Dodano argument --allowed-origins

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 95.0.4638.17

Obsługuje Chrome w wersji 95

  • Rozwiązany problem 3857: określono nagłówek hosta lub nagłówek pochodzenia, który nie znajduje się na białej liście ani nie jest hostem lokalnym [Pri-1]
  • Dodano argument --allowed-origins

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 95.0.4638.10

Obsługuje Chrome w wersji 95

  • Rozwiązany problem 3857: określono nagłówek hosta lub nagłówek pochodzenia, który nie znajduje się na białej liście ani nie jest hostem lokalnym [Pri-1]
  • Dodano argument --allowed-origins

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 94.0.4606.113

Obsługuje Chrome w wersji 94

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 94.0.4606.61

Obsługuje Chrome w wersji 94

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 94.0.4606.41

Obsługuje Chrome w wersji 94

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 93.0.4577.63

Obsługuje Chrome w wersji 93

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 93.0.4577.15

Obsługuje Chrome w wersji 93

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 92.0.4515.107

Obsługuje Chrome w wersji 92

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 92.0.4515.43

Obsługuje Chrome w wersji 92

  • Rozwiązano problem 3389: weryfikacja hosta w przypadku żądań ChromeDriver

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 91.0.4472.101

Obsługuje Chrome w wersji 91

  • Rozwiązany problem 1205107: nie można uzyskać wartości atrybutu dla pól w aplikacji internetowej.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 91.0.4472.19

Obsługuje Chrome w wersji 91

  • Rozwiązanie problemu 3744: funkcje SendKeys() i Click() nie działają po nawigacji po linkach
  • Rozwiązany problem 3746: punkt końcowy atrybutu nieprawidłowo aktualizuje wartości

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 90.0.4430.24

Obsługuje Chrome w wersji 90

  • Rozwiązaliśmy problem 3708: funkcja GetElementLocation's inView nie działa w przypadku elementów w modelu Shadow DOM.
  • Rozwiązany problem 3721: zbieranie dziennika wydajności w przypadku włączonego skryptu service worker
  • Rozwiązano problem 3731: funkcja AdbImpl::GetPidByName nie działa prawidłowo w niestandardowych systemach operacyjnych Android, np. na urządzeniach OnePlus.
  • Rozwiązany problem 3733: katastrofalna awaria domeny na hoście lokalnym
  • Rozwiązaliśmy problem 3734: sterownik powinien zgłaszać błąd podczas próby ustawienia pliku cookie w nieprawidłowej domenie.
  • Rozwiązany problem 3743: Zmiana struktury funkcji wywołania i rozwiązanie problemu z usuwaniem elementu

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 89.0.4389.23

Obsługuje Chrome w wersji 89

  • Rozwiązany problem 3667: Przekroczono limit czasu oczekiwania na wiadomość z procesu renderowania
  • Rozwiązaliśmy problem 3675: funkcja GetElementLocation używa metody inView, która nieprawidłowo traktuje wartość logiczną jako tablicę.
  • Rozwiązaliśmy problem 3682: funkcja GetElementRegion zwraca nieprawidłowy rozmiar elementów, które są częściowo poza widocznym obszarem.
  • Rozwiązany problem 3690: ChromeDriver nie działa, jeśli rozszerzenia używają interfejsu chrome.windows API

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 88.0.4324.96

Obsługuje Chrome w wersji 88

  • Rozwiązano problem 3641: strona nie wczytuje się ani nie renderuje, gdy okno przeglądarki nie jest aktywne w Chrome Beta w wersji 87 i chromedriverzie w wersji 87/86.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 88.0.4324.27

Obsługuje Chrome w wersji 88

  • Rozwiązany problem 3611: dane wyjściowe getText() w protractorze różnią się od danych wyjściowych <element>.innerText
  • Rozwiązany problem 3625: poprawa zgodności zrzutów ekranu elementów
  • Rozwiązano problem 3628: nieaktualne odwołanie do elementu i nieprawidłowy adres URL zgłaszane w przypadku adresu URL, który zawiera inny adres URL jako część ścieżki
  • Rozwiązany problem 3631: dodanie obsługi funkcji webauthn:extension:largeBlob
  • Rozwiązano problem 3635: Chromedriver 86 - chromedriver.quit() nie przekazuje prawidłowo zdarzenia wyładowania
  • Rozwiązano problem 3649: kopiowanie zaznaczonego tekstu do schowka nie działa w systemie Windows 10 w trybie bez monitora

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 87.0.4280.88

Obsługuje Chrome w wersji 87

  • Rozwiązano problem 3641: strona nie wczytuje się ani nie renderuje, gdy okno przeglądarki nie jest aktywne w Chrome Beta w wersji 87 i chromedriverzie w wersji 87/86.
  • Rozwiązany problem 3657: przekroczono limit czasu przeglądarki w tle zrzutu ekranu

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 87.0.4280.20

Obsługuje Chrome w wersji 87

  • Rozwiązaliśmy problem 2421: usuwanie starych kanałów przekierowania portów na serwerze adb na Androidzie.
  • Rozwiązany problem 3474: lista emulowanych urządzeń mobilnych wymaga aktualizacji
  • Rozwiązany problem 3507: Wdrożenie funkcji „get computed role”
  • Rozwiązano problem 3508: wdrożenie funkcji „get computed label”
  • Rozwiązany problem 3584: zmiana nazwy opcji wiersza poleceń ChromeDrivera --whitelisted-ips
  • Rozwiązany problem 3588: dwukierunkowe połączenie WebSocket
  • Rozwiązany problem 3594: nawigacja kończy się przedwcześnie, jeśli OOPIF wczytuje się przed stroną główną
  • Rozwiązany problem 3598: opcja wiersza poleceń portu narzędzi deweloperskich do przekazywania do gniazda webview_devtools_remote
  • Rozwiązany problem 3608: adres debugera Chromedriver nie obsługuje protokołu IPv6

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 86.0.4240.22

Obsługuje Chrome w wersji 86

  • Rozwiązaliśmy problem 3370: poprawne wyłączanie Chrome, aby plik cookie był prawidłowo zapisywany w pliku trwałości SQLite.
  • Rozwiązany problem 3401: funkcja Get Element Location JS nie lokalizuje widocznego środka elementu
  • Rozwiązanie problemu 3462: w przypadku funkcji sendKeys klawisz CMD nie działa na komputerach Mac
  • Rozwiązany problem 3541: ulepszono logowanie między klientem a ChromeDriverem.
  • Rozwiązano problem 3559: wyświetlanie wersji Chrome, gdy ChromeDriver zgłasza niezgodność

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 85.0.4183.87

Obsługuje Chrome w wersji 85

  • Rozwiązaliśmy problem 3578: Chrome 85 nie pozwala już na płynną interakcję z oknami, gdy otwarte jest okno alertu.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 85.0.4183.83

Obsługuje Chrome w wersji 85

  • Rozwiązany problem 3577: ChromeDriver 85 nie wykrywa zmienionego katalogu Chrome (C:\Program Files)

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 85.0.4183.38

Obsługuje Chrome w wersji 85

  • Rozwiązany problem 3214: ChromeDriver78: Sendkeys resets text selection with contenteditable
  • Rozwiązany problem 3376: usunięcie polecenia LaunchApp z ChromeDriver
  • Rozwiązany problem 3432: czasami NavigationTracker nie wykrywa, kiedy strona została wczytana.
  • Rozwiązano problem 3481: nowy punkt końcowy drukowania zgodny ze specyfikacją W3C
  • Rozwiązano problem 3488: driver.get nie zgłasza błędu, gdy serwer proxy jest nieprawidłowo skonfigurowany
  • Rozwiązany problem 3502: używanie document.hasFocus() do sprawdzania, czy element jest aktywny
  • Rozwiązany problem 3515: selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 84.0.4147.30

Obsługuje Chrome w wersji 84

  • Rozwiązaliśmy problem 3420: po przełączeniu na okno drukowania sterownik Chrome przestaje odpowiadać.
  • Rozwiązanie problemu 3421: sterownik zwraca tekst w cyrylicy bez stylów
  • Rozwiązany problem 3422: funkcja GetElementText nie działa w przypadku prototypu 1.6.0.3
  • Rozwiązano problem 3434: nie można pobrać komunikatów „assert” z logów „browser”

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 83.0.4103.39

Obsługuje Chrome w wersji 83

  • Zaktualizowano Chromedrivera, aby działał prawidłowo z prototype.js.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 83.0.4103.14

Obsługuje Chrome w wersji 83

  • Rozwiązany problem 1778: wycofanie launchApp z ChromeDriver
  • Rozwiązano problem 2520: funkcja InitSession może czekać w nieskończoność, gdy Chrome nie odpowiada
  • Rozwiązany problem 3120: pobieranie w trybie bez interfejsu graficznego z nowej karty
  • Rozwiązano problem 3234: potwierdzenie znalezienia średnika przed podciągiem
  • Rozwiązany problem 3240: funkcja ExecuteGetElementRect nie sprawdza stanu zwróconego przez GET_SIZE
  • Rozwiązany problem 3331: metoda get_cookies() zwraca klucze „expiry” typu double, ale w trybie w3c powinny być typu int64
  • Rozwiązany problem 3332: limit czasu ponownej próby rejestrowany jako poważny
  • Rozwiązano problem 3339: Chromedriver został nieoczekiwanie zamknięty z kodem null, sygnał SIGTRAP
  • Rozwiązany problem 3351: ulepszenie komunikatu dotyczącego kwestii bezpieczeństwa
  • Rozwiązany problem 3352: obsługa SendKeys w przypadku elementów kolorów
  • Rozwiązano problem 3353: oczekiwanie na oczekującą nawigację trwa nadal po zniszczeniu kontekstu ramki
  • Rozwiązaliśmy problem 3375: Chromedriver w wersji 80 zawiesza się podczas pobierania kodu źródłowego strony w przypadku niektórych witryn.
  • Rozwiązany problem 3383: ChromeDriver w wersji 80 lub nowszej w systemie Windows zamyka się lub zawiesza w przypadku niektórych poleceń dotyczących elementów lub kliknięć.
  • Rozwiązany problem 3399: usunięcie sprawdzania wasThrown

ChromeDriver 81.0.4044.138

Obsługuje Chrome w wersji 81

  • Zaktualizowano Chromedrivera, aby działał prawidłowo z prototype.js.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 81.0.4044.69

Obsługuje Chrome w wersji 81

  • Naprawiono: Chromedriver ulega awarii podczas wywoływania metody getPageSource w przypadku niektórych witryn.
    • Naprawiono: ChromeDriver ulega awarii w przypadku niektórych poleceń dotyczących elementów lub kliknięć.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 81.0.4044.20

Obsługuje Chrome w wersji 81

  • Naprawiono błąd podczas próby uzyskania lokalizacji elementu HTML.
    • Polecenia Get and Add Cookie są teraz specyficzne dla ramki.
    • Rozwiązaliśmy niektóre problemy występujące w przypadku witryn, które ponownie definiują standardowe obiekty JavaScript.
    • Po otrzymaniu komunikatu o zamknięciu elementu docelowego ChromeDriver będzie nadal czekać na zakończenie wczytywania.
    • Chromedriver zwraca teraz kod błędu zgodny ze specyfikacją w przypadku przekroczenia limitu czasu
    • Naprawiono: nieoczekiwanie długi czas odpowiedzi ChromeDriver na polecenie NewSession.
    • Obsługiwane są teraz zdefiniowane przez użytkownika czasy oczekiwania dłuższe niż 10 minut.
    • Naprawiono: ChromeDriver nie może połączyć się z Narzędziami deweloperskimi z powodu niezgodności protokołów IPv4 i IPv6.
    • Przywrócono kolejność wyszukiwania pliku binarnego Chrome w systemie Linux.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 80.0.3987.106

Obsługuje Chrome w wersji 80

  • Przywrócono kolejność wyszukiwania pliku binarnego Chrome w Linuksie

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 80.0.3987.16

Obsługuje Chrome w wersji 80

  • Naprawiliśmy problem z przerwaniem wczytywania strony podczas korzystania z serwera proxy.
  • Chromedriver czeka teraz na wczytanie bieżącej ramki.
  • Dziennik ChromeDrivera będzie zawierać port używany przez sterownik.
  • Włączono SetGeoLocation w trybie w3c.
  • Dodano brakujący tekst alertu dla stanu UnexpectedAlertOpen.
  • Ulepszyliśmy komunikat wyświetlany po wczytaniu rozszerzenia CRX2.
  • Naprawiono potencjalną sytuację wyścigu w funkcji ExecuteGetPageSource.
  • ChromeDriver doda flagę --ignore-certificate-errors, gdy funkcja acceptInsecureCerts ma wartość true
  • Zaktualizowano komunikat o błędzie i stan zwrotu w przypadku braku kontekstu wykonania
  • Naprawiono: ChromeDriver może blokować się na czas nieokreślony podczas oczekiwania na oczekującą nawigację.
  • Dodano atrybut SameSite do funkcji AddCookie i GetCookie.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 79.0.3945.36

Obsługuje Chrome w wersji 79

Wprowadziliśmy następujące zmiany w stosunku do wersji 79.0.3945.16:

  • Poprawiono nieprawidłowe obliczanie współrzędnych elementu

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 79.0.3945.16

Obsługuje Chrome w wersji 79

  • Naprawiono awarię ChromeDrivera spowodowaną przez alert JavaScript wywoływany podczas wykonywania polecenia.
    • Naprawiliśmy błąd, który powodował blokowanie Chromedrivera, gdy podczas robienia zrzutu ekranu pojawiał się alert.
    • Usunięto z polecenia uruchamiania Chrome argument --ignore-certificate-errors
    • Zmiana platformy i nazwy platformy na windows w systemie Windows 10
    • Naprawiono błąd niezdefiniowanego obiektu window.navigator.webdriver, gdy wykluczono opcję „enable-automation”
  • Poprawiony test WPT „test_not_editable_inputs[hidden]”
    • Rozwiązaliśmy problem „Element is not clickable” (Element nie jest klikalny) podczas korzystania z trybu bez interfejsu graficznego.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 78.0.3904.105

Obsługuje Chrome w wersji 78

Obejmuje następującą zmianę w porównaniu z wersją 78.0.3904.70: * Naprawiono nieprawidłowe obliczanie współrzędnych elementu

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 78.0.3904.70

Obsługuje Chrome w wersji 78

Wprowadziliśmy następujące zmiany w wersji 78.0.3904.11:

  • Cofnięto zmianę dotyczącą dostosowywania rozmiaru zrzutu ekranu na wyświetlaczu Retina z powodu zgłoszonych problemów.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 78.0.3904.11

Obsługuje Chrome w wersji 78

  • Rozwiązaliśmy kilka problemów z serializacją obiektów JavaScript.
    • Naprawiliśmy błąd w dopasowywaniu funkcji w Chrome na Androida
    • Wdrożenie automatyzacji uprawnień
    • Stały rozmiar zrzutu ekranu na wyświetlaczu Retina
  • Naprawiono przekroczenie limitu czasu wczytywania strony w niektórych przypadkach.
    • Ulepszone dopasowywanie wartości platformName
    • Naprawiono kod błędu zwracany podczas przesuwania wskaźnika do opcji listy rozwijanej
    • Rozwiązaliśmy problem z pobieraniem w trybie bez monitora.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 77.0.3865.40

Obsługuje Chrome w wersji 77

Wprowadziliśmy następujące zmiany w stosunku do wersji 77.0.3865.10:

  • Naprawiono 2 błędy w serializacji i deserializacji obiektów JavaScriptu.
  • Poprawiono obsługę platformName: android podczas dopasowywania możliwości

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 77.0.3865.10

Obsługuje Chrome w wersji 77

  • Rozwiązaliśmy kilka problemów z implementacją interfejsu Actions API.
    • Ulepszone wykonywanie kodu JavaScript i obsługa wyników
    • Naprawiliśmy błąd, który w trybie OSS powodował nieprawidłowe odrzucanie żądań POST z pustą treścią.
  • Dokładniejszy tracker nawigacji
  • Obsługa strategii wczytywania stron z wyprzedzeniem
    • Dodano polecenie New Window ze specyfikacji W3C WebDriver
  • Obsługa zapisywania pobranych plików w trybie bez interfejsu graficznego
  • Dodaliśmy obsługę wczytywania rozszerzeń CRX3

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 76.0.3809.126

Obsługuje Chrome w wersji 76

Wprowadziliśmy następujące zmiany w stosunku do wersji 76.0.3809.68:

  • Naprawiono 2 błędy w serializacji i deserializacji obiektów JavaScriptu.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 76.0.3809.68

Obsługuje Chrome w wersji 76

Wprowadziliśmy następujące zmiany w stosunku do wersji 76.0.3809.25:

  • Naprawiono błąd wykrywania odwołań cyklicznych w obiektach JavaScriptu.
  • Naprawiliśmy błąd, który powodował awarię ChromeDrivera w przypadku wystąpienia określonych typów błędów JavaScriptu.
  • Naprawiliśmy błąd, który uniemożliwiał interfejsowi API działań interakcję z elementami w DOM cienia.
    • Naprawiono błąd w śledzeniu stanu klawisza modyfikującego między poleceniami interfejsu API działań
    • Rozwiązanie problemu z śledzeniem lokalizacji wskaźnika między poleceniami interfejsu Actions API.
    • Zapisywanie w pliku logu błędu „Cannot call non W3C standard command while in W3C mode” (Nie można wywołać polecenia niezgodnego ze standardem W3C w trybie W3C), gdy wystąpi

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 76.0.3809.25

Obsługuje Chrome w wersji 76

Wprowadziliśmy następujące zmiany w porównaniu z wersją 76.0.3809.12:

  • Naprawiliśmy błąd, który w trybie OSS powodował nieprawidłowe odrzucanie żądań POST z pustą treścią.
  • Dodano nowe punkty końcowe do pobierania dziennika Chrome.
    • Dodano punkt końcowy polecenia Is Displayed w trybie W3C

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 76.0.3809.12

Obsługuje Chrome w wersji 76

  • Zakończono wdrażanie interfejsu Actions API.
    • Ulepszona zgodność z specyfikacją w zakresie obsługi limitu czasu skryptu
    • Ulepszona serializacja wyników polecenia Wykonaj skrypt
    • Rozwiązano problemy z przewijaniem elementu do widoku
    • Dodano obsługę klawisza anulowania zdefiniowanego w specyfikacji WebDriver
    • Poprawiono przetwarzanie nieobsłużonej odpowiedzi o błędzie alertu
    • Stałe przetwarzanie elementu <details>
    • Zaktualizowana opcja excludeSwitches, która umożliwia opcjonalne kreski na początku nazw przełączników

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 75.0.3770.140

Obsługuje Chrome w wersji 75

Wprowadziliśmy następujące zmiany w stosunku do wersji 75.0.3770.90:

  • Naprawiliśmy błąd, który powodował awarię ChromeDrivera w przypadku wystąpienia niektórych typów błędów JavaScriptu.
  • Naprawiono błąd związany z zachowywaniem stanu klawisza modyfikującego między działaniami.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 75.0.3770.90

Obsługuje Chrome w wersji 75

Wprowadziliśmy następujące zmiany w stosunku do wersji 75.0.3770.8:

  • Naprawiliśmy błąd, który w trybie OSS powodował nieprawidłowe odrzucanie żądań POST z pustą treścią.
  • Dodano nowe punkty końcowe do pobierania dziennika Chrome

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 75.0.3770.8

Obsługuje Chrome w wersji 75

Najbardziej zauważalną zmianą jest to, że ChromeDriver domyślnie działa w trybie zgodnym ze standardem W3C. Inne zmiany:

  • Naprawiliśmy błąd, który powodował dwukrotne wywoływanie zdarzenia utraty ostrości podczas czyszczenia elementu.
  • Zmiana nazwy możliwości loggingPrefs na goog:loggingPrefs zgodnie ze standardem W3C
  • Poprawiliśmy obsługę błędów w trybie W3C.
    • Prawidłowe tworzenie plików cookie bez kropki na początku nazwy domeny
    • Zezwala na wartość null w przypadku limitu czasu skryptu
    • Poprawiono polecenie Fixed Element Send Keys w przypadku danych wejściowych pliku z atrybutem „multiple”
    • Poprawiliśmy polecenie Get Active Element, aby zwracało błąd „no such element”, gdy nie ma aktywnego elementu.
    • Naprawiono nawigację do źle sformułowanego adresu URL, aby zwracać błąd „nieprawidłowy argument”
    • Poprawiono kod stanu HTTP w przypadku otrzymania nieprawidłowego identyfikatora sesji
    • Poprawiliśmy odpowiedź o błędzie, gdy brakuje parametru wejściowego lub jest on nieprawidłowy.
    • Poprawiliśmy polecenie Wykonaj skrypt, aby obsługiwało komentarze JavaScript w postaci wierszy.

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 74.0.3729.6

Obsługuje Chrome w wersji 74

  • Naprawiliśmy błąd, który powodował generowanie nieoczekiwanego pliku debug.log w systemie Windows.
  • Rozwiązanie problemu z klikaniem myszą oraz przeciąganiem i upuszczaniem w dokumencie SVG.
  • Dodano nagłówek cache-control w odpowiedziach z ChromeDriver
  • Naprawiliśmy typ błędu, który występował, gdy kliknięcie było przechwytywane przez inny element.
  • Naprawiliśmy błąd, który powodował, że ChromeDriver nie działał na urządzeniach z systemem Linux bez /dev/shm.
  • Naprawiliśmy niektóre typy zdarzeń podwójnego kliknięcia
  • Stałe polecenie Get Sessions
  • Poprawiliśmy sprawdzanie błędów w poleceniu Switch To Frame
  • Poprawiono polecenie Pobierz źródło strony

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 73.0.3683.68

Obsługuje Chrome w wersji 73

  • Naprawiliśmy błąd, który powodował generowanie nieoczekiwanego pliku debug.log w systemie Windows.
  • Naprawiono kod błędu zwracany przez polecenie Wykonaj skrypt w niektórych scenariuszach
  • Dodano nagłówek cache-control w odpowiedziach z ChromeDriver
  • Domyślne utrzymywanie połączenia przez serwer HTTP
  • Poprawiono polecenie Zamknij okno, aby prawidłowo obsługiwać monity użytkownika
  • Naprawiono kod błędu zwracany podczas wysyłania kluczy do wyłączonego elementu
  • Ulepszona zgodność z specyfikacją w zakresie obsługi wartości czasu oczekiwania
  • Ulepszona zgodność polecenia Add Cookie ze specyfikacją
    • Zwiększona długość kolejki oczekiwania serwera HTTP
  • Naprawiono polecenie Is Element Displayed w modelu Shadow DOM w wersji 0.
    • Dodano ostrzeżenie o zmianie działania polecenia Element Clear w pliku dziennika
  • Poprawiono polecenie Wykonaj skrypt, aby prawidłowo konwertować document.all na format JSON
  • Ulepszona obsługa nieprawidłowych odwołań do elementów

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 2.46

Obsługuje Chrome w wersjach 71–73

  • Naprawiono kod błędu zwracany przez polecenie Wykonaj skrypt w niektórych scenariuszach
  • Domyślne utrzymywanie połączenia przez serwer HTTP
  • Poprawiono polecenie Zamknij okno, aby prawidłowo obsługiwać monity użytkownika
  • Naprawiono kod błędu zwracany podczas wysyłania kluczy do wyłączonego elementu
  • Ulepszona zgodność z specyfikacją w zakresie obsługi wartości czasu oczekiwania
  • Ulepszona zgodność polecenia Add Cookie ze specyfikacją
  • Ulepszona zgodność polecenia Przełącz na ramkę ze specyfikacją
  • Zwiększona długość kolejki oczekiwania serwera HTTP
  • Poprawiono polecenie Is Element Displayed w przypadku Shadow DOM w wersji 0
  • Polecenie Fixed Element Double Click
  • Dodano ostrzeżenie o zmianie działania polecenia Element Clear w pliku dziennika
  • Poprawiono polecenie Wykonaj skrypt, aby prawidłowo konwertować document.all na format JSON
  • Ulepszona obsługa nieprawidłowych odwołań do elementów

Więcej informacji znajdziesz w informacjach o wersji.

ChromeDriver 2.45

Obsługuje Chrome w wersjach 70–72

  • Poprawiono: funkcja Nowa sesja nie jest zgodna ze specyfikacją
  • Naprawiono: ChromeDriver nie powinien uruchamiać Chrome, jeśli wersje Chrome i ChromeDriver są niezgodne
  • Naprawiono błąd polecenia Znajdź element, które zwracało nieprawidłowy kod błędu w przypadku użycia nieprawidłowego lokalizatora
  • Naprawiono problem z nieprawidłowymi kodami stanu ChromeDriver
  • Naprawiono błąd kompilacji w kodzie JavaScript w funkcji WebViewImpl::DispatchTouchEventsForMouseEvents
  • Polecenia dotyczące stałego rozmiaru okna powinny obsługiwać prompty użytkownika
  • Naprawiono problem z nieprawidłowym uruchamianiem Chrome przez ChromeDrivera w przypadku użycia opcji „user-data-dir=”
  • Polecenie Fixed Status nie jest zgodne ze specyfikacją
  • Naprawiono dodanie obsługi funkcji strictFileInteractability

ChromeDriver 2.44

Obsługuje Chrome w wersjach 69–71

  • Poprawiono WindowMaximize na Macu
  • Naprawiono błąd „alert open error” (błąd otwarcia alertu) w przypadku wywołania uchwytu okna
  • W trybie W3C funkcja Fixed Element Send Keys powinna otrzymywać właściwość „text”
  • Stały przypadek specjalny XML „Is Element Enabled” nie jest obsługiwany zgodnie ze specyfikacją
  • Rozwiązanie problemu z nieprawidłowym działaniem funkcji pobierania wartości CSS elementu w przypadku XML
  • Funkcja Fixed Set Window Rect musi sprawdzać, czy dane wejściowe są prawidłowe
  • Naprawiono: obsługa nowych trybów nieobsługiwanego zachowania promptBehavior

ChromeDriver 2.43

Obsługuje Chrome w wersjach 69–71

Zmiany obejmują:

  • Naprawiono: analiza konfiguracji serwera proxy nie jest zgodna ze standardem
  • Polecenie Uruchom aplikację jest niestabilne
  • Naprawiono: zrzut ekranu elementu w elemencie iframe jest wykonywany nieprawidłowo
  • Dodaliśmy obsługę zmiany rozmiaru okna w ChromeDriver przez połączenie zdalne
  • Naprawiono problem z nieobsługiwanymi kodami błędów w elemencie Clear
  • Naprawiono problem z nieoczekiwaniem na widoczność elementu
  • Naprawiono błąd „Get element property is not implemented”
  • Stałe przełączanie na klatkę nie jest zgodne ze specyfikacją
  • Naprawiono problem z funkcją Execute Async Script, która nie zwracała kodów błędów zgodnych ze specyfikacją.
  • Naprawiono problem z funkcją Wykonaj skrypt, która nie zwracała kodów błędów zgodnych ze specyfikacją.
  • Naprawiono błąd: kod błędu w funkcji ExecuteGet nie jest zgodny ze specyfikacją
  • Naprawiono problem polegający na tym, że funkcja wysyłania tekstu alertu nie zwracała kodów błędów zgodnych ze specyfikacją.
  • Poprawiono funkcję clear() w przypadku elementu input type="date", która udaje, że element nie jest edytowalny przez użytkownika
  • Naprawiono problem z Chromedriverem, który pobierał uchwyt okna dla karty otwartej ręcznie
  • Naprawiono: zezwalanie na dołączanie lub rozpoczynanie nowego pliku dziennika dla sterownika Chrome
  • Naprawiono problem polegający na tym, że funkcja New Session nie wywołuje trybu w3c, jeśli flaga znajduje się w pierwszym dopasowaniu.

ChromeDriver 2.42

Obsługuje Chrome w wersjach 68–70

Zmiany obejmują:

  • Poprawka ClickEelement w emulacji urządzeń mobilnych
  • Naprawiono adresy IP na białej liście z protokołem IPv4
  • Naprawiono uruchamianie ChromeDriver z flagą whitelisted-ips w systemie Mac OS
  • Poprawiono funkcję SetTimeout, aby akceptowała formaty sprzed W3C i W3C.
  • Zrzut ekranu elementu stałego
  • Naprawiono problem z wyszukiwaniem plików binarnych Chrome przez Fixed ChromeDriver w ścieżce systemowej
  • Poprawiono maksymalizowanie okna i pełny ekran
  • Wdrożyliśmy funkcję ponownego odtwarzania logów. ( nie działa jeszcze na Androidzie i w przeglądarce zdalnej)
  • Naprawiliśmy błąd, który powodował, że niektóre kody błędów nie były zgodne ze standardem W3C
  • Rozwiązanie problemu z nieprawidłową obsługą funkcji console.log z wieloma argumentami
  • Poprawiono funkcję GetElementRect, aby dopuszczała liczby zmiennoprzecinkowe
  • Emulacja stałego dotyku

ChromeDriver 2.41

Obsługuje Chrome w wersji 67–69

Zmiany obejmują:

  • Rozwiązanie problemu polegającego na tym, że ChromeDriver działał z opcją „whitelisted-ips”
  • Port debugowania zdalnego jest zwracany w funkcjach
  • Wdrożono pobieranie rozmiaru okna na Androidzie
  • Ulepszone komunikaty o błędach podczas uruchamiania Chrome na komputerze
  • ChromeDriver szybko kończy działanie, gdy nie może uruchomić plików binarnych Chrome
  • Wartość zwracana przez funkcję Close Window jest zgodna ze specyfikacją