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.Zdo 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
kImplicitWaitlimit czasu dla testówFindElement(s)WhileNavigatingwcommands_unittestpodczas 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.hw//chrome.ccplikach, wymuszając użyciecallback.h, gdy wywołania zwrotne są faktycznie wykorzystywane (crrev.com/c/7200285, Bug: 40318405). Przeniesionologging::LoggingSettingszbase/logging.hdo własnego nagłówkabase/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 zbase/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 iteratorafind(key)(crrev.com/c/7705392, crrev.com/c/7693277, Bug: 452950815). WstrzykniętoThreadDelegateprzez konstruktorThread, aby zwiększyć hermetyzację, i dodano opcjęRestartabledoThread, 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_buffersna poziomie pliku w makraUNSAFE_TODO()o większej szczegółowości wchrome/(crrev.com/c/7132241, błąd: 409340989). SkróconoIOBuffer->span().first()doIOBuffer->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
modulewchromedriver_py_testspo 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
ElementClickprawidł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
DecodeURLModenaDecodeUrlModeiDecodeURLEscapeSequences()naDecodeUrlEscapeSequences()(crrev.com/c/7593238). Wprowadzonourl::UrlEscapeDecoder, aby uprościć używanie dekodowania adresów URL w całej bazie kodu (crrev.com/c/7610180). Usunięto zbędne instrukcjebuild/branding_buildflags.hincludes z plików//chrome(crrev.com/c/7595125, Bug: 40318405). Usunięto logikęBUILDFLAG(IS_FUCHSIA)z//chrome, z wyjątkiem ChromeDrivera (crrev.com/c/5485913, Bug: 41481724). - Bezpieczeństwo pamięci (spanification): rozwiązano problemy z markerami
UNSAFE_TODOw 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
Originw 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
testWebviewDetactedDuringClickdo 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
- Standardy C++: zmieniono nazwy
base::DictValueibase::ListValuena ich współczesne odpowiedniki (base::Value::Dictibase::Value::List) w//chrome(crrev.com/c/7515855, crrev.com/c/7514475, Bug: 478100525). Zastąpiono użyciebase::Contains()przezstd::ranges::contains()(crrev.com/c/7461026, Bug: 470391351). Przeniesionostd::setistd::unordered_setdobase::fixed_flat_set(crrev.com/c/7521991, Bug: 473916362). Usunięto wywołaniabase::JSONReader::Read, które nie określały opcji analizowania (crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Zastąpiono różne wywołaniabase::JSONWriter::Write()wywołaniamibase::WriteJson()(crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Uporządkowane zamówienie#include(crrev.com/c/7366868). Zmieniliśmy odwołania do błędów w komentarzach, aby używać identyfikatorów Buganizera zamiast identyfikatorów Monorail (crrev.com/c/7528268, Bug: 321899722). Zmieniono nazwy flag kompilacjiIS_OZONE_*naSUPPORTS_OZONE_*, aby były bardziej zrozumiałe (crrev.com/c/7535923). - Bezpieczeństwo pamięci (spanification): zastąpiono niebezpieczne użycie wskaźników w
base::spanwbase/strings/utf_string_conversion_utils.cc(crrev.com/c/7496410, błąd: 439964610, błąd: 40284755). Więcej zastosowań Spanified wbase::Filetestach//chrome(crrev.com/c/7489592, błąd: 435317390). Zastąpionomemsetinicjalizacją zbiorczą w//chrome(crrev.com/c/6875520, Bug: 435317390). Przekonwertowano pozostałe znaczniki#pragma allow_unsafe_buffersna znacznikiUNSAFE_TODO(crrev.com/c/7132241, błąd: 409340989). - DSE Prewarm: włączono funkcję
DSEPrewarmwfieldtrial_testing_config.jsonna macOS i Windows, ponieważ rozwiązano problem z niestabilnością powiązanych testów ChromeDrivera (crrev.com/c/7489009, ponowne wdrożenie crrev.com/c/7002185 po wycofaniu zmiany crrev.com/c/7452344). (Uwaga: ta zmiana została później ponownie wycofana z powodu wydłużenia czasu działania testów w systemie Windows (crrev.com/c/7517985, błąd: 478888140)). - Diagnostyka: dodano śledzenie lokalizacji wywołującego do zdarzeń śledzenia
WaitableEventiConditionVariable, aby ułatwić debugowanie (crrev.com/c/7487755, błąd: 476408124).
ChromeDriver 145
Nowe funkcje
- Testowanie: zaktualizowaliśmy
run_py_tests.pyplatformę 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 elementyinput,textareaicontenteditable. Zapewnia to pokrycie regresji, dzięki czemu podczas długich operacjisend_keysnie 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
testClientHintsDeviceNameIPhoneXitestClientHintsDeviceNameIPadprzez 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++: w
//chromezmieniono różne przypadki użyciabase::Contains()nastd::ranges::contains()(crrev.com/c/7411011, Bug: 470391351), w tym poprawiono formatowanie (crrev.com/c/7247217). Zmieniliśmy parametry ciągów znaków nastd::string_view, aby uniknąć niepotrzebnego przydzielania ciągów znaków podczas korzystania zsubstr()(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 zwrotneBodyAsStringCallbackDeprecatedwSimpleURLLoaderwywołaniamiBodyAsStringCallback, które korzystają zstd::optionalzamiaststd::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 jakstorage-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
WebViewImpljest 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.hw//chrome.ccplikach, wymuszając użyciecallback.h, gdy wywołania zwrotne są faktycznie wykorzystywane (crrev.com/c/7200285, Bug: 40318405). Przeniesionologging::LoggingSettingszbase/logging.hdo własnego nagłówkabase/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życiebase::HexEncodena nowszą funkcjębase::HexEncodeLower(crrev.com/c/7103100, Bug: 456472080). - Bezpieczeństwo pamięci (spanification): przenieśliśmy
WriteToPipeiWriteToPipeNoBestEffortw testach jednostkowychPipeBuilderiPipeConnection, aby akceptowaćbase::span, co naprawia niebezpieczne użycie bufora (crrev.com/c/7090293, błąd: 455758227). Przekonwertowano makra#pragma allow_unsafe_buffersobejmujące cały plik na makraUNSAFE_TODO()o większej szczegółowości wchrome/(crrev.com/c/7132241, błąd: 409340989). SkróconoIOBuffer->span().first()doIOBuffer->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
WaitForConditionAPI w celu bardziej niezawodnej synchronizacji (crrev.com/c/6978928, błąd: 42321861). - DSE Prewarm: domyślnie wyłączyliśmy funkcję
Prewarmw 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.hnascoped_refptr.hw 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). PrzeniesionoGURLakcesory do ich wariantówGet*(np.GetSpec()zamiastspec()), 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.ccza pomocąADD_FAILURE()(crrev.com/c/6998270). Dodano test regresji dlacrbug.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:processIDmożliwość zwracania głównego identyfikatora procesu przeglądarki na komputer. Dzięki temu ChromeDriver będzie zgodny zmoz:processIDw 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
CheckAppInstalledw 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
IgnoreDuplicateNavsnieprawidłowo zastępował domyślne przełączniki funkcji w ChromeDriver. Funkcja została wyłączona w przypadku sesji ChromeDriver, a logikaSwitches::SetFromSwitcheszostał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łaniamibase::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) wbase::JSONReader::Readibase::JSONReader::ReadAndReturnValueWithError(crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Usunięto pragmy#pragma allow_unsafe_buffersw całym pliku po ręcznym określeniu zakresów (crrev.com/c/6778035, błąd: 409340989). Usunięto użycie makraLazyInstance(crrev.com/c/6781377, Bug: 432815283). Dodano brakujące nagłówki dlahttp_response_headers.hza 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łędyCHECK, gdy parametry rozmiaru uznano za zbędne (crrev.com/c/6734592, błąd: 431824299). - Testowanie: tymczasowo wyłączono
testDoesntCrashOnClosingBrowserFromAsyncScriptw 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ę
ShouldShowAccountsPassiveDialogwIdentityDialogController, 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.setPrewarmingAlloweddo 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ęDSEPrewarmwfieldtrial_testing_config.jsonna 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
WebLayerprojektu w kodzie Androida (crrev.com/c/6792520, błąd: 40272607).
ChromeDriver 141
Nowe funkcje
- Testowanie: dodaliśmy obsługę flagi
--enable-per-test-tracingw przypadkurun_wpt_tests.py, co odpowiada działaniurun_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
memsetstandardową inicjalizacją agregatów C++ (instance = {}) wchrome/, aby uniknąć pomijania konstruktorów i zapewnić bezpieczeństwo pamięci (crrev.com/c/6875520, Bug: 435317390). Dodano brakujące dyrektywy#includedla//base/time/time.hza 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 prefiksemdevtools://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:hiddennarzucone przez elementy nadrzędne. Dzięki temu obliczenia będą zgodne ze specyfikacją WebDrivera i innymi scenariuszamiPerformActions(crrev.com/c/6735230, Bug: 42322257). - Android naprawiono funkcję
CheckAppInstalledw starszych wersjach Androida (przed Androidem 11), w których flaga--user curmenedżera pakietów nie jest obsługiwana (crrev.com/c/6785949, błąd: 433885051). - Testowanie: usunięto niestabilność w zestawie testów
chromedriver_py_testsspowodowaną 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
ShouldShowAccountsPassiveDialogdo interfejsuIdentityDialogController(część FedCM), co spowodowało regresję (crrev.com/c/6780413, błąd: 425801332).
Zmiany wewnętrzne i refaktoryzacja
- Standardy C++: dodano brakujące
std::vector#includeza pomocą narzędzia Include What You Use (IWYU) (crrev.com/c/6652818, błąd: 40216326). Usunięto zbędne dołączeniagurl.h(crrev.com/c/6578272) i<queue>(crrev.com/c/6570349, Bug: 40318405) w nagłówkach//chrome. Rozwiązano problemIWYUw przypadkuNOTIMPLEMENTED()w//chrome(crrev.com/c/6655452, Bug: 41493641). - Bezpieczeństwo pamięci (spanification): uruchomiliśmy automatyczne narzędzie do spanifikacji wskaźników w kompilacjach systemu Linux, aktualizując kod w celu używania zakresów, w których znane są rozmiary (crrev.com/c/6734592, błąd: 431824299). Po zakończeniu migracji usunęliśmy pragmaty
#pragma allow_unsafe_buffersw całym pliku wchrome/(crrev.com/c/6778035, błąd: 409340989). Wykluczonochrome/testcele z ostrzeżenia-Wexit-time-destructors, aby umożliwić włączenie ostrzeżenia globalnie (crrev.com/c/6736532, błąd: 40031409, błąd: 430332953). Usunięto wycieki pamięci w przypadku użyciaLazyInstancew//chrome(crrev.com/c/6781377, Bug: 432815283). - Czyszczenie: usunęliśmy flagę interfejsu wiersza poleceń
--debug-bidi-mapper, ponieważ przejście na uruchamianie narzędzia BiDi Mapper w ukrytym elemencie docelowym zostało zakończone i jest stabilne (crrev.com/c/6672011, Błąd: 408992812). - Cleanup: usunięto pozostałe odniesienia do nieobsługiwanego projektu
WebLayer(crrev.com/c/6792520, błąd: 40272607). Automatyczne formatowanie plików//chrome/testGN w celu skrócenia odwołań do elementów docelowych (crrev.com/c/6789277, błąd: 40760278). - Testowanie: dodano test akceptacyjny, aby sprawdzić poprawkę problemu
PerformActionspointerMove(crrev.com/c/6648646, błąd: 42322257). - Testowanie: wykomentowano segment tworzenia sterownika równoległego w teście
testBrowserWithUsedUserDataDir(i zgłoszono błąd śledzenia), ponieważ powodował on błędy w systemie macOS związane z wyłączną blokadą podczas korzystania zchrome-headless-shell(crrev.com/c/6470455, błąd: 411407649, błąd: 380903149). - Testowanie: zaktualizowano otokę
run_cwt_chromedriver.pyna iOS, aby obsługiwała argument--platform-type(crrev.com/c/6771517, błąd: 427548014). - WŁAŚCICIELE: usunięto użytkownika
nvitkovz plikuchrome/test/chromedriver/OWNERS(crrev.com/c/6771413).
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życiamistd::string_vieww//chrome/test(crrev.com/c/6628089, Bug: 422940464). Dodanobase/strings/string_view_util.h, gdzie użytobase::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
//chromedzięki wyraźnemu uwzględnieniu<vector>(crrev.com/c/6652818),base/notimplemented.h(i usunięciubase/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-loggingdorun_wpt_tests.py, co umożliwia skryptowi zrzucanie ChromeDrivera i przeglądarkistderrnawet 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) iheadless-shelltesty 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 celomandroid_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
localStateiprefspodczas uruchamiania ChromeDrivera na urządzeniach z Androidem. Wymaga to ADB i niestandardowej flagiuser-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
kTargetDetachedi próbą uzyskania dostępu do nieprawidłowegoWebView(crrev.com/c/6538867, Bug: 410599467). - Testy wydajności: naprawiono narzędzie do uruchamiania testów
crossbenchna 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::OnReadDuringHandshakeiWebSocket::OnReadDuringOpenwskaźnikamibase::span, rozwiązując ostrzeżeniaunsafe-buffer-usage(crrev.com/c/6557346, błąd: 354307328). Usunięto niepotrzebne dyrektywy#pragma allow_unsafe_bufferspragmas wchrome/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"i#include <queue>zchrome/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
RSAPrivateKeydocrypto::PrivateKeyiSHA256HashStringdocrypto::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
OwnContributionEstimatedo poleceń automatyzacji interfejsu Compute Pressure API (implementacje CDP i testdriver) (crrev.com/c/6373001, Bug: 402033762). - Testowanie: poprawiono testy integracji weryfikujące
ClearDisplayFeaturesna 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
PdfOopifjest wyłączona) do listy miejsc docelowych najwyższego poziomu. Logika filtrowania została rozszerzona, aby prawidłowo wykluczać te miejsca docelowe z prefiksemchrome-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_vieww nazwach plików wLogMessagei 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::GetVarw//chrome, aby używać interfejsu API zwracającegostd::optionalzamiast 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.hdo dedykowanego pliku nagłówkowegowindows_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
Browserdla Androida i wdrożono interfejsBrowser.getWindowForTargetAPI 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-dirwtestBrowserWithUsedUserDataDirpodczas uruchamiania wchrome-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ść
catapulti powiązane z nią plikipydepsoraz odwołaniadevil_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.closelub SIGTERM) zamiast domyślnegoSIGKILL. Dzięki temu debugery, takie jakrr, 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, gdyargssą 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-dirjest 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
PdfOopifbyła wyłączona. Filtr został rozszerzony o prefikschrome-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 stanemconnection refusedw przypadku kierowania na spakowane aplikacje Chrome (crrev.com/c/6317161, Błąd: 396622746).
Zmiany wewnętrzne i refaktoryzacja
- Standardy C++: przywróciliśmy zmianę, która używa
std::string_vieww nazwach plików wLogMessagei zdarzeniach śledzenia, co poprawia zgodność ze strukturami rejestrowania w Rust, które nie gwarantują ciągów znaków zakończonych znakiem null (crrev.com/c/6387020, przywrócenie crrev.com/c/5765705 po wycofaniu crrev.com/c/6383699 i kolejnym wycofaniu crrev.com/c/6395097). - Standardy C++: usunięto zbędne wywołania
base::Value::Clone()w celu optymalizacji wydajności (crrev.com/c/6361818). Usunięto dodatkowe-Wunsafe-buffers-in-libc-callsostrzeżenia w plikach specyficznych dla systemu Windows, aby oczyścić dane wyjściowe kompilacji (crrev.com/c/6369920, Bug: 390223051). - Rozszerzenia: wycofaliśmy dodanie wpisu
fieldtrial_testing_config.jsonw przypadku fazyExtensionManifestV2Unsupportedz powodu problemu (crrev.com/c/6397497, wycofanie crrev.com/c/6358257, błąd: 367395349, błąd: 406523920). - Dokumentacja: ulepszona dokumentacja testowania ChromeDrivera na Androidzie (crrev.com/c/6354040).
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_LACROSi powiązane dane testowe) zchrome/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
md5sumpo zastąpieniu go narzędziemdevil_util, usuwając starsze zależności kompilacji (crrev.com/c/6309939, Bug: 397452007). - Standardy C++: usunięto przestrzeń nazw
chrome::zResultCodeiIsNormalResultCode(), 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_boundw ChromeDriverze przez wykorzystaniestd::ranges::lower_bound(crrev.com/c/6223172, błąd: 392116519). Wycofanounsafe_libc_callostrzeż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_arrayjakoconstexpr, 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-mitigationsi 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 wchromium-bidi. Starsza właściwośćchannelnie jest już dozwolona (crrev.com/c/6179410). - Windows: dodaliśmy zasób wersji do pliku binarnego
chromedriver.exew 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_pagenie 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ę (
DCHECKbłąd wbase::Value()) spowodowaną nieprawidłowym obcinaniem ciągów logów zawierających znaki wielobajtowe. Logika została zaktualizowana, aby używać wykrywania granicyUnicodeStringzamiast prostych sprawdzeń długościstd::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_shelldoheadless_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
- Standardy C++: zastąpiono użycie
base::rangesstandardowymstd::ranges(crrev.com/c/6200893, crrev.com/c/6177197, Bug: 386918226). Przepisano wzorceb ? "true" : "false", aby w miarę możliwości używaćbase::ToString(bool)(crrev.com/c/6165810, błąd: 335797528). Usunęliśmy niebezpieczną funkcjęStringPrintfNonConstexpr()i zastąpiliśmy ją bezpieczniejszymi alternatywami formatowania ciągów znaków (crrev.com/c/6149756). Zastąpiono arytmetykę wskaźników (+ std::size) standardowymi iteratoramibegin/end, aby rozwiązać problemy z niebezpiecznymi ostrzeżeniami dotyczącymi bufora (crrev.com/c/6217045, Bug: 392116519). - Porządkowanie: usunęliśmy flagę funkcji
FedCmIdpSigninStatusi jej flagę czasu działania (crrev.com/c/6111321, błąd: 381211734). (Uwaga: poprzednia próba usunięcia została cofnięta crrev.com/c/6082405 z powodu błędów).
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ą funkcjienable_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 URLchrome-extension://były nieprawidłowo uwzględniane jako miejsca docelowe rozszerzeń. Wybór został przywrócony dotype=background_page(crrev.com/c/6093588, Bug: 383141569). PrzeniesionoenableExtensionTargetsdo 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śbybeforeunloadbez 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?testpowodowała zawieszenie. Heurystyka służąca do identyfikowania nieodpowiadającego nowego okna (baseURL==about:blankidocumentURL!=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łądTimeout(crrev.com/c/6012427, Bug: 42323825). - Diagnostyka: przekazaliśmy błąd
kTargetCrashedbezpośrednio przezNavigationTracker. 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żywanieSendCommandzamiastPostCommandw przypadku oczekiwania natychmiastowych efektów ubocznych (crrev.com/c/6054137) oraz zastąpienie polegania na natychmiastowych efektachExecuteScriptbardziej 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
Printw skrypcielog_replay(crrev.com/c/6010809, błąd: 378451938).
Zmiany wewnętrzne i refaktoryzacja
- Standardy C++: usunięto
Mojo.InvalidUTF8Stringhistogram, 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 zstd::listnabase::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-usageostrzeżeń (crrev.com/c/6043879, Bug: 378069401) przeniesiono tablice w stylu C dostd::arraywchrome/. Wprowadzono ścisłesize_tużycie w funkcjach zakresu (crrev.com/c/6026238, crrev.com/c/6020621). - Testowanie: przywróciliśmy pełnoekranowe
{ref,crash}testsdowpt_internal/, ponieważtestdriverobsługuje je teraz (crrev.com/c/6088404). - Testowanie: poprawiono
wptrunnerw 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
testBrowserCrashWhileWaitingForEventstest 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_shellw 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ń
repeatiretry-limitw testach integracyjnych ChromeDrivera, mapując je na standardowe argumentyisolated-script-test-repeatiisolated-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-limitzostała zmieniona na 0 (crrev.com/c/5953326, Bug: 374681919). - WebSockets zaimplementowano
WebSocketConnectioni powiązane klasy wEmbeddedTestServer, co umożliwia przeniesienie testów związanych z WebSocket zSpawnedTestServer. 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
kTargetDetachedwprowadzony we wcześniejszych zmianach (crrev.com/c/5934524, błąd: 42323264). - Stabilność: rozwiązano problem z przerywanymi awariami w teście integracyjnym
testClickNavigateRemoteToLocalna komputerach Mac z procesorem ARM64, eliminując sytuację wyścigu (crrev.com/c/5975526, błąd: 375971185). - Nawigacja: naprawiono polecenia
GoBackiGoForward, które wcześniej nie działały, jeśli poleceniePage.getNavigationHistorybył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
ScriptTimeoutbłą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 AtomsCLEAR), są prawidłowo przekazywane do użytkownika (crrev.com/c/5937893, Bug: 42323409). Ulepszona obsługa błędów wGetElementTagName, 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ówcss/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-shellnie 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-dirani 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-bidimapper 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łądNoSuchShadowRootpodczas 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
userNameiuserDisplayName(crrev.com/c/5905423, błąd: 367915823).
Poprawki błędów
- Dane wejściowe: rozwiązano problem z sytuacją wyścigu w przypadku kliknięć myszą w ramkach zdalnych przez kierowanie zdarzeń myszy do najwyższego przodka ramki docelowej z tej samej domeny, a nie tylko do ramki najwyższego poziomu (crrev.com/c/5836968, błąd: 42323535).
- Dane wejściowe: poprawiono format sygnatury czasowej wysyłanej z poleceniem
Input.dispatchTouchEventz milisekund na sekundy, co wyeliminowało awarie podczas testowania zdarzeń wskaźnika WPT (crrev.com/c/5924253, błąd: 360918166). - Testowanie: ponownie włączyliśmy liczne testy ChromeDriver na Macu (crrev.com/c/5923569, crrev.com/c/5922823, crrev.com/c/5921444, crrev.com/c/5920851, crrev.com/c/5921442) i Windowsie (crrev.com/c/5923955), ponieważ powiązane z nimi błędy nie są już powtarzalne.
Zmiany wewnętrzne i refaktoryzacja
- Bezpieczeństwo pamięci (spanification): zastąpiono niebezpieczne użycie wskaźnika
base::spanwnet::HttpUtil(crrev.com/c/5854420) i przeniesionobase::File::WriteAtCurrentPos()do jego odpowiednika opartego na zakresie (crrev.com/c/5818972). Zmieniliśmy wartości wskaźnika mapy (np. wstd::map,std::unordered_map) naraw_ptr(crrev.com/c/5867189, błąd: 329428315). - Standardy C++: zastąpiono makra atrybutów Abseil (
ABSL_ATTRIBUTE_*) standardowymi makramibase/(crrev.com/c/5852373). Uniknięto niechcianych kopii przez zastąpienie ciągów tekstowych i wektorów przekazywanych przez wartość odpowiednimi odwołaniamistd::string_viewlub odwołaniami stałymi oraz usunięto niepotrzebne kwalifikatoryconstz argumentówstd::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
- BiDi zaktualizowano zależność BiDi Mapper, pobierając najnowsze aktualizacje protokołu i poprawki błędów z upstreamu
chromium-bidi(crrev.com/c/5850570, ponowne wdrożenie crrev.com/c/5837065 po wycofaniu crrev.com/c/5840080; crrev.com/c/5717956, błąd: 4226). - BiDi zaktualizowano ChromeDrivera, aby podczas inicjowania sesji BiDi dostarczał
unhandledPromptBehaviorbezpośrednio do Mappera za pomocą poleceniasession.new. W ten sposób zakończymy migrację zMapperOptions(crrev.com/c/5682934, crrev.com/c/5766077, Bug: 42323841, Bug: 356371297). - Testowanie: dodano obsługę argumentu
--chromedriverw skrypciebisect-builds.pyw przypadku kompilacji na komputery. Umożliwia to skryptowi automatyczne pobieranie i używanie prawidłowej wersji ChromeDrivera podczas dzielenia na pół w przypadku testów zależnych od WebDrivera lub ChromeDrivera (crrev.com/c/5861048, błąd: 352344089).
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
wptrunnerprzez zastąpienie zakodowanego na stałe ciągu znakówchromerzeczywistym używanym produktem i ukrycie w podsumowaniu szczegółowego artefaktucommand(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.testClickNavigateLocalToLocalna Macu (crrev.com/c/5806894, błąd: 361521805) i niestabilne testyChromeDriverTest.testClickElement*ObscuredByScrollBarw 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.newdo narzędzia BiDi Mapper, co umożliwia mu bezpośrednie obsługiwanie funkcji. To pierwszy krok w kierunku usunięciaMapperOptions(crrev.com/c/5741432, Bug: 356371297). (Uwaga: powiązana zmiana crrev.com/c/5754093, która zapewniała przetworzoneunhandledPromptBehavior, 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ć
ScopedTestMV2Enablerw 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
Setw 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
- BiDi zaktualizowano zależność BiDi Mapper, aby uwzględnić najnowsze poprawki błędów i aktualizacje protokołu z
chromium-bidi(crrev.com/c/5756587, crrev.com/c/5717956, Bug: 4226). - Bezpieczeństwo pamięci (spanification): zastąpiono niebezpieczne użycie bufora w
WebSocketFrameParser::Decode,MaskWebSocketFramePayloadiWriteWebSocketFrameHeaderprzezbase::span(crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, Bug: 40284755, Bug: 354307327). Dodano#pragma allow_unsafe_bufferswchrome/*w ramach przygotowań do dalszych poprawek (crrev.com/c/5717950, błąd: 40285824) i przekonwertowano niezgodne makraUNSAFE_BUFFERS()naUNSAFE_TODO()(crrev.com/c/5786346). Zmieniono polabase::spannabase::raw_span(crrev.com/c/5515096, Błąd: 332587642). - Standardy C++: usunięto z bazy kodu użycie niebezpiecznych tablic o zmiennej długości (VLA) przez wyraźne oznaczenie długości tablic jako
constexpr(crrev.com/c/5738737, błąd: 349656479). Dodano niezbędne nagłówki<unordered_map>, które wcześniej były pobierane przechodnio (crrev.com/c/5792881). - Architektura: wycofaliśmy rozwidlenie implementacji
WebSocketEncoder, przywracając jej zatrzymaną migrację do//services/network/public/cpp/serveri centralizując logikę w//net/server, aby zapewnić spójne aktualizacje (crrev.com/c/5768214, Błąd: 40205564).
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-portdo 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()zamiastSendCommandAndGetResult(), ponieważ poleceniesetSensorOverrideReadingsCDP 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
- BiDi zaktualizowano zależność BiDi Mapper, co spowodowało wprowadzenie najnowszych funkcji protokołu, poprawek błędów i aktualizacji oczekiwań WPT z projektu
chromium-bidi(crrev.com/c/5717956, crrev.com/c/5644823, crrev.com/c/5630727, crrev.com/c/5615110, crrev.com/c/5614670, Bug: 4226, Bug: 347863537, Bug: 324436866). - Zastąpiono użycie wycofanej metody
GrowableIOBuffer::StartOfBuffermetodąspan, co zwiększa bezpieczeństwo pamięci przez wyeliminowanie niekontrolowanych wskaźników (crrev.com/c/5706088, Bug: 329476354). - Zmieniliśmy metody
DecodewWebSocketFrameParser, aby zwiększyć bezpieczeństwo pamięci (crrev.com/c/5722108, błąd: 354307327). - Usunięto pozostałości
absl::optionalprzez usunięcie przestarzałych nagłówków Abseil i przejście nastd::optional(crrev.com/c/5691505, Bug: 40242125). - Zmieniliśmy ChromeDriver, aby wszystkie nieznane typy docelowe (w tym
shared_storage_worklet) traktował jakoWebViewInfo::kOther, a nie jako błędy. Umożliwia to wprowadzenie w Chrome nowych typów docelowych bez natychmiastowego przerywania testów WPT (crrev.com/c/5680542, crrev.com/c/5679146, Bug: 42323839). - Dodano miejsce docelowe instalatora dla narzędzia
linux-builder-perf, aby generować pliki binarne bez symboli na potrzeby archiwów bisect, a także skonfigurowano narzędzia pinpoint, aby akceptowały różne wartościadditional_compile_targets(crrev.com/c/5668198, Bug: 344643694). - Zaktualizowano
run_performance_tests.py, aby znajdować i przekazywać lokalizację ChromeDrivera docrossbenchpodczas kompilacji wydajnościowych (crrev.com/c/5624538, Błąd: 338629299). - Wprowadzono zmianę w zależności
crossbench(crrev.com/c/5681849). - Oznaczono testy
FedCmSpecificTest.testClickErrorMoreDetailsiFedCmSpecificTest.testClickErrorGotItjako niestabilne na komputerach Mac (crrev.com/c/5704320, crrev.com/c/5677564, Bug: 352821422, Bug: 346530330). - Wyłączono niestabilny test
BidiTest.testFocusInFirstTab(crrev.com/c/5676686, błąd: 350916212).
ChromeDriver 127
Poprawki błędów
- Stabilność: naprawiono awarię ChromeDrivera, która występowała, gdy polecenie
target.detachFromTarget(lub zdarzenietarget.detachedFromTarget) było odbierane, gdy klient Narzędzi deweloperskich aktywnie przetwarzał inne polecenia, co zapobiegało przedwczesnemu zwalnianiu obiektówWebViewiDevToolsClient(crrev.com/c/5527584, Bug: 339773537). - Stabilność: rozwiązano problem polegający na tym, że polecenie
Switch To Windowmogł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.getTreeniepustej 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 operacjaselectAccountzakończy się powodzeniem (crrev.com/c/5398379, błąd: 331237776). - Testowanie: naprawiono błąd
DCHECKpodczas 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.pynie może zlokalizować pliku binarnego przeglądarki (crrev.com/c/5604204, błąd: 4781).
Zmiany wewnętrzne i refaktoryzacja
- BiDi zaktualizowano zależność BiDi Mapper, aby uwzględniać najnowsze aktualizacje protokołu i poprawki błędów (crrev.com/c/5614670, crrev.com/c/5593796, crrev.com/c/5537892, crrev.com/c/5471839, Bug: 4226).
- Zastąpiono użycia
NOTREACHED()ciągiemNOTREACHED_IN_MIGRATION()w kataloguchrome/w ramach przygotowań do zmianyNOTREACHED()na ściśle[[noreturn]](crrev.com/c/5539004, błąd: 40580068). - Włączono generowanie
THIRD_PARTY_NOTICES.txtdla ChromeDrivera za pomocą narzędzialicenses.py, aby spełnić wymagania dotyczące dystrybucji (crrev.com/c/5596355, błąd: 4777). - Usunięto obsługę
run_wpt_tests.pycontent_shell, ponieważ pokrycie WPT w Chromium w pełni przechodzi naheadless_shell+ ChromeDriver (crrev.com/c/5589930). Przełącznikiwptrunnerzostały przeorganizowane, aby były specyficzne dla osadzającego, co pozwala na wprowadzenie tej zmiany bez wpływu na funkcjonalność (crrev.com/c/5589793, Błąd: 338412391). - Ujednoliciliśmy logikę wykrywania i obsługi okien dialogowych JavaScriptu, przenosząc ją z
JavaScriptDialogManagerbezpośrednio doDevToolsClientImpl. Dzięki temu wyeliminowaliśmy osobną klasę menedżera, co ułatwiło testowanie i rozumowanie (crrev.com/c/5545630, Bug: 4757). - Wyłączono
PureBidiTest.testBrowsingContextTreeIsNotEmptyna komputerach Mac z powodu niestabilności (crrev.com/c/5588665, błąd: 343891977). - Zaktualizowano oczekiwania dotyczące testów WPT BiDi, aby uwzględnić ostatnie aktualizacje narzędzia Mapper (crrev.com/c/5615110, Bug: 4226, Bug: 324436866).
- Dodano testy jednostkowe dla funkcji
WebView::SendBidiCommandiBidiTracker, aby zwiększyć pokrycie kodu (crrev.com/c/5588400, błąd: 341048786, błąd: 1503101).
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 jakobidi messagesdo analizowania, chociażBidiTrackerobecnie 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 errorzamiastinvalid 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 operationzamiast 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łądkSessionNotCreated, 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
kNoSuchExecutionContextpodczas 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
- BiDi zaktualizowano zależność BiDi Mapper, co pozwoliło wprowadzić najnowsze funkcje i poprawki błędów z projektu
chromium-bidi(crrev.com/c/5490428, crrev.com/c/5471839, crrev.com/c/5509316, crrev.com/c/5458234, Bug: 4226). (Uwaga: zmiana w mapowaniu została na krótko cofnięta przez program ogrodniczy, a następnie przywrócona (crrev.com/c/5374839, crrev.com/c/5374366)). - W
//chrome(crrev.com/c/5467746, Bug: 40506050) zastąpiono użyciabase::StringPiecetekstemstd::string_view. - Usunięto użycie
std::to_string()w//chromei zastąpiono jebase::NumberToString()lubbase::FormatNumber()(crrev.com/c/5505593, błąd: 335672557). - Usunięto obsługę przełącznika
--remote-debugging-addressw starym trybie bez interfejsu graficznego, ponieważ niezabezpieczony zdalny dostęp do protokołu Narzędzi deweloperskich w Chrome uznano za zbyt niebezpieczny (crrev.com/c/5512634, błąd: 327558594). - Usunięto reguły kompilacji Fuchsi z
//chrome, z wyjątkiem ChromeDrivera (crrev.com/c/5473870, Bug: 41481724). - Przeniesiono starsze odwołania
TODO(crbug.com/...)w kodzie do nowego formatu identyfikatora narzędzia do śledzenia problemów (TODO(b/...)) (crrev.com/c/5492605, crrev.com/c/5486477, crrev.com/c/5461380, Bug: 321899722). - Wyłączono testy WebAuthn (uwierzytelniania) na komputerach Mac (zarówno w przypadku wersji bez interfejsu, jak i
chromedriver_py_tests) z powodu złożonego błędu, co odblokowało możliwość uaktualnienia botów do macOS 14 (crrev.com/c/5525435, crrev.com/c/5518820, Bug: 329130177). - Wyłączono narzędzia do tworzenia testów WPT dla
content_shellze względu na trudności w jednoczesnym uruchamianiu testów WPT z ChromeDriverem i Content Shell (crrev.com/c/5512439, Bug: 40214293). - Przywrócono zmianę, która aktualizuje
focus-navigationWPT, aby używaćShift+Tabza pomocątest_driver.action_sequence()do nawigacji wstecznej. Naprawiono błąd wfocus-utils.js, w którym dla klawisza Shift używano nieprawidłowego kodu klawisza (E050zamiastE008) (crrev.com/c/5467843, wycofanie crrev.com/c/5466531, ponowne wdrożenie crrev.com/c/5463903, błąd: 40597271). - Dodano
crossbenchichromedriverdo celów kompilacji wydajnościowej (crrev.com/c/5521874, Bug: 338627700).
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
idzDoublenabase::Value. Dzięki temu wartośćidjest 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
selectAccountzakończy się powodzeniem. Rozwiązuje to problemy z testami, gdy funkcjaselectAccountjest wywoływana bez oczekiwanego selektora kont (crrev.com/c/5398379, Bug: 331237776). Uniknięto wywoływania funkcjifedcm_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.htmlWPT przez połączenie sekwencji działań i użycie dokumentu głównej ramki jako źródła działaniapointerUp, co zapobiega nieprawidłowemu wysyłaniu przez ChromeDrivera współbieżnych zdarzeńpointerUpw ramkach (crrev.com/c/5402096, Bug: 325981758). - Testowanie: poprawiono
wptrunner, aby prawidłowo przekazywać dane wyjściowestderr(w tym dzienniki przeglądarki zapisywane podczas korzystania z--enable-chrome-logs) do artefaktustderrzamiast docrash_log, oraz przeniesiono błędy platformy testowej (zawierające zrzut stosu przeglądarki) docrash_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
StackTraceChrome. 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
testTakeLargeElementViewportScreenshotna komputerach Mac (szczególniemac-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ń
chromeużyty do uruchomienia każdego testu WPT z dziennikachromedriverdo artefaktu ResultDB o nazwiecommand. Ułatwia to ręczne debugowanie za pomocąrun_blink_wptserve.py(crrev.com/c/5441189, błąd: 41494889). - Zależności: usunięto
Closurez listy zależnościselenium-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_annotationsw całym repozytorium podstawowym (crrev.com/c/3398908, błąd: 1282422). - Formatowanie: zastosowano nową konfigurację
clang-formatdo 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
BiDiMapperprzed 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
defaultBackupEligibilityidefaultBackupStatedo polecenia „Add Virtual Authenticator” orazbackupEligibilityibackupStatedo polecenia „Add Credential” (crrev.com/c/5297117, Bug: 40945430). - Testowanie: dodano obsługę argumentu wiersza poleceń
--failfastdo 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
SetRPHRegistrationModeza pomocą interfejsów APItestdriver-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::SetWindowBoundsprzez 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_shellużywał--user-data-dirzamiast--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::optionalelementemstd::optionalw całej bazie kodu po przekształceniuabsl::optionalw alias typu (crrev.com/c/5296147, Błąd: 1500249). - Rozszerzono zakres
MiraclePtr(raw_ptr) na dodatkowe kontenery standardowe, w tymstd::list,std::unordered_set,base::flat_set,std::stackistd::queue(crrev.com/c/5306923, Bug: 325302189). - Zmieniono funkcję
WriteBigEndian(), aby używać konwersjibase::numerics-bajtowych lubBigEndianWriter(która teraz akceptujebase::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.jsi 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.pydo generowania kredytów dla zależnościBiDiMapperi zaktualizowaniu wywołanialicenses.py, aby opierało się wyłącznie na pliku READMEselenium-atomsw 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łądJavaScriptError, 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.htmltesty 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órychtest_driver.set_permission(...)nieprawidłowo przekazywałfalsezamiastnulllubWindowProxy, 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
ChromeImpliDevToolsClientImpl, 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
#includedlabase/..., aby używać""zamiast<>w celu zachowania spójności (crrev.com/c/5237376, błąd: 1500249). - Przeniesiono wszystkie pliki
DIR_METADATAzchrome/test/do Buganizera (crrev.com/c/5284119, błąd: 1518875). - Zapobiegliśmy tworzeniu przez wptrunner lokalnego pliku
-podczas przekazywania-vvvprzez usunięcie niepotrzebnego przełącznikachromedriver --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-portdorun_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()iRandBytes(), 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/handlesmogł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
dialogtypenieaktualnych 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.enablewysyłanych z każdegoDevToolsEventListener, ponieważDevToolsClientImplobsł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_shellzostał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_rolenacontent_shell, ponieważ nie zostało to jeszcze wdrożone, co zapobiegaTypeErrorbłędom (crrev.com/c/5189678, błąd: 1517744). - Ponownie wdrożono refaktoryzację, aby używać niezależnych od platformy
IS_OZONE_{X11, WAYLAND}flag zamiastOZONE_PLATFORM_*(crrev.com/c/5086329, Bug: 1500494). - Zaktualizowano zależność
selenium-atomsdo 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
originw 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 odStringPrintf(), 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ę
ScopedTempDirWithRetryprzez 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) wchrome-headless-shelloprócz standardowej przeglądarki Chrome na robotach kompilujących. Obejmuje to możliwość wykrywania pliku binarnego przeglądarki na podstawie parametru--browser-namei 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
KeyboardLayoutEnginejakoStubKeyboardLayoutEngine, aby zapobiec awariom ChromeDrivera spowodowanym przez trafienieDCHECKwKeyboardLayoutEngineManager::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-shellzwracała pustą listę docelową, co uniemożliwiało utworzenie sesji. Aby to naprawić, dodaliśmy argumentdata:,do wiersza poleceń przeglądarki, gdy nazwa przeglądarki tochrome-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
dialogtypei 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-shellw 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
- BiDi zaktualizowano zależność BiDi Mapper (crrev.com/c/4994305, błąd: 4226).
- Wycofano użycie
IS_OZONE_{X11, WAYLAND}na rzeczOZONE_PLATFORM_*z powodu błędu (crrev.com/c/5086571, wycofanie crrev.com/c/5083096, błąd: 1500494). - Przeniesiono kod w
commands_unittest.cc, aby używaćbase::BindLambdaForTestingzamiast wycofanegobase::Passed(crrev.com/c/5078589, błąd: 1326449). - Przebudowano
session.new, aby wyodrębnić obsługę standardowych funkcji (np.testName,binary,browserName) do dedykowanej metody i zapewnić, że polecenie będzie uwzględniać funkcje podobnie jak klasyczne polecenie (crrev.com/c/5004665, crrev.com/c/5001510, Bug: 4358, Bug: 4610). - Usunięto użycie wycofanego nagłówka
base/strings/string_piece_forward.h(crrev.com/c/5008994, Bug: 691162). - Przygotowano przejście z
net::IOBufferna klasę niebędącą właścicielem przez użycienet::IOBufferWithSizew przypadkach, w których występuje własność (crrev.com/c/4996470, błąd: 1493389). - Wprowadzono i wykorzystano znak
base::RandBytesAsVector(), aby uniknąć przechowywania wartości binarnych w ciągach znaków (crrev.com/c/5018451). - Wyłączono kilka testów integracyjnych Pythona na Macu, które stale kończyły się niepowodzeniem, aby zapobiec powodowaniu przez nie zielonych kompilacji z powodu zwolnienia z odpowiedzialności przez analizę LUCI (crrev.com/c/4998771, błąd: 1486604, błąd: 1486520, błąd: 1486474, błąd: 1481915).
- Zmieniono nazwę
webdriver_tests_suite(iwpt_tests_suite) nachrome_wpt_tests, aby ujednolicić konwencje nazewnictwa pakietu WPT w narzędziach do testowania na platformie Linux (crrev.com/c/5014293, błąd: 1474702). - Zmieniliśmy przeznaczenie polecenia sterownika internetowego
ConfirmIdpLoginFedCM na bardziej rozszerzalne polecenieClickDialogButton, które akceptuje parametrDialogButton(crrev.com/c/5003255, błąd: 1499341). - Zaktualizowano zależność
crossbench, wprowadzając liczne poprawki i funkcje, w tym lepsze analizowanie typu sterownika, stuby sieciowe i obsługę iOS (crrev.com/c/5009937). - Dodano brakujący znak
#include <string>dochrome_finder.hw celu zapewnienia zgodności z IWYU (crrev.com/c/4994605, błąd: 957519).
ChromeDriver 120
Nowe funkcje
- BiDi dodano obsługę poleceń
session.newisession.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.statusPureBiDi, 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.pdli 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_shelldo 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_responsibilityjako 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 traktujewindow.frameElementjako 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::Timena bardziej opisowe (np.FromDoubleT()naFromSecondsSinceUnixEpoch()) (crrev.com/c/4956111). - Przebudowano konstruktor
net::StringIOBufferi instancjeIOBuffer, 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::StrCatznakiem+w odpowiednich miejscach i użycie znakubase::AppendHexEncodedByte()(crrev.com/c/4963465, crrev.com/c/4977165). - W
//chrome*testach zmieniliśmy nazwęDIR_SOURCE_ROOTnaDIR_SRC_TEST_DATA_ROOT, w celu uniknięcia wątpliwości (crrev.com/c/4916045, błąd: 1264897). - Wyłączono niestabilne testy
PureBidiTestna 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
MapiSet; są one teraz prawidłowo serializowane jakoObject, a nieCollection, ponieważ nie mają właściwościlength(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ę
SigninnaLogin(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
~NOTFOUNDsymbolem^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
//urlkilka interfejsów API wskaźnika/długości interfejsemstd::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.htmlw przypadku testówwebdriver_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_pagezamiastother(crrev.com/c/4842093). - Zmieniliśmy nazwę docelowego kompilacji WPT
chrome_wptnachrome_wpt_tests, aby zachować spójność, i usunęliśmy zbędny celwebdriver_wpt_tests(crrev.com/c/4847474, Bug: 1474702). - Przeniesiono
run_py_tests.pyz wycofanej bibliotekioptparsedoargparse(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
debuggerAddressw 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_ptribase::raw_refna rzecz ich niekwalifikowanych formraw_ptriraw_refw 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.pyi 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 elementuclient_hints.hw celu zachowania zgodności z zasadami IWYU (crrev.com/c/4767547). - Przeniesiono typy podstawowe specyficzne dla Apple (
ScopedTypeRef,ScopedCFTypeRef,scoped_nsautorelease_pool) do przestrzeni nazwbase::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
- Komunikacja za pomocą potoków: zmieniliśmy domyślny tryb komunikacji między ChromeDriverem a Chrome z WebSockets na potoki (
--remote-debugging-in-pipei--remote-debugging-out-pipe) na wszystkich obsługiwanych platformach, w tym Windows (crrev.com/c/4634299, crrev.com/c/4628834, crrev.com/c/4635378, Bug: 3480). - BiDi zaktualizowano zależność BiDi Mapper (crrev.com/c/4670516, błąd: 4226).
Poprawki błędów
- Stabilność: naprawiono dostęp do wskaźnika zerowego, który powodował awarię ChromeDrivera, co z kolei skutkowało błędami
ConnectionRefusedpodczas testów (crrev.com/c/4675633, Bug: 1457101). - Nawigacja: rozwiązaliśmy problem, który powodował, że błędy
NoSuchExecutionContextiNoSuchWindoww 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 zuserAgentna 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
wptrunnerzamiast niestandardowegorun_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
ChromeLauncheri powiązanych klas, aby umożliwić przejście na potoki, zmniejszyć powiązanie z klasąDevToolsHttpClienti przenieść logikę WebSocket do dedykowanych gałęzi (crrev.com/c/4632801, crrev.com/c/4674345). - Zmieniliśmy nazwę mylącego pola
BrowserInfo.is_headlessnaBrowserInfo.is_headless_shell, w celu uniknięcia wątpliwości (crrev.com/c/4650452, błąd: 4358). - Zastąpiono różne wycofane metody
base::Valuenowoczesnymi odpowiednikamibase::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.hna rzecz bezpieczniejszych narzędzi do obsługi podstawowych ciągów znaków i wdrożyliśmy nowe funkcje dlabase::expected(crrev.com/c/4749459, crrev.com/c/4755226). - W
TestDriverzaimplementowano polecenia automatyzacjiget_fedcm_dialog_titleiselect_fedcm_accountw 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ść odDevToolsHttpClient, i ograniczono użycieSyncWebSocketFactoryiBrowserInfow 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
WaitForConditionasercjamiassertTrue, aby wyraźnie wskazywać, kiedy występują przekroczenia limitu czasu (crrev.com/c/4590211). - Oznaczono znane, niestabilne ostrzeżenia o zawieszaniu się
raw_ptrwlinux-reltestach 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
%sw 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
UnknownErrorzamiast standardowego błęduNoSuchElement(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.mobilemusi mieć wartość true, jeśli ciąguserAgentzawiera „Mobile” (crrev.com/c/4507142, błąd: 4243). - Emulacja urządzeń mobilnych: przeniesiono zastąpienia
DeviceMetrics, aby używać poleceniaEmulation.setDeviceMetricsOverrideCDP zamiast wycofanego odpowiednika w domeniePage(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ę
ConnectzDevToolsClientw 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::Dictzamiastbase::Value, i zastąpiono wycofane metody, takie jakFindStringKey(),SetKey()iSetByDottedPath()(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.hzamiast[w]ctype.hw 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()zweb_view.h(crrev.com/c/4518363, błąd: 3376). - Zastosowano automatyczne przekształcenie nazwy
base::raw_ptrnaraw_ptr, aby dostosować ją do preferencji przewodnika po stylu (crrev.com/c/4476651).
ChromeDriver 114
Nowe funkcje
- Klasyczna: przekazywanie informacji
MobileDevicedoMobileEmulationOverrideManagerw 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
DCHECKwDevToolsClientImpl::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
WebViewImpli rejestratora wydajności (crrev.com/c/4374824, crrev.com/c/4368179). - Przeniesiono bazę kodu, aby korzystać z nowego interfejsu
base::ValueAPI w wersji 2, zastępując wycofane metody, takie jakValue::SetPath(),Value::SetStringPath()ibase::ListValue(crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520). - Zastąpiono wszystkie wystąpienia
base::GUIDciągiembase::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
configzamiast wycofanego atrybutusrc(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>) dlastd::strlenwweb_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": truejest 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": truejest 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
NavigationTrackernie 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ą