Versions antérieures de Chrome
Pour les versions antérieures de Chrome, voici les versions de ChromeDriver compatibles.
Pour en savoir plus sur la sélection de la version appropriée de ChromeDriver, consultez la page Sélection de la version.
ChromeDriver 148
Correction de bugs
- Accès au DOM : correction d'un plantage qui se produisait lors de la simulation d'un clic sur un bouton à l'intérieur d'un iframe lui-même imbriqué dans une racine fantôme fermée. Le JavaScript utilisé précédemment pour trouver l'ID de l'élément de frame du propriétaire ne pouvait pas traverser les shadow roots fermées. La nouvelle implémentation utilise directement le format
f.X.d.Y.e.Zpour résoudre le frame (crrev.com/c/7594919, Bug: 469831357). - Sécurité : renforcement de la désinfection des arguments Chrome pour éviter une éventuelle faille impliquant l'injection d'arguments positionnels (crrev.com/c/7695604, bug 494464734).
- Tests : le délai avant expiration de
kImplicitWaita été augmenté pour les testsFindElement(s)WhileNavigatingdanscommands_unittestlors de l'exécution sous AddressSanitizer (ASAN). Le délai d'expiration par défaut de 3 s était insuffisant pour que la boucle de réessai consomme toutes les erreurs fictives sous la surcharge ASAN, ce qui entraînait une instabilité (crrev.com/c/7657276).
Modifications et refactorisations internes
- Normes C++ : remplacement des inclusions superflues de
base/functional/callback_forward.hdans les fichiers//chrome.cc, application de l'utilisation decallback.hlorsque les rappels sont réellement utilisés (crrev.com/c/7200285, Bug: 40318405). Déplacement delogging::LoggingSettingsdebase/logging.hvers son propre en-têtebase/logging/logging_settings.hpour améliorer l'efficacité de la compilation (crrev.com/c/7173024, relanding crrev.com/c/7160150 après la restauration crrev.com/c/7170750). Correction de diverses erreurs IWYU liées àbase/logging.h(crrev.com/c/7730403, Bug : 499476145). - Normes C++ : les vérifications de la carte redondante
count(key)suivies des recherches ont été remplacées par des accès à l'itérateurfind(key)plus efficaces (crrev.com/c/7705392, crrev.com/c/7693277, Bug: 452950815).ThreadDelegatea été injecté via le constructeurThreadpour améliorer l'encapsulation, et une optionRestartablea été ajoutée àThreadpour les cas où les threads doivent être redémarrés (crrev.com/c/7696887, Bug: 40881604). - Sécurité de la mémoire : conversion des macros
#pragma allow_unsafe_buffersà l'échelle du fichier en macrosUNSAFE_TODO()granulaires danschrome/(crrev.com/c/7132241, Bug: 409340989). Raccourcissement deIOBuffer->span().first()enIOBuffer->first()(crrev.com/c/7159119). - Dépendances : la dépendance
crossbencha été déployée, ce qui permet de corriger les problèmes de découverte des binaires ChromeDriver créés localement sur macOS et Android (crrev.com/c/7673978). - Tests : réactivation du schéma
moduledanschromedriver_py_testssuite aux corrections apportées à l'infrastructure de compilation et de test sous-jacente (crrev.com/c/7707960).
ChromeDriver 147
Correction de bugs
- Tests : ajout d'un test de régression hermétique pour vérifier que
ElementClickgère correctement les clics sur les iFrames d'origine croisée avec des éléments de superposition, en particulier dans les scénarios d'isolation de site. Cela permet de s'assurer que les clics ne sont pas redirigés par erreur vers le contenu intégré au lieu de la superposition visible (crrev.com/c/7261984, Bug: 42321834, Bug: 42322220).
Modifications et refactorisations internes
- Normes C++ : les modes et fonctions de décodage d'URL ont été renommés pour respecter le guide de style Google C++, en remplaçant
DecodeURLModeparDecodeUrlModeetDecodeURLEscapeSequences()parDecodeUrlEscapeSequences()(crrev.com/c/7593238). Ajout deurl::UrlEscapeDecoderpour simplifier l'utilisation du décodage d'URL dans l'ensemble du code (crrev.com/c/7610180). Suppression des inclusionsbuild/branding_buildflags.hsuperflues des fichiers//chrome(crrev.com/c/7595125, Bug: 40318405). Suppression de la logiqueBUILDFLAG(IS_FUCHSIA)de//chrome, sauf dans ChromeDriver (crrev.com/c/5485913, Bug: 41481724). - Sécurité de la mémoire (spanification) : résolution des marqueurs
UNSAFE_TODOdans les utilitaires ChromeDriver, en les migrant vers des implémentations sécurisées basées sur des spans (crrev.com/c/7562602, Bug : 435317390).
ChromeDriver 146
Correction de bugs
- Stabilité : correction d'un plantage de ChromeDriver qui pouvait se produire lors du traitement d'une commande si la fenêtre se fermait simultanément (par exemple, lors de l'attente de la fin d'une navigation). Le correctif acquiert un verrou sur l'objet
WebViewpour l'empêcher d'être supprimé prématurément (crrev.com/c/7257074, Bug: 468228355). - Sécurité : ajout d'une vérification de l'en-tête
Originpour les connexions WebSocket entrantes au serveur HTTP ChromeDriver, ce qui empêche le détournement potentiel d'origine croisée (crrev.com/c/7538400, Bug: 478783560). - Tests :
testWebviewDetactedDuringClicka été déplacé vers le filtre "flaky" et est ignoré dans toutes les exécutions, et pas seulement en mode sans affichage (crrev.com/c/7545378, Bug : 481485821).
Modifications et refactorisations internes
- Normes C++ : les noms
base::DictValueetbase::ListValueont été remplacés par leurs équivalents modernes (base::Value::Dictetbase::Value::List) dans//chrome(crrev.com/c/7515855, crrev.com/c/7514475, Bug: 478100525). Remplacement des utilisations debase::Contains()parstd::ranges::contains()(crrev.com/c/7461026, Bug: 470391351). Migration destd::setetstd::unordered_setversbase::fixed_flat_setle cas échéant (crrev.com/c/7521991, Bug : 473916362). Refactorisation des appelsbase::JSONReader::Readqui ne spécifiaient pas d'options d'analyse (crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Remplacement de différents appelsbase::JSONWriter::Write()parbase::WriteJson()(crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Nettoyage de l'ordre#include(crrev.com/c/7366868). Les références de bugs dans les commentaires ont été migrées pour utiliser les ID Buganizer au lieu des ID Monorail (crrev.com/c/7528268, Bug : 321899722). Les indicateurs de compilationIS_OZONE_*ont été renommésSUPPORTS_OZONE_*pour plus de clarté (crrev.com/c/7535923). - Sécurité de la mémoire (spanification) : l'utilisation de pointeurs non sécurisés a été remplacée par
base::spandansbase/strings/utf_string_conversion_utils.cc(crrev.com/c/7496410, Bug: 439964610, Bug: 40284755). Plus d'utilisations debase::Filedans les tests//chrome(crrev.com/c/7489592, Bug : 435317390). Remplacement dememsetpar l'initialisation agrégée dans//chrome(crrev.com/c/6875520, Bug: 435317390). Conversion des#pragma allow_unsafe_buffersrestants en marqueursUNSAFE_TODO(crrev.com/c/7132241, Bug: 409340989). - Préchargement DSE : la fonctionnalité
DSEPrewarma été activée dansfieldtrial_testing_config.jsonpour macOS et Windows, car l'instabilité des tests ChromeDriver associés a été résolue (crrev.com/c/7489009, relanding crrev.com/c/7002185 après la restauration crrev.com/c/7452344). (Remarque : Cette relance a ensuite été à nouveau annulée en raison de l'augmentation des durées d'exécution des tests sur Windows (crrev.com/c/7517985, Bug : 478888140)). - Diagnostics : ajout du suivi de la position de l'appelant aux événements de trace
WaitableEventetConditionVariablepour une meilleure capacité de débogage (crrev.com/c/7487755, Bug : 476408124).
ChromeDriver 145
Nouvelles fonctionnalités
- Tests : mise à jour du framework de test
run_py_tests.pypour accepter les tests de chaînes déterministes de différentes longueurs (par exemple, 53, 101 et 501 caractères) ciblant les élémentsinput,textareaetcontenteditable. Cela permet de couvrir la régression et de s'assurer qu'aucun caractère n'est supprimé lors des longues opérationssend_keys(crrev.com/c/7221410, Bug: 428116078). - Tests : ajout d'un test spécifique pour l'élément HTML
<selectlist>(crrev.com/c/7420729, Bug : 342889200).
Correction de bugs
- Captures d'écran : l'échelle des captures d'écran des éléments a été rétablie, car la spécification WebDriver ne prescrit pas de mise à l'échelle et elle était incohérente avec les autres fonctions de capture d'écran (crrev.com/c/7409603, Bug: 42323022).
- Tests : correction des échecs dans
testClientHintsDeviceNameIPhoneXettestClientHintsDeviceNameIPaden mettant à jour les attentes des tests ChromeDriver pour qu'elles correspondent aux valeurs correctes récentes (pour les champs "platform", "platformVersion", "model" et "mobile") introduites dans le frontend des outils de développement (crrev.com/c/7408699, Bug : 474179501).
Modifications et refactorisations internes
- Normes C++ : migration de diverses utilisations de
base::Contains()versstd::ranges::contains()dans//chrome(crrev.com/c/7411011, Bug : 470391351), y compris les corrections de mise en forme nécessaires (crrev.com/c/7247217). Les paramètres de chaîne ont été refactorisés enstd::string_viewpour éviter les allocations de chaîne inutiles lors de l'utilisation desubstr()(crrev.com/c/7350716). Suppression des inclusions<map>superflues des en-têtes//chrome(crrev.com/c/7225838, Bug: 40318405). Correction de l'ordre des inclusions dans certains fichiers (crrev.com/c/7366868). Remplacement des anciens rappelsBodyAsStringCallbackDeprecateddans les utilisations deSimpleURLLoaderparBodyAsStringCallback, qui utilisestd::optionalau lieu destd::unique_ptr(crrev.com/c/7210000, Bug : 40258809). - Tests : réintégration de la configuration de l'essai sur le terrain
InfobarPrioritization, y compris des correctifs pour éviter les plantages dans les tests du navigateur ChromeDriver lors de la gestion des info-bulles en attente qui n'ont pas été ajoutées à la hiérarchie des vues (crrev.com/c/7223590, Bug : 447176374). Réactivation du filtrage par pays et par langue pour la fonctionnalité Glic, qui avait été précédemment annulée en raison d'échecs de tests sans rapport (crrev.com/c/7245749, réactivation de crrev.com/c/7148759 après l'annulation crrev.com/c/7233767, Bug: 454431875).
ChromeDriver 144
Nouvelles fonctionnalités
- Autorisations : la commande
SetPermissiona été mise à jour pour respecter la dernière spécification W3C, en utilisant l'URL du frame actuel (origine intégrée) en plus de l'origine de premier niveau. Cela configure correctement les autorisations telles questorage-accessqui s'appuient sur le contexte intégré (crrev.com/c/7106801, relanding crrev.com/c/7093216 après la restauration crrev.com/c/7104484, Bug: 384959114). - Tests : ajout de
testMetadata(y compris le nom du test) à la charge utile d'importation des tests ChromeDriver pour prendre en charge l'approbateur de fiabilité lors de l'utilisation d'ID de test structurés (crrev.com/c/7124354, Bug: 456432041).
Correction de bugs
- Cycle de vie cible : correction d'un bug qui entraînait le blocage de ChromeDriver si un frame parent était détaché alors qu'un frame enfant attendait une réponse à une commande. ChromeDriver détache désormais explicitement et de manière transitive les frames descendants lorsqu'un
WebViewImplparent est verrouillé et marqué comme détaché lors du traitement des commandes (crrev.com/c/7080912, Bug: 438436830). - Gestion des fenêtres : désactivation de la mise en arrière-plan des fenêtres masquées, spécifiquement pour les sessions ChromeDriver. Cela résout les problèmes liés à WebDriver BiDi, où les tests pouvaient échouer si le navigateur considérait à tort qu'une fenêtre était masquée et la limitait (crrev.com/c/7128058, Bug : 458027819).
Modifications et refactorisations internes
- Normes C++ : suppression des inclusions superflues de
base/functional/callback_forward.hdans//chromefichiers.cc, application de l'utilisation decallback.hlorsque des rappels sont réellement utilisés (crrev.com/c/7200285, Bug: 40318405). Déplacement delogging::LoggingSettingsdebase/logging.hvers son propre en-têtebase/logging/logging_settings.hpour améliorer l'efficacité de la compilation (crrev.com/c/7173024, relanding crrev.com/c/7160150 après la restauration crrev.com/c/7170750). Migration des utilisations debase::HexEncodevers la version plus récentebase::HexEncodeLower(crrev.com/c/7103100, Bug : 456472080). - Sécurité de la mémoire (spanification) : migration de
WriteToPipeetWriteToPipeNoBestEffortdans les tests unitairesPipeBuilderetPipeConnectionpour accepterbase::span, corrigeant l'utilisation non sécurisée du tampon (crrev.com/c/7090293, Bug : 455758227). Conversion des macros#pragma allow_unsafe_buffersà l'échelle du fichier en macrosUNSAFE_TODO()granulaires danschrome/(crrev.com/c/7132241, Bug: 409340989). Raccourcissement deIOBuffer->span().first()enIOBuffer->first()(crrev.com/c/7159119).
ChromeDriver 143
Correction de bugs
- Stabilité : correction d'un plantage de type "utilisation après libération" (UAF) dans
OverrideNetworkConditions. Le pointeur brut enregistré pour une application ultérieure était libéré entre les appels consécutifs. Il est désormais géré correctement (crrev.com/c/7047422, Bug : 42323833). - Tests : correction des tests tactiles Android ChromeDriver instables en utilisant l'API
WaitForConditionpour une synchronisation plus fiable (crrev.com/c/6978928, Bug : 42321861). - Pré-échauffement DSE : la fonctionnalité
Prewarma été désactivée par défaut dans ChromeDriver via le commutateur--disable-features=Prewarm. Cela empêche les pages pré-échauffées d'interférer avec l'exécution des tests et la découverte des cibles (crrev.com/c/7007072, Bug : 431928370).
Modifications et refactorisations internes
- Normes C++ : remplacement de
ref_counted.hparscoped_refptr.hdans les en-têtes//chromelorsque seul le pointeur intelligent est utilisé, ce qui améliore l'efficacité de la compilation (crrev.com/c/7080753, Bug 40245294). Migration des accesseursGURLvers leurs variantesGet*(par exemple,GetSpec()au lieu despec()) pour indiquer clairement l'allocation de chaînes, ce qui dissuade les pénalités de performances accidentelles (crrev.com/c/7002119, Bug: 448174617). - Tests : suppression des modèles de vérification redondants dans
devtools_client_impl_unittest.ccà l'aide deADD_FAILURE()(crrev.com/c/6998270). Ajout d'un test de régression pourcrbug.com/413382905(crrev.com/c/6879417).
ChromeDriver 142
Nouvelles fonctionnalités
- Diagnostics : ajout de l'état
TERMINATION_STATUS_EVICTED_FOR_MEMORYpour différencier les processus arrêtés de manière proactive par le navigateur (pour économiser de la mémoire) de ceux qui ont planté en raison d'erreurs de mémoire insuffisante (OOM). Actuellement, ce comportement est identique à celui d'un plantage OOM (affichage d'un onglet triste), mais il prépare le terrain pour une gestion distincte à l'avenir (crrev.com/c/6991933, Bug: 394092280). - Diagnostics : ajout de la fonctionnalité
goog:processIDà la réponse WebDriver, qui renvoie l'ID du processus principal du navigateur pour ordinateur. ChromeDriver est ainsi aligné surmoz:processIDde Firefox et facilite le test des API d'accessibilité de la plate-forme (crrev.com/c/5825307, Bug: 438884256). - Tests : ajout de la compatibilité avec l'importation d'ID de test structurés dans ResultSink pour les tests d'intégration Python de ChromeDriver (crrev.com/c/6916708, Bug : 418015486).
Correction de bugs
- Diagnostics : le comportement de ChromeDriver modifié lors d'une sortie normale de Chrome ne génère plus de message d'erreur générique déroutant lié à l'utilisation de
user-data-dir. Il indique désormais explicitement que l'instance a été arrêtée et redirige l'utilisateur vers les journaux détaillés pour l'erreur spécifique générée par Chrome (crrev.com/c/6977507, Bug : 42323434). - Initialisation : la structure d'initialisation de ChromeDriver a été mise à jour pour rester compatible avec les modifications apportées à Selenium WebDriver v4.16.0 (crrev.com/c/6630600).
- Android : correction de
CheckAppInstalledsur les anciennes versions d'Android (antérieures à Android 11) où l'indicateur--user curn'est pas pris en charge par le gestionnaire de paquets (crrev.com/c/6785949, Bug : 433885051). - Tests : correction d'un bug qui entraînait le remplacement incorrect des commutateurs de fonctionnalités par défaut dans ChromeDriver.
IgnoreDuplicateNavsLa fonctionnalité a été désactivée pour les sessions ChromeDriver, et la logiqueSwitches::SetFromSwitchesa été corrigée (crrev.com/c/6949166, Bug: 445332809).
Modifications et refactorisations internes
- Normes C++ : remplacement de plusieurs appels
base::JSONWriter::Write()obsolètes parbase::WriteJson(), en conservant le comportement de renvoi d'une chaîne vide en cas d'échec lorsque la valeur renvoyée n'a pas été vérifiée (crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). L'activation explicite est désormais requise pour les options d'analyse JSON non conformes (par exemple, l'autorisation des commentaires) dansbase::JSONReader::Readetbase::JSONReader::ReadAndReturnValueWithError(crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Suppression des pragmas#pragma allow_unsafe_buffersà l'échelle du fichier suite aux efforts de spanification manuelle (crrev.com/c/6778035, Bug: 409340989). Utilisations nettoyées de la macroLazyInstancequi fuit (crrev.com/c/6781377, Bug: 432815283). Inclusion des en-têtes manquants pourhttp_response_headers.hvia IWYU (crrev.com/c/6894196, Bug: 40216326). - Sécurité de la mémoire (spanification) : de nombreux pointeurs ont été automatiquement spanifiés dans le répertoire
chrome/pour les versions Linux, avec ajout deCHECKnon fatales lorsque les paramètres de taille étaient jugés redondants (crrev.com/c/6734592, Bug : 431824299). - Tests : temporairement désactivé
testDoesntCrashOnClosingBrowserFromAsyncScriptsur macOS (crrev.com/c/6995358, Bug : 446461733). Correction de fautes de frappe dans les noms des méthodes de test impliquant des certificats (crrev.com/c/6950683). Fichiers GN au format automatique//chrome/test(crrev.com/c/6789277, Bug: 40760278). - FedCM : ajout d'une fonction
ShouldShowAccountsPassiveDialogàIdentityDialogControllerpour vérifier de manière synchrone si une boîte de dialogue de comptes doit être affichée, ce qui corrige un plantage lié aux vérifications asynchrones et à l'instrumentation des outils de développement (crrev.com/c/6780413, Bug : 425801332). - Préchargement DSE : ajout de
Page.setPrewarmingAllowedau protocole DevTools comme solution à court terme pour activer ou désactiver manuellement le préchargement, correction des tests associés pour s'assurer qu'ils interagissent correctement avec la page principale (crrev.com/c/6847287, Bug : 431928370). Activation de la fonctionnalitéDSEPrewarmdansfieldtrial_testing_config.jsonpour macOS et Windows après résolution des problèmes de fiabilité (crrev.com/c/6951835, Bug: 431928370, Bug: 435621391). (Remarque : La commande CDP et l'activation de l'essai sur le terrain ont toutes deux été annulées, car elles entraînaient des modifications incompatibles pour les utilisateurs de WebDriver en exposant des cibles inattendues et en provoquant d'autres problèmes en aval (crrev.com/c/6966133, crrev.com/c/6966161, Bug : 445883308)). - Nettoyage : suppression des références restantes au projet
WebLayernon compatible dans le code Android (crrev.com/c/6792520, Bug : 40272607).
ChromeDriver 141
Nouvelles fonctionnalités
- Test : ajout de la prise en charge de l'indicateur
--enable-per-test-tracingàrun_wpt_tests.py, correspondant au comportement derun_web_tests.py. Cette commande récupère les événements de trace JSON à partir d'un tampon ChromeDriver interne et les enregistre dans le répertoire des résultats des tests (crrev.com/c/6820247, Bug : 434017035).
Correction de bugs
- Diagnostic : empêche ChromeDriver d'imprimer sa propre trace de la pile interne lors du renvoi d'une erreur
kTabCrashed. Cela évite de dérouter les utilisateurs, tout en garantissant que la trace de la pile de plantage du moteur de rendu reste dans les journaux (crrev.com/c/6841669, Bug: 395131239).
Modifications et refactorisations internes
- Normes C++ : remplacement des appels
memsetpotentiellement dangereux par l'initialisation d'agrégats C++ standard (instance = {}) danschrome/pour éviter de contourner les constructeurs et assurer la sécurité de la mémoire (crrev.com/c/6875520, Bug : 435317390). Ajout des directives#includemanquantes pour//base/time/time.hvia IWYU (crrev.com/c/6832689, Bug: 40216326). Réécriture des pragmas de tampon non sécurisé forcé (crrev.com/c/6828538). - Tests : ajout d'un test de régression pour
crbug.com/413382905(crrev.com/c/6879417). - Transitions d'affichage : réintégration du correctif des transitions d'affichage, qui met à jour le travail effectué avant la résolution de la promesse terminée, après qu'une précédente annulation spéculative liée à des échecs de tests ChromeDriver s'est avérée incorrecte (crrev.com/c/6846765, réintégration de crrev.com/c/6806850 après l'annulation crrev.com/c/6808537).
ChromeDriver 140
Correction de bugs
- Sélection de la cible : correction d'un problème qui pouvait entraîner une course entre la fenêtre des outils de développement et la page principale pour être sélectionnée comme fenêtre principale lorsque Chrome était lancé avec
--auto-open-devtools-for-tabs. ChromeDriver exclut désormais explicitement les cibles préfixées pardevtools://lors de la détermination de la fenêtre principale (crrev.com/c/6769505, Bug: 427908560). - Sélection de la cible : empêche ChromeDriver de calculer de manière incorrecte le point central visible des éléments en ignorant tout écrêtage
overflow:hiddenimposé par les ancêtres. Cela permet d'aligner le calcul sur la spécification WebDriver et d'autres scénariosPerformActions(crrev.com/c/6735230, Bug: 42322257). - Android : correction de la fonction
CheckAppInstalledsur les anciennes versions d'Android (antérieures à Android 11) où l'indicateur--user curpour le gestionnaire de packages n'est pas pris en charge (crrev.com/c/6785949, Bug : 433885051). - Tests : correction de l'instabilité dans la suite de tests
chromedriver_py_testscausée par la fonctionnalitéDSEPrewarm. ChromeDriver désactive désormais le déclencheur de préchauffage lorsqu'un client CDP est associé pour éviter un nombre de cibles inattendu lors des tests (crrev.com/c/6764274, Bug : 423465927, Bug : 431928370). - Tests : l'ajout de la fonction
ShouldShowAccountsPassiveDialogàIdentityDialogController(qui fait partie de FedCM) a été annulé, car il avait entraîné une régression (crrev.com/c/6780413, Bug : 425801332).
Modifications et refactorisations internes
- Normes C++ : ajout des
std::vector#includemanquants via Include What You Use (IWYU) (crrev.com/c/6652818, bug 40216326). Suppression des inclusions superflues degurl.h(crrev.com/c/6578272) et<queue>(crrev.com/c/6570349, Bug: 40318405) dans les en-têtes//chrome. Correction deIWYUpourNOTIMPLEMENTED()dans//chrome(crrev.com/c/6655452, bug 41493641). - Sécurité de la mémoire (spanification) : exécution de l'outil de spanification de pointeur automatisé sur les versions Linux, mise à jour du code pour utiliser des spans lorsque les tailles sont connues (crrev.com/c/6734592, Bug : 431824299). Suppression des pragmas
#pragma allow_unsafe_buffersà l'échelle du fichier danschrome/une fois la migration terminée (crrev.com/c/6778035, Bug : 409340989). Exclusion des cibleschrome/testde l'avertissement-Wexit-time-destructorspour permettre l'activation de l'avertissement au niveau mondial (crrev.com/c/6736532, Bug : 40031409, Bug : 430332953). Nettoyage des utilisations deLazyInstanceavec fuite sous//chrome(crrev.com/c/6781377, Bug: 432815283). - Nettoyage : suppression de l'indicateur CLI
--debug-bidi-mapper, car la transition vers l'exécution du BiDi Mapper dans une cible masquée est terminée et stable (crrev.com/c/6672011, Bug : 408992812). - Nettoyage : suppression des références restantes au projet
WebLayernon compatible (crrev.com/c/6792520, Bug : 40272607). Mise en forme automatique des fichiers GN//chrome/testpour raccourcir les références cibles (crrev.com/c/6789277, Bug : 40760278). - Tests : ajout d'un test d'acceptation pour vérifier la correction du problème
PerformActionspointerMove(crrev.com/c/6648646, Bug : 42322257). - Tests : la section de création de pilotes parallèles du test
testBrowserWithUsedUserDataDira été commentée (et un bug de suivi a été signalé), car elle entraînait des échecs sur macOS liés au verrouillage exclusif lors de l'utilisation dechrome-headless-shell(crrev.com/c/6470455, Bug : 411407649, Bug : 380903149). - Tests : mise à jour du wrapper
run_cwt_chromedriver.pypour iOS afin de prendre en charge l'argument--platform-type(crrev.com/c/6771517, Bug : 427548014). - PROPRIÉTAIRES : suppression de
nvitkovdu fichierchrome/test/chromedriver/OWNERS(crrev.com/c/6771413).
ChromeDriver 139
Correction de bugs
- Structure d'initialisation : la structure d'initialisation de ChromeDriver a été mise à jour pour rester compatible avec les mises à jour de Selenium WebDriver v4.16.0 (crrev.com/c/6630600).
- Analyse des arguments : plusieurs arguments
--js-flagsont été fusionnés (comme pour--enable-features) au lieu de ne prendre en compte que le dernier fourni. Cela améliore la facilité d'utilisation lors de la transmission d'indicateurs V8 complexes (crrev.com/c/6612042, Bug: 421941798).
Modifications et refactorisations internes
- Sécurité de la mémoire (spanification) : remplacement des utilisations obsolètes de
base::MakeStringPiece()parstd::string_viewdans//chrome/test(crrev.com/c/6628089, Bug : 422940464). Inclusion debase/strings/string_view_util.hlorsquebase::as_string_view()est utilisé, en préparation des futures migrations d'espaces de noms (crrev.com/c/6625024, Bug: 423048781). - Normes C++ : amélioration de la conformité avec Include What You Use (IWYU) dans
//chromeen incluant explicitement<vector>(crrev.com/c/6652818),base/notimplemented.h(et en supprimantbase/notreached.hlorsqu'il n'est pas utilisé) (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) et en supprimant les inclusions superflues debase/debug/stack_trace.h(crrev.com/c/6622838). - Tests : l'option
--driver-logginga été transférée àrun_wpt_tests.py, ce qui permet au script de vider ChromeDriver et le navigateurstderrmême à des niveaux de verbosité inférieurs (crrev.com/c/6608138, Bug : 421262910). - Tests : réactivation des tests d'intégration ChromeDriver précédemment désactivés : tests de capture d'écran (
testTakeElementScreenshot*) (crrev.com/c/6598797, bug 42321815), tests de fermeture de fenêtre via JavaScript (testCloseWindowUsingJavascript*) (crrev.com/c/6598978, bug 42321150) et tests de taille de fenêtreheadless-shell(crrev.com/c/6621336, bug 42323661). - Tests : correction de
run_wpt_tests.py --stablepour identifier et utiliser correctement la version stable actuelle de Clank (Android) en analysant l'APK, et mise à jour du script pour télécharger la version ChromeDriver correspondante à partir de Chrome for Testing (CfT) dans un répertoire temporaire au lieu de polluer l'extraction (crrev.com/c/6635694, Bug : 402548382). - Infrastructure de compilation : suppression d'une dépendance de compilation inutile sur
write_build_config.pyen interdisant aux ciblesandroid_resources()d'avoir des fichiers manifestes, car la fusion des fichiers manifestes et la dénomination des packages R.java sont désormais gérées par des attributs spécialisés (crrev.com/c/6625266, Bug: 413331591). - FedCM : correction d'un flag de fonctionnalité de configuration Finch lié à FedCM (crrev.com/c/6614137, bug : 421959289).
ChromeDriver 138
Nouvelles fonctionnalités
- Gestion des fonctionnalités d'affichage : le comportement de ChromeDriver pour les segments de fenêtre d'affichage a été mis à jour pour correspondre à une résolution récente du CSS Working Group. Il renvoie désormais systématiquement un tableau avec un seul segment lorsqu'un appareil pliable est utilisé à plat ou pour tous les appareils non pliables. Cela correspond au comportement des requêtes média et atténue les risques d'empreinte numérique (crrev.com/c/6469455, Bug: 414430842).
- Préférences et état local (Android) : ajout de la compatibilité avec les fonctionnalités
localStateetprefslors de l'exécution de ChromeDriver sur des appareils Android. Cette méthode repose sur ADB et nécessite un indicateuruser-data-dirpersonnalisé. Actuellement, elle initialise l'état avec des modèles par défaut (crrev.com/c/6397155, Bug 406427226).
Correction de bugs
- Stabilité : correction d'un plantage de ChromeDriver sur macOS lorsqu'un utilisateur fermait la boîte de dialogue de première utilisation (FRE) à l'aide du bouton "Continuer". Le plantage résultait du remplacement d'un état d'erreur
kTargetDetachedet de la tentative d'accès à unWebViewnon valide (crrev.com/c/6538867, Bug: 410599467). - Tests de performances : correction du programme d'exécution de tests
crossbenchsur les robots pinpoint Windows qui tentaient à tort de localiser le binaire ChromeDriver à l'aide d'un chemin../Release_x64obsolète lorsque--browser=release_x64était transmis, ce qui entraînait le téléchargement d'un ancien binaire au lieu d'utiliser la version locale (crrev.com/c/6502134).
Modifications et refactorisations internes
- Sécurité de la mémoire (spanification) : remplacement des pointeurs non vérifiés dans
WebSocket::OnReadDuringHandshakeetWebSocket::OnReadDuringOpenparbase::span, ce qui résout les avertissementsunsafe-buffer-usage(crrev.com/c/6557346, Bug : 354307328). Suppression des pragmas#pragma allow_unsafe_buffersinutiles danschrome/test/chromedriverqui n'étaient plus nécessaires après d'autres migrations (crrev.com/c/6503154, Bug: 414858406). - Normes C++ : suppression des directives
#include "url/gurl.h"et#include <queue>superflues dans les en-têteschrome/, ajout de déclarations anticipées le cas échéant pour améliorer les temps de compilation (crrev.com/c/6578272, crrev.com/c/6570349, Bug : 40318405). - Migration de l'API : migration de
RSAPrivateKeyverscrypto::PrivateKeyet deSHA256HashStringverscrypto::Sha256, ce qui permet de supprimer un cas de gestion des exceptions obsolète, car les nouvelles API de génération de clés sont infaillibles (crrev.com/c/6490294, Bug : 372283556). - Tests : ajout de l'attribut
OwnContributionEstimateaux commandes d'automatisation de l'API Compute Pressure (implémentations CDP et testdriver) (crrev.com/c/6373001, Bug : 402033762). - Tests : correction des tests d'intégration vérifiant
ClearDisplayFeaturessur les robots d'intégration continue (CFT) en simplifiant les assertions pour vérifier que les segments de la fenêtre d'affichage sont rétablis à la taille par défaut (crrev.com/c/6535067, Bug : 417195296). - Tests : augmentation des délais d'attente pour les tests WebDriver Protected Audience afin de résoudre les problèmes de fiabilité sur les robots CI plus lents (crrev.com/c/6494277).
ChromeDriver 137
Nouvelles fonctionnalités
- Gestion des fonctionnalités d'affichage : ajout de commandes ChromeDriver pour émuler et effacer les fonctionnalités d'affichage, en implémentant les exigences d'automatisation pour les API Viewport Segments (CSS et JS). Cela permet aux développeurs de tester par programmation les scénarios de pli ou de charnière sur les appareils à double écran ou pliables (crrev.com/c/6368674, Bug: 40137084).
- BiDi : ChromeDriver a été mis à jour pour exécuter le mappeur BiDi dans une cible masquée par défaut. Cela empêche la page
data:,du mappeur d'interférer avec l'exécution et la visibilité des tests. Pour déboguer le mappeur, les clients peuvent transmettre l'indicateur--debug-bidi-mapperpour l'exécuter dans un onglet visible (crrev.com/c/6441064, relanding crrev.com/c/6433672 après la restauration crrev.com/c/6439633, Bug: 402339952).
Correction de bugs
- BiDi : empêche ChromeDriver de fermer incorrectement l'intégralité de la session de navigateur lors du traitement des commandes BiDi (comme
browsingContext.close) s'il perd la trace des cibles créées par d'autres sessions CDP ou BiDi. Il synchronise désormais explicitement les onglets de premier niveau avant de décider de fermer le navigateur (crrev.com/c/6440293, Bug : 42323838). - BiDi : aligné sur la spécification WebDriver BiDi en amont, en s'assurant que ChromeDriver supprime la fonctionnalité
goog:channelsi elle est transmise sous forme de chaîne vide, en la traitant de la même manière qu'un canal manquant (crrev.com/c/6438865, Bug : 409282307). - Entrée : correction d'un problème où les événements tactiles et de pointeur échouaient ou se comportaient de manière incorrecte en mettant à jour ChromeDriver pour prendre en charge les coordonnées x et y fractionnaires (à virgule flottante) dans les commandes de déplacement du pointeur (crrev.com/c/6440834, Bug: 409684333).
- Sélection de la cible : empêche les iFrames PDF hors processus (OOPIF) ouverts dans les vues Invité (lorsque la fonctionnalité
PdfOopifest désactivée) de se déverser dans la liste des cibles de premier niveau. La logique de filtrage a été étendue pour exclure correctement ces cibles préfixéeschrome-extension://(crrev.com/c/6383500, Bug: 396611138).
Modifications et refactorisations internes
- Normes C++ : réintégration de la modification visant à utiliser
std::string_viewpour les noms de fichiers dansLogMessageet les événements de trace, ce qui résout les problèmes liés à la gestion des chaînes à terminaison nulle qui avaient entraîné les précédentes annulations (crrev.com/c/6430129, réintégration de crrev.com/c/6395097, réintégration de crrev.com/c/6387020 après l'annulation crrev.com/c/6383699). - Normes C++ : les appels
Environment::GetVarmodernisés sur//chromeutilisent l'API de retourstd::optionalau lieu des paramètres de sortie (crrev.com/c/6417343, Bug : 400758498). - Normes C++ : les helpers de gestion spécifiques à Windows ont été refactorisés de
win_util.hdans un en-têtewindows_handle_util.hdédié pour éviter les problèmes de dépendance circulaire (crrev.com/c/6418805, Bug : 406023316). - Tests : ajout d'un gestionnaire de domaine
Browserspécifique à Android et implémentation de l'APIBrowser.getWindowForTargetpour prendre en charge les tests de création de fenêtres Android (crrev.com/c/6427605, Bug : 404932444). - Tests : correction de l'instabilité des tests macOS causée par le temps d'initialisation trop long des extensions (crrev.com/c/6423229, bug 407804497).
- Tests : la création parallèle de
user-data-dirdanstestBrowserWithUsedUserDataDira été temporairement désactivée lors de l'exécution surchrome-headless-shell, car elle était en conflit avec le verrouillage exclusif sur macOS (crrev.com/c/6470455, Bug : 411407649, Bug : 380903149). - Extensions : mise à jour des tests Chrome pour qu'ils soient réussis lorsque l'essai
ExtensionManifestV2Unsupportedest activé. Il s'agit d'une étape fondamentale, mais l'essai lui-même reste désactivé en attendant les mises à jour dans d'autres dépôts (crrev.com/c/6415997, Bug: 367395349). (Remarque : Une tentative précédente d'activer cet essai via la configuration a été annulée crrev.com/c/6397497, annulant crrev.com/c/6358257). - Dépendances : déploiement manuel de la dépendance
catapultet mise à jour des fichierspydepset des référencesdevil_utilassociés (crrev.com/c/6480814, crrev.com/c/6466865, relanding crrev.com/c/6406098 après l'annulation crrev.com/c/6448910, Bug: 397459590).
ChromeDriver 136
Nouvelles fonctionnalités
- Cycle de vie du navigateur : ajout d'une fonctionnalité spécifique à Chrome
quitGracefullyqui oblige ChromeDriver à tenter d'arrêter le navigateur de manière fluide (à l'aide deBrowser.closeou SIGTERM) au lieu de la valeur par défautSIGKILL. Cela donne aux débogueurs commerrle temps de vider leurs enregistrements avant la fin du processus (crrev.com/c/6322538, relanding crrev.com/c/6269180 après une brève restauration crrev.com/c/6320536, Bug: 339644807). - Tests : l'argument
run_wpt_tests.py --wrappera été raccordé en générant un script wrapper temporaire qui préfixe le binaire du navigateur avec le débogueur (par exemple,rr) et ses arguments. Cela permet de contourner l'incapacité de ChromeDriver à remplacer directement le binaire lorsque lesargssont traités comme des commutateurs (crrev.com/c/6271108, Bug: 339644807). - Test : la traduction est activée par préférence dans
TranslateEnabledTestpour prendre en charge un environnement de test où ChromeDriver gère le processus du navigateur et contourne la nouvelle restriction--remote-debugging-portlorsque--user-data-direst implicite (crrev.com/c/6354089, Bug : 327797500). - DevTools : ajout de la compatibilité avec la fonctionnalité multi-instance des outils de développement pour ouvrir un nouvel onglet dans une autre fenêtre sur Android (crrev.com/c/6352169, Bug : 401269942, Bug : 382183406).
Correction de bugs
- Sélection de la cible : correction d'un problème qui empêchait le filtrage des iFrames (OOPIF) PDF ouverts dans les vues Invité à partir de la liste des cibles de premier niveau lorsque la fonctionnalité
PdfOopifétait désactivée. Le filtre a été étendu pour inclure le préfixechrome-extension, ce qui corrige le bug et inclut la couverture pour les extensions Chrome MV3 créant des onglets (crrev.com/c/6383500, Bug: 396611138). - Sélection de la cible : correction d'une régression qui entraînait l'échec de la commande
getWindowHandles()avec l'étatconnection refusedlors du ciblage des applications Chrome packagées (crrev.com/c/6317161, bug 396622746).
Modifications et refactorisations internes
- Normes C++ : rétablissement de la modification qui utilise
std::string_viewpour les noms de fichiers dansLogMessageet les événements de trace, ce qui améliore la compatibilité avec les structures de journalisation Rust qui ne garantissent pas les chaînes terminées par un caractère nul (crrev.com/c/6387020, rétablissement de crrev.com/c/5765705 après l'annulation crrev.com/c/6383699 et une autre annulation crrev.com/c/6395097). - Normes C++ : les appels
base::Value::Clone()redondants ont été remplacés pour optimiser les performances (crrev.com/c/6361818). Suppression d'avertissements-Wunsafe-buffers-in-libc-callssupplémentaires dans les fichiers spécifiques à Windows pour nettoyer la sortie de compilation (crrev.com/c/6369920, Bug: 390223051). - Extensions : l'ajout de l'entrée
fieldtrial_testing_config.jsonpour la phaseExtensionManifestV2Unsupporteda été annulé en raison d'un problème (crrev.com/c/6397497, annulation de crrev.com/c/6358257, Bug: 367395349, Bug: 406523920). - Documentation : amélioration de la documentation sur les tests ChromeDriver spécifiques à Android (crrev.com/c/6354040).
ChromeDriver 135
Nouvelles fonctionnalités
- BiDi : le mappeur BiDi a été mis à jour pour hériter des autorisations ChromeDriver lorsque
--enable-unsafe-extension-debuggingest spécifié. Cela permet aux clients WebDriver BiDi de tester efficacement les extensions qui nécessitent des autorisations généralement détenues par le client WebDriver (crrev.com/c/6288627, Bug 393500934).
Correction de bugs
- Tests : réactivation et mise à jour des attentes pour plusieurs tests WDSpec qui étaient auparavant marqués comme ayant échoué. Cela restaure la couverture de conformité des spécifications pour les tests réussis (crrev.com/c/6310420).
Modifications et refactorisations internes
- Nettoyage : toutes les traces de Lacros (y compris
IS_CHROMEOS_LACROSet les données de test associées) ont été supprimées dechrome/test/, car Lacros est abandonné etIS_CHROMEOSest désormais la norme (crrev.com/c/6284446, bug 354842935). - Nettoyage : suppression de toutes les traces de l'utilitaire
md5sumaprès son remplacement pardevil_util, nettoyage des anciennes dépendances de compilation (crrev.com/c/6309939, Bug: 397452007). - Normes C++ : l'espace de noms
chrome::a été supprimé deResultCodeetIsNormalResultCode(), qui ont été déplacés vers l'espace de noms global. Les importations de démarrage ChromeOS obsolètes ont également été supprimées (crrev.com/c/6196899, Bug: 41050580). - Sécurité de la mémoire : simplification d'un appel
std::lower_bounddans ChromeDriver en utilisantstd::ranges::lower_bound(crrev.com/c/6223172, Bug : 392116519). Suppression des avertissementsunsafe_libc_callpour les fichiers non conformes identifiés initialement en vue de l'application future (crrev.com/c/6187925, Bug : 390223051). Marqué la valeur de retour destd::to_arraycommeconstexprpour améliorer la sécurité et l'évaluation au moment de la compilation (crrev.com/c/6298909).
ChromeDriver 134
Nouvelles fonctionnalités
- Mesures d'atténuation du suivi des rebonds (DIPS) : réintégration de la compatibilité de ChromeDriver pour les mesures d'atténuation du suivi des rebonds, à l'aide de la commande
RunBounceTrackingMitigations. Le test d'intégration a été restructuré pour utiliser des pages distinctes, ce qui permet de s'assurer que les rebonds avec état sont correctement enregistrés avant l'exécution de la commande. Cette fonctionnalité est compatible avec la spécificationnav-tracking-mitigationset est implémentée dans//chrome(crrev.com/c/4935955, Bug: 1474656). (Remarque : Ajouté à l'origine dans crrev.com/c/4873672, puis rétabli). - BiDi : ChromeDriver a été mis à jour pour utiliser les propriétés d'extension WebDriver BiDi standards avec le préfixe
goog:, conformément aux modifications apportées en amont àchromium-bidi. L'ancienne propriétéchanneln'est plus autorisée (crrev.com/c/6179410). - Windows : ajout d'une ressource de version au binaire
chromedriver.exesur Windows (crrev.com/c/6114586, Bug : 385300323).
Correction de bugs
- MPArch/Targets : correction d'une régression qui entraînait la découverte et l'association incorrectes des cibles d'extension Chrome (
chrome-extension://) lors de la détermination de la cible principale sur ChromeOS, ce qui entraînait l'échec des commandes ultérieures (comme la navigation). Les cibles d'extension sont désormais correctement ignorées lors de cette phase initiale (crrev.com/c/6183202, Bug : 385241097). - MPArch/Targets : correction d'une autre régression où les cibles d'onglet pour les
background_paged'extension n'étaient pas correctement filtrées des vues Web de premier niveau lorsque la prise en charge des cibles d'extension était désactivée (crrev.com/c/6160774, Bug: 385731198). - MPArch/Navigation : correction d'un problème qui pouvait entraîner l'absence momentanée de page active associée à un onglet lors d'une activation MPArch, ce qui entraînait l'affichage incorrect d'un état d'erreur dans ChromeDriver. ChromeDriver attend désormais que l'onglet acquière une nouvelle page et termine sa navigation avant de résoudre l'état (crrev.com/c/6177606).
- Traitement des journaux : correction d'un plantage (échec
DCHECKdansbase::Value()) causé par une troncature incorrecte des chaînes de journaux contenant des caractères multibytes. La logique a été mise à jour pour utiliser la détection des limitesUnicodeStringau lieu de simples vérifications de la longueurstd::string, ce qui garantit des points de code valides (crrev.com/c/6210809, Bug: 367752739). - Tests : la plupart des WPT liés au prérendu (à l'exception de quelques-uns présentant des problèmes d'API connus) ont été migrés de
content_shellversheadless_shell, car la récente refactorisation MPArch permet à ChromeDriver de les exécuter correctement (crrev.com/c/6168830, Bug 42323502, Bug 366257368).
Modifications et refactorisations internes
- Normes C++ : les utilisations de
base::rangesont été remplacées par la normestd::ranges(crrev.com/c/6200893, crrev.com/c/6177197, Bug: 386918226). Réécriture des modèlesb ? "true" : "false"pour utiliserbase::ToString(bool)lorsque cela est possible (crrev.com/c/6165810, Bug: 335797528). Suppression de la fonctionStringPrintfNonConstexpr()non sécurisée et remplacement par des alternatives de mise en forme de chaîne plus sûres (crrev.com/c/6149756). Remplacement de l'arithmétique des pointeurs (+ std::size) par des itérateursbegin/endstandards pour résoudre les avertissements de mémoire tampon non sécurisée (crrev.com/c/6217045, Bug: 392116519). - Nettoyage : suppression du flag de fonctionnalité
FedCmIdpSigninStatuset de son indicateur d'exécution (crrev.com/c/6111321, bug 381211734). (Remarque : Une tentative de suppression précédente a été annulée crrev.com/c/6082405 en raison de problèmes.)
ChromeDriver 133
Nouvelles fonctionnalités
- Architecture : refactorisation de ChromeDriver pour prendre en charge l'architecture multipage (MPArch) et les cibles d'onglet.
WebViewImplse connecte désormais aux cibles d'onglet viaAutoAttach. Les commandes qui affichaient auparavant une page recherchent désormais la page active sous un onglet. Cette modification permet d'inspecter les pages d'arrière-plan des extensions, qui peuvent désormais être ciblées via la fonctionnalitéenable_extension_targets(par défaut, les cibles d'extension sont ignorées) (crrev.com/c/5961156, Bug: 379767670, Bug: 42323502). Correction d'une régression qui entraînait l'inclusion incorrecte des pages d'URLchrome-extension://en tant que cibles d'extension. La sélection est rétablie surtype=background_pageuniquement (crrev.com/c/6093588, Bug : 383141569). L'optionenableExtensionTargetsa été déplacée vers les options Chrome au lieu d'être une fonctionnalité de premier niveau (crrev.com/c/6093032). - Classique : la compatibilité avec les références aux éléments à clés multiples a été rétablie. Cette fonctionnalité non documentée, souvent utilisée pour créer des références compatibles avec les modes W3C et non W3C, est désormais officiellement prise en charge et couverte par des tests d'intégration (crrev.com/c/6063257, Bug : 379584343).
Correction de bugs
- Stabilité : empêche ChromeDriver de bloquer indéfiniment lors du traitement de la commande
browsingContext.close. En utilisant un mécanisme différent pour déterminer si le navigateur doit être fermé, ChromeDriver peut désormais gérer correctement les invitesbeforeunloadsans se bloquer (crrev.com/c/6080431, Bug: 42323838, Bug: 379049702). - Navigation : correction d'un bug qui entraînait un blocage lorsqu'une page factice avec l'URL
about:blank?testétait utilisée. L'heuristique destinée à identifier une nouvelle fenêtre qui ne répond pas (baseURL==about:blanketdocumentURL!=about:blank) gère désormais correctement ces URL de chaîne de requête comme cas particulier (crrev.com/c/6038039, Bug: 377410086). - Navigation : ajout d'une logique permettant de réessayer les commandes qui échouent avec une erreur
AbortedByNavigation. ChromeDriver tentera désormais d'exécuter la commande plusieurs fois avant d'abandonner et d'afficher une erreurTimeoutstandard (crrev.com/c/6012427, Bug: 42323825). - Diagnostic : l'erreur
kTargetCrasheda été transmise directement viaNavigationTracker. Si une cible plante lors de la détection de la navigation, cette erreur spécifique est désormais présentée à l'utilisateur au lieu d'un délai d'attente générique, ce qui améliore les diagnostics (crrev.com/c/6032612, Bug: 377410086). - Android : correction des recherches de cibles d'onglet dans
chrome_android_impl.cc(crrev.com/c/6110492, Bug : 384781876). - Tests : correction de l'instabilité de plusieurs tests de dimensionnement de fenêtres sur
win11-arm64(par exemple, en cliquant sur des éléments masqués). Les tests interrogent désormais la taille de la fenêtre intérieure à plusieurs reprises après une opération de redimensionnement jusqu'à ce qu'elle enregistre correctement une hauteur positive, en tenant compte des repeints de fenêtre lents (crrev.com/c/6012658, Bug: 378470046). - Tests : correction de plusieurs problèmes dans les tests d'intégration en mappant les erreurs de connexion Python génériques sur
WebSocketConnectionClosedException, en simplifiant la gestion des exceptions (crrev.com/c/6054134), en évitant les conditions de concurrence en utilisantSendCommandau lieu dePostCommandlorsque des effets secondaires immédiats sont attendus (crrev.com/c/6054137) et en remplaçant la dépendance aux effets immédiats deExecuteScriptpar des mécanismes de détection de navigation plus fiables (crrev.com/c/6063040, Bug : 42323825). - Test : la suppression du flag de fonctionnalité
FedCmIdpSigninStatusa été annulée, car elle entraînait des dysfonctionnements (crrev.com/c/6082405, annulation de crrev.com/c/6078693, bug 384866916, bug 381211734). - Outils : ajout de la prise en charge de la commande
Printdans le scriptlog_replay(crrev.com/c/6010809, Bug : 378451938).
Modifications et refactorisations internes
- Normes C++ : suppression de l'histogramme
Mojo.InvalidUTF8String, permettant le nettoyage des en-têtes mojo publics et des cascades IWYU ultérieures (crrev.com/c/6133861, Bug: 40509710, Bug: 386793084). - Normes C++ : évitez les allocations dans
WaitableEvent::Wait()en passant destd::listàbase::circular_deque(crrev.com/c/6097198). - Normes C++ : constructeurs et destructeurs vides définis par l'utilisateur par défaut dans l'ensemble du code source
chrome/, dans la mesure du possible (crrev.com/c/6101911, crrev.com/c/6056220, Bug: 381119547). - Sécurité de la mémoire (spanification) : migration des tableaux de style C vers
std::arraydanschrome/dans le cadre de l'effort plus large visant à résoudre les avertissements-Wunsafe-buffer-usage(crrev.com/c/6043879, Bug : 378069401). Utilisation stricte desize_tdans les fonctions d'étendue (crrev.com/c/6026238, crrev.com/c/6020621). - Tests : la fonctionnalité plein écran
{ref,crash}testsa été transférée àwpt_internal/, cartestdriverla prend désormais en charge (crrev.com/c/6088404). - Tests : correction de
wptrunnerpour iOS afin de localiser correctement le wrapper ChromeDriver lors de l'utilisation de répertoires de sortie non définis par défaut (par exemple,//out/*-ios-wpt-fyi-rel/) en acheminant correctement--build-directory(crrev.com/c/6014940, Bug : 374199289, Bug : 355218109). - Tests : ajout du test d'intégration
testBrowserCrashWhileWaitingForEventspour illustrer les cas de régression où les erreurs fatales passent inaperçues pour les clients (crrev.com/c/6025145, Bug : 379049702). - Tests : suppression de certains WPT qui plantent lorsqu'ils sont exécutés sous
headless_shellcombiné à ChromeDriver pour stabiliser les compilateurs (crrev.com/c/6032163, Bug : 377410086).
ChromeDriver 132
Nouvelles fonctionnalités
- Tests : ajout de la compatibilité avec les paramètres de ligne de commande
repeatetretry-limitpour les tests d'intégration ChromeDriver, en les mappant aux arguments standardsisolated-script-test-repeatetisolated-script-test-launcher-retry-limit(crrev.com/c/5938195, Bug : 374681919). Pour les tests exécutés en local (hors CI), la valeur par défaut deretry-limita été remplacée par 0 (crrev.com/c/5953326, Bug: 374681919). - WebSockets : implémentation de
WebSocketConnectionet des classes associées dansEmbeddedTestServer, permettant aux tests liés à WebSocket de migrer depuisSpawnedTestServer. Cela inclut l'encadrement selon le protocole et l'enregistrement simplifié du gestionnaire (crrev.com/c/5849732, Bug: 40812029).
Correction de bugs
- Stabilité : correction d'un plantage de ChromeDriver qui pouvait se produire si une commande de clic entraînait la fermeture du navigateur, en gérant correctement l'état d'erreur
kTargetDetachedintroduit dans les refactorisations précédentes (crrev.com/c/5934524, Bug : 42323264). - Stabilité : correction d'un plantage intermittent dans le test d'intégration
testClickNavigateRemoteToLocalsur Mac ARM64 en résolvant une condition de concurrence (crrev.com/c/5975526, Bug : 375971185). - Navigation : correction des commandes
GoBacketGoForward, qui échouaient auparavant siPage.getNavigationHistoryétait appelé alors que le document était en train de passer d'un état actif (indiquant une navigation en cours). ChromeDriver réessaie désormais correctement la commande dans ce scénario (crrev.com/c/6011739, Bug : 378433873). - Exécution de script : nous avons veillé à ce que les scripts qui déclenchent une navigation ou ferment une fenêtre renvoient correctement une erreur
ScriptTimeoutstandard si le côté navigateur ne garantit pas de résultat, ce qui incite l'utilisateur à éviter les structures de test ambiguës (crrev.com/c/5934265, Bug : 372883701). - Exécution de script : correction d'un problème où la fonctionnalité de relecture du journal échouait avec une erreur "réponse de commande inattendue" (crrev.com/c/5961142, Bug : 42323342).
- Codes d'erreur : la gestion des exceptions de ChromeDriver a été corrigée pour ne plus envelopper de force toutes les exceptions avec une propriété "code" dans une "erreur JavaScript" générique. Cela permet de s'assurer que les erreurs standards telles que "stale element reference" (référence d'élément obsolète) de
call_function.jset "invalid element state" (état d'élément non valide) de la fonction Selenium AtomsCLEARsont correctement propagées à l'utilisateur (crrev.com/c/5937893, Bug: 42323409). Amélioration de la gestion des erreurs dansGetElementTagNamepour interpréter correctement les informations manquantes sur le nom de balise comme "l'objet n'est pas un élément" (crrev.com/c/5929087). - BiDi : correction d'un problème qui empêchait l'initialisation des sessions BiDi lorsqu'un profil utilisateur personnalisé était utilisé. La page chargée du profil personnalisé peut empêcher le démarrage de BiDiMapper. ChromeDriver s'assure désormais que le premier onglet charge toujours
data:,pour fournir une table rase au mappeur (crrev.com/c/5960656, Bug: 366886096). - Mode navigation privée : correction d'un bug qui empêchait ChromeDriver de créer des onglets lorsqu'il fonctionnait en mode navigation privée (crrev.com/c/5952980, Bug : 42323352).
- Tests : correction de l'instabilité du test d'intégration
testScriptNavigateRemoteToLocal(qui échouait à un taux de 8,33 %) et ajout de tests d'intégration C++ pour reproduire et vérifier la correction de la condition de concurrence (crrev.com/c/6010867, Bug : 378387680). - Tests : de nombreux tests d'intégration instables ont été réactivés sur Mac (
testWindowMinimize) et Windows (ChromeDownloadDirTest.testFileDownloadAfterTab,InvalidCertificateTest.*), ainsi qu'à l'échelle mondiale (testShadowDomFindElement, tests de capture d'écran des éléments). Les tests WPTcss/css-scrollbars/instables ont été temporairement déplacés de la coque sans tête vers la coque de contenu (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).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur
chromium-bidia été mise à jour pour intégrer les derniers correctifs en amont et les mises à jour du protocole (crrev.com/c/5953339, crrev.com/c/5865478, Bug 4226). (Remarque : Une modification du mappeur a été brièvement annulée en raison d'échecs WPT, puis réappliquée (crrev.com/c/5961113)). - Architecture : l'utilisation de l'objet de session local au thread a été réduite dans ChromeDriver pour éviter les bugs de partage d'état entre les tests et simplifier la gestion explicite des sessions (crrev.com/c/5978486, Bug : 42323555). Refactorisation des tests d'intégration C++ pour utiliser un fixture de test partagé (crrev.com/c/5971474, Bug: 42323555).
- Nettoyage : suppression des solutions de contournement obsolètes spécifiques à l'ancien mode headless, car l'ancien code
chrome-headless-shelln'est plus présent dans Chrome (crrev.com/c/5961602, Bug : 42323387). - Nettoyage : suppression du fichier
java_tests.txtinutilisé, vestige des tests d'acceptation ChromeDriver précédemment supprimés (crrev.com/c/5970994, Bug : 357737793). - Tests : ajout d'un test d'intégration C++ pour vérifier que ChromeDriver ne crée pas de sessions parallèles avec le même
user-data-dirou ne fait pas fuiter d'URL entre les sessions, ce qui pourrait entraîner une instabilité (crrev.com/c/5961137, Bug : 375312517). - Tests : nous avons veillé à ce que les instances ChromeDriver temporaires lancées par les tests d'intégration soient arrêtées le plus rapidement possible pour libérer des ressources (crrev.com/c/5997970, bug 375974725).
ChromeDriver 131
Nouvelles fonctionnalités
- BiDi : la dépendance du mappeur
chromium-bidiest passée à la version 0.8.0, intégrant les dernières mises à jour du protocole et les corrections de bugs (crrev.com/c/5899240, crrev.com/c/5865478, Bug 4226). - Accès au DOM : ajout de la prise en charge des racines fantômes fermées dans la commande
GetElementShadowRoot. Auparavant, cette commande renvoyait une erreurNoSuchShadowRootlors de la tentative d'accès à une racine fantôme fermée (crrev.com/c/5923865, Bug : 372834222). - Accès au DOM : implémentation de la prise en charge des identifiants de fenêtres et de cadres, permettant de renvoyer des références à des fenêtres ou des cadres (y compris les iFrames OOP) à partir de scripts exécutés pour une déréférenciation ultérieure (crrev.com/c/5890437, crrev.com/c/5923555, Bug: 366272556, Bug: 40229283).
- WebAuthn : l'API d'automatisation WebAuthn a été étendue pour inclure les propriétés
userNameetuserDisplayName(crrev.com/c/5905423, Bug : 367915823).
Correction de bugs
- Entrée : correction d'une condition de concurrence avec les clics de souris sur les frames distants en routant les événements de souris vers l'ancêtre de même origine le plus élevé du frame cible, plutôt que de simplement les envoyer au frame le plus haut (crrev.com/c/5836968, Bug : 42323535).
- Entrée : correction du format du code temporel envoyé avec la commande
Input.dispatchTouchEvent(passage de millisecondes à secondes), ce qui a permis de résoudre les plantages lors des tests d'événements de pointeur WPT (crrev.com/c/5924253, Bug : 360918166). - Tests : de nombreux tests ChromeDriver ont été réactivés sur Mac (crrev.com/c/5923569, crrev.com/c/5922823, crrev.com/c/5921444, crrev.com/c/5920851, crrev.com/c/5921442) et Windows (crrev.com/c/5923955), car les échecs associés ne sont plus reproductibles.
Modifications et refactorisations internes
- Sécurité de la mémoire (spanification) : l'utilisation de pointeurs non sécurisés a été remplacée par
base::spandansnet::HttpUtil(crrev.com/c/5854420), etbase::File::WriteAtCurrentPos()a été migré vers son équivalent basé sur les spans (crrev.com/c/5818972). Réécriture des valeurs du pointeur de carte (par exemple, dansstd::map,std::unordered_map) enraw_ptr(crrev.com/c/5867189, Bug : 329428315). - Normes C++ : les macros d'attribut Abseil (
ABSL_ATTRIBUTE_*) ont été remplacées par des macrosbase/standards (crrev.com/c/5852373). Évité les copies involontaires en remplaçant les chaînes/vecteurs de transmission par valeur parstd::string_viewou des références const le cas échéant, et supprimé les qualificateursconstsuperflus des argumentsstd::string_view(crrev.com/c/5914620, crrev.com/c/5906184, Bug : 369952985). - Infrastructure : Fuchsia est configuré pour utiliser ChromeDriver afin de contrôler
web-engine(crrev.com/c/5867896, Bug : 40935291). - Tests : migration d'un test WebAuthn de cadres clôturés de l'ancien lanceur de shell de contenu vers Chrome sans interface graphique avec ChromeDriver, car l'ancien lanceur ne prendra bientôt plus en charge l'API WebAuthn testdriver (crrev.com/c/5920770, Bug: 372169469).
ChromeDriver 130
Nouvelles fonctionnalités
- BiDi : la dépendance BiDi Mapper a été mise à jour pour récupérer les dernières mises à jour du protocole et les corrections de bugs en amont
chromium-bidi(crrev.com/c/5850570, relanding crrev.com/c/5837065 après l'annulation crrev.com/c/5840080 ; crrev.com/c/5717956, Bug 4226). - BiDi : ChromeDriver a été mis à jour pour fournir
unhandledPromptBehaviordirectement au Mapper via la commandesession.newlors de l'initialisation d'une session BiDi. Cela termine la migration depuisMapperOptions(crrev.com/c/5682934, crrev.com/c/5766077, Bug: 42323841, Bug: 356371297). - Tests : ajout de la prise en charge de l'argument
--chromedriverau scriptbisect-builds.pypour les builds de bureau, ce qui permet au script de télécharger et d'utiliser automatiquement la version correcte de ChromeDriver lors des bissections pour les tests dépendant de WebDriver/ChromeDriver (crrev.com/c/5861048, Bug : 352344089).
Modifications et refactorisations internes
- Normes C++ : résolution des problèmes liés à la "règle des cinq" dans différentes classes. Étant donné que le plug-in de style Chrome insiste sur les destructeurs hors ligne sans appliquer également les constructeurs de déplacement hors ligne, le compilateur supprimait implicitement les opérateurs de déplacement et revenait silencieusement aux copies. Ces déclarations manquantes ont été ajoutées (crrev.com/c/5846757, Bug : 364788123).
- Tests : le récapitulatif des résultats des tests
wptrunnera été nettoyé en remplaçant la chaînechromecodée en dur par le produit réellement utilisé et en masquant l'artefactcommanddétaillé dans le récapitulatif (crrev.com/c/5825633, Bug : 41494889). - Tests : correction d'un grand nombre d'échecs de tests dans les tests d'intégration ChromeDriver sur macOS 15 (Mac15) en doublant les délais d'attente spécifiques, car les tests sur cet OS nécessitaient beaucoup plus de temps que sur Mac14. Quatre tests de capteurs virtuels ont également été ajoutés à la liste des tests à ignorer en raison de leur instabilité (crrev.com/c/5817455, Bug : 354939744).
- Tests : désactivation des tests
ChromeDriverSiteIsolation.testClickNavigateLocalToLocalinstables sur Mac (crrev.com/c/5806894, bug 361521805) et des testsChromeDriverTest.testClickElement*ObscuredByScrollBarinstables sur Windows 11 (crrev.com/c/5804083, bug 360058651). - Tests : les tests d'acceptation ChromeDriver (qui téléchargeaient d'anciennes versions de Chrome pour les tester par rapport au ChromeDriver actuel) ont été supprimés en raison de plusieurs problèmes d'infrastructure. Ils pourront être réajoutés ultérieurement dans l'intégration continue avec autoroll (crrev.com/c/5812142, Bug : 357737793).
ChromeDriver 129
Nouvelles fonctionnalités
- BiDi : l'assistant d'initialisation de session ChromeDriver a été mis à jour pour envoyer une commande
session.newau mappeur BiDi, ce qui permet au mappeur de gérer directement les capacités. Il s'agit de la première étape pour supprimerMapperOptions(crrev.com/c/5741432, Bug: 356371297). (Remarque : Une modification associée crrev.com/c/5754093 fournissant leunhandledPromptBehaviortraité a été annulée crrev.com/c/5755744 en raison d'une baisse de la couverture des tests). - Pression de calcul : ajout de nouvelles commandes d'extension pour la gestion des sources de pression virtuelles, implémentation de la section "Automation" (Automatisation) de la spécification de pression de calcul. Ces commandes sont analysées et transmises à la couche CDP (crrev.com/c/5666583, Bug : 347031400).
- Extensions MV2 : mise à jour des tests exerçant le comportement MV2 pour utiliser
ScopedTestMV2Enablerdans le cadre de l'essai sur le terrain de l'obsolescence du Manifest V2 d'extension (crrev.com/c/5685054, Bug: 339061151).
Correction de bugs
- Sérialisation classique : suivi des objets vus lors de la sérialisation d'un
Setdans les résultats d'exécution du script WebDriver Classic, ce qui empêche les boucles infinies et tolère les remplacements deArray.prototype.includes(crrev.com/c/5765833, Bug: 357472850). (Remarque : Cette modification a été annulée par la suite crrev.com/c/5773175 en raison d'une régression WPT).
Modifications et refactorisations internes
- BiDi : la dépendance BiDi Mapper a été mise à jour pour inclure les derniers correctifs et mises à jour du protocole de
chromium-bidi(crrev.com/c/5756587, crrev.com/c/5717956, Bug: 4226). - Sécurité de la mémoire (spanification) : remplacement de l'utilisation de mémoire tampon non sécurisée dans
WebSocketFrameParser::Decode,MaskWebSocketFramePayloadetWriteWebSocketFrameHeaderparbase::span(crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, Bug: 40284755, Bug: 354307327). Ajout de#pragma allow_unsafe_buffersdanschrome/*en vue d'autres corrections (crrev.com/c/5717950, Bug: 40285824) et conversion des macrosUNSAFE_BUFFERS()non conformes enUNSAFE_TODO()(crrev.com/c/5786346). Réécriture des champsbase::spanenbase::raw_span(crrev.com/c/5515096, Bug: 332587642). - Normes C++ : l'utilisation de tableaux à longueur variable (VLA) dangereux a été supprimée du code en marquant explicitement les longueurs de tableau comme
constexpr(crrev.com/c/5738737, Bug : 349656479). Inclusion des en-têtes<unordered_map>nécessaires précédemment extraits de manière transitive (crrev.com/c/5792881). - Architecture : l'implémentation
WebSocketEncodera été unforkée en rétablissant sa migration bloquée vers//services/network/public/cpp/serveret en centralisant à nouveau la logique dans//net/serverpour garantir des mises à jour cohérentes (crrev.com/c/5768214, Bug : 40205564).
ChromeDriver 128
Nouvelles fonctionnalités
- Capacités : autorise l'utilisation d'un dictionnaire pour la capacité
unhandledPromptBehavior, conformément aux structures de capacité standards, bien qu'il ne soit pas encore entièrement respecté par le Mapper (crrev.com/c/5692204, crrev.com/c/5682934, Bug: 42323841). - Démarrage : ajout de l'argument de ligne de commande
--ignore-explicit-portà ChromeDriver. Cette solution de contournement temporaire force ChromeDriver à ignorer tout port fourni explicitement et à trouver et se lier à un port libre. Elle permet de résoudre les conflits de ports TCP lors de l'exécution des tests de plate-forme Web (elle sera supprimée après la version M132) (crrev.com/c/5724574, crrev.com/c/5703976, Bug: 42323836).
Correction de bugs
- Capteurs : correction de la commande
ExecuteUpdateVirtualSensorpour utiliserSendCommand()au lieu deSendCommandAndGetResult(), car la commande CDPsetSensorOverrideReadingsne renvoie pas de valeur (crrev.com/c/5703589). - FedCM : correction d'une condition de concurrence dans les tests ChromeDriver FedCM en n'affirmant plus que
NoSuchDialogest renvoyé lorsqu'une boîte de dialogue est réellement attendue, ce qui évite les échecs si la boîte de dialogue apparaît trop rapidement (crrev.com/c/5713515, Bug : 346530330). - Tests : réactivation des tests de l'authentificateur virtuel WebAuthn sur Mac après la résolution du problème sous-jacent (crbug.com/40233722) (crrev.com/c/5635806, Bug : 329130177).
- Messages d'erreur : correction d'une faute de frappe dans le message d'erreur de la commande
execute/async(crrev.com/c/5697913).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour, ce qui a permis d'intégrer les dernières fonctionnalités du protocole, les corrections de bugs et les mises à jour des attentes WPT du projet
chromium-bidien amont (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). - Les utilisations de la méthode
GrowableIOBuffer::StartOfBufferobsolète ont été remplacées parspan, ce qui améliore la sécurité de la mémoire en éliminant les pointeurs non vérifiés (crrev.com/c/5706088, Bug: 329476354). - Les méthodes
DecodedeWebSocketFrameParseront été spanifiées pour améliorer la sécurité de la mémoire (crrev.com/c/5722108, Bug: 354307327). - Nettoyage des vestiges restants de
absl::optionalen supprimant les en-têtes Abseil obsolètes et en migrant versstd::optional(crrev.com/c/5691505, Bug: 40242125). - ChromeDriver a été modifié pour gérer tous les types de cibles inconnus (y compris
shared_storage_worklet) en tant queWebViewInfo::kOtherau lieu de les traiter comme des erreurs. Cela permet à Chrome d'introduire de nouveaux types de cibles sans casser immédiatement les WPT (crrev.com/c/5680542, crrev.com/c/5679146, Bug: 42323839). - Ajout d'une cible d'installation pour le compilateur
linux-builder-perfafin de générer des binaires sans symboles pour les archives bisect, et configuration des compilateurs pinpoint pour accepter différentsadditional_compile_targets(crrev.com/c/5668198, Bug: 344643694). - Mise à jour de
run_performance_tests.pypour trouver et transmettre l'emplacement de ChromeDriver àcrossbenchlors des compilations de performances (crrev.com/c/5624538, Bug: 338629299). - Dépendance
crossbenchdéployée (crrev.com/c/5681849). - Marqué
FedCmSpecificTest.testClickErrorMoreDetailsetFedCmSpecificTest.testClickErrorGotItcomme instables sur Mac (crrev.com/c/5704320, crrev.com/c/5677564, Bug: 352821422, Bug: 346530330). - Désactivation du test
BidiTest.testFocusInFirstTabinstable (crrev.com/c/5676686, Bug: 350916212).
ChromeDriver 127
Correction de bugs
- Stabilité : correction d'un plantage de ChromeDriver qui se produisait lorsqu'une commande
target.detachFromTarget(ou un événementtarget.detachedFromTarget) était reçue alors que le client DevTools traitait activement d'autres commandes, ce qui empêchait la libération prématurée des objetsWebViewetDevToolsClient(crrev.com/c/5527584, Bug : 339773537). - Stabilité : correction d'un problème qui pouvait entraîner le renvoi incorrect d'une "erreur inconnue" par la commande
Switch To Windowsi une vue Web était détachée lors de l'exécution de la commande. L'erreur interne "vue Web introuvable" est désormais ignorée, ce qui entraîne une réponse standard "aucune fenêtre de ce type" si la fenêtre cible est effectivement fermée (crrev.com/c/5583730, Bug : 338616700). - Stabilité : ChromeDriver tolère le détachement de la cible lors de la mise à jour de la liste WebView interne. Si une cible se détache pendant la mise à jour, ChromeDriver effectuera désormais une nouvelle tentative au lieu de renvoyer une erreur non standard, ce qui réduira l'instabilité dans les environnements où les fenêtres sont rapidement créées et détruites (crrev.com/c/5565103, Bug: 338616700, Bug: 4771).
- Navigation : ajout d'une logique à ChromeDriver pour attendre une navigation détectée par l'extrémité distante lors de la recherche d'éléments. Cela empêche ChromeDriver de renvoyer une erreur non standard ou de planter avec un
DCHECKlorsqu'une navigation coïncide avec une opération de recherche d'élément (crrev.com/c/5563113, rétablissement de crrev.com/c/5563420, relanding crrev.com/c/5562089, Bug: 4771). - BiDi : correction d'une condition de course entre ChromeDriver et BiDiMapper lors de la création de session. ChromeDriver attend désormais que la commande
browsingContext.getTreerenvoie une liste non vide avant de conclure la commande NewSession, ce qui garantit que le nouvel onglet par défaut est correctement enregistré (crrev.com/c/5575497, Bug: 341048786, Bug: 1503101). - BiDi : correction d'un problème qui faisait que le focus restait dans l'onglet en arrière-plan BiDiMapper après la création d'une session au lieu de l'onglet utilisateur actif en accordant explicitement le focus au premier onglet utilisateur (crrev.com/c/5594070, Bug: 341048786, Bug: 1503101).
- BiDi : ChromeDriver n'essaie plus d'associer une cible lors du traitement des commandes BiDi (comme
browsingContext.close) pour éviter que les commandes CDP ne se bloquent indéfiniment si une invite utilisateur est ouverte. Le traitement est entièrement délégué à la couche BiDi déjà connectée (crrev.com/c/5541915, rétablissement de crrev.com/c/5539818, relancement de crrev.com/c/5522393, bug 4758). - FedCM : correction de l'échec du test WPT
fedcm-loginhint.https.htmloù une boîte de dialogue était incorrectement marquée comme fermée. L'état n'est désormais mis à jour que si l'opérationselectAccountréussit réellement (crrev.com/c/5398379, Bug : 331237776). - Tests : correction d'un échec
DCHECKlors de l'analyse JSON lorsqu'un caractère atteignait exactement la limitekExtendedASCIIStart(crrev.com/c/5565276, Bug: 40284755). - Tests : correction du test WPT
scrollend-event-fires-to-iframe-window.htmlen utilisant l'élément iframe comme origine de défilement et en arrondissant les entrées de déplacement du pointeur à des nombres entiers, ce qui empêche les erreurs ChromeDriver avec des positions tactiles fractionnaires (crrev.com/c/5570150, Bug : 340956654). - Tests : amélioration des diagnostics dans les tests d'intégration ChromeDriver en affichant les chemins tentés lorsque
run_py_tests.pyne parvient pas à localiser le binaire du navigateur (crrev.com/c/5604204, Bug 4781).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour pour tenir compte des dernières mises à jour du protocole et des corrections de bugs (crrev.com/c/5614670, crrev.com/c/5593796, crrev.com/c/5537892, crrev.com/c/5471839, Bug : 4226).
- Remplacement des utilisations de
NOTREACHED()parNOTREACHED_IN_MIGRATION()dans le répertoirechrome/en vue de rendreNOTREACHED()strictement[[noreturn]](crrev.com/c/5539004, Bug: 40580068). - Activation de la génération de
THIRD_PARTY_NOTICES.txtpour ChromeDriver à l'aide de l'outillicenses.pyafin de respecter les exigences de distribution (crrev.com/c/5596355, Bug: 4777). - Suppression de la compatibilité
run_wpt_tests.pypourcontent_shell, car la couverture WPT de Chromium passe entièrement àheadless_shell+ ChromeDriver (crrev.com/c/5589930). Les commutateurswptrunneront été réorganisés pour être spécifiques à l'intégrateur afin de tenir compte de ce changement sans impact fonctionnel (crrev.com/c/5589793, Bug: 338412391). - La logique de détection et de gestion des boîtes de dialogue JavaScript a été consolidée en la déplaçant de
JavaScriptDialogManagerdirectement versDevToolsClientImpl. La classe de gestion distincte a été supprimée pour simplifier les tests et le raisonnement (crrev.com/c/5545630, Bug: 4757). - Désactivation de
PureBidiTest.testBrowsingContextTreeIsNotEmptysur Mac en raison de son instabilité (crrev.com/c/5588665, Bug : 343891977). - Mise à jour des attentes WPT BiDi pour tenir compte des récentes mises à jour du Mapper (crrev.com/c/5615110, Bug: 4226, Bug: 324436866).
- Ajout de tests unitaires pour
WebView::SendBidiCommandetBidiTrackerafin d'augmenter la couverture de code (crrev.com/c/5588400, Bug: 341048786, Bug: 1503101).
ChromeDriver 126
Nouvelles fonctionnalités
- BiDi : ChromeDriver a été mis à jour pour fournir le commutateur
--disable-background-timer-throttlinglors du lancement du navigateur pour une session WebDriver BiDi, ce qui empêche la limitation du débit des onglets en arrière-plan (crrev.com/c/5515013, Bug 4762). - BiDi : ajout de la compatibilité avec le mappeur BiDi pour envoyer des messages de débogage (
sendDebugMessage) lorsque la journalisation détaillée est requise. ChromeDriver marque ces événements commebidi messagespour l'analyse, bien queBidiTrackerles ignore actuellement (crrev.com/c/5465782, Bug: 4753). - Classique : implémentation de l'acceptation automatique de toutes les boîtes de dialogue
beforeunload(alertes), conformément à la norme WebDriver qui stipule qu'elles ne doivent jamais être affichées dans une session classique (crrev.com/c/5517510, Bug: 4757).
Correction de bugs
- Classique : suppression de la limite de tentatives maximales redondante dans la logique de récupération des éléments. La récupération n'est désormais limitée que par le délai avant expiration implicite, ce qui évite les scénarios où l'opération peut échouer prématurément et renvoyer à tort une erreur
NoSuchExecutionContextnon standard (crrev.com/c/5478668, Bug: 4379). - Classic : correction d'une régression qui entraînait la réponse
javascript errorde ChromeDriver au lieu d'une erreurinvalid selectorlorsqu'une requête de récupération utilisait une stratégie de localisation non valide (crrev.com/c/5490662, Bug 4743). - Classic : les commandes de fenêtre sur Android (maximiser, réduire, plein écran) renvoient l'erreur
unsupported operationconforme à la norme au lieu de continuer, car ces actions ne sont pas prises en charge par le navigateur Android (crrev.com/c/5490224, Bug: 4689). - Classic : ChromeDriver a été corrigé pour ne plus jamais renvoyer le code d'erreur interne
kChromeNotReachable. Il renvoie désormais correctement l'erreur standardkSessionNotCreatedlorsque le client HTTP ne peut pas se connecter au navigateur (crrev.com/c/5476390, Bug : 4379). - Classic : Correction de ChromeDriver pour qu'il ne renvoie jamais l'erreur non standard
kNoSuchExecutionContextlors de l'exécution des commandes de fenêtre (crrev.com/c/5483606, Bug 4379). - Version classique : suppression du code d'erreur
kForbiddeninutilisé et non compatible de la liste des codes d'erreur compatibles (crrev.com/c/5476927, bug 4379). - BiDi : mise à jour de ChromeDriver pour inviter l'utilisateur à confirmer avant de fermer l'onglet Mapper dédié, conformément aux modifications apportées à
chromium-bidien amont (crrev.com/c/5508600, Bug: 4761).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour, ce qui permet d'intégrer les dernières fonctionnalités et les derniers correctifs de bugs du projet
chromium-bidien amont (crrev.com/c/5490428, crrev.com/c/5471839, crrev.com/c/5509316, crrev.com/c/5458234, Bug 4226). (Remarque : Un bump de mappeur a été brièvement annulé par un jardinier, puis réintégré (crrev.com/c/5374839, crrev.com/c/5374366)). - Remplacement des utilisations de
base::StringPieceparstd::string_viewdans//chrome(crrev.com/c/5467746, Bug: 40506050). - Suppression de l'utilisation de
std::to_string()dans//chrome, en le remplaçant parbase::NumberToString()oubase::FormatNumber()(crrev.com/c/5505593, Bug : 335672557). - La compatibilité avec le commutateur
--remote-debugging-addressdans l'ancien mode headless a été supprimée, car l'accès à distance non protégé au protocole Chrome DevTools a été jugé trop dangereux (crrev.com/c/5512634, Bug: 327558594). - Suppression des règles de compilation Fuchsia de
//chrome, à l'exception de ChromeDriver (crrev.com/c/5473870, Bug: 41481724). - Migration des anciennes références
TODO(crbug.com/...)dans l'ensemble du code vers le nouveau format d'ID de l'outil de suivi des problèmes (TODO(b/...)) (crrev.com/c/5492605, crrev.com/c/5486477, crrev.com/c/5461380, Bug: 321899722). - Tests WebAuthn (authentificateur) désactivés sur Mac (pour les tests headless et
chromedriver_py_tests) en raison d'un bug sous-jacent complexe, ce qui permet de débloquer la mise à niveau des bots vers macOS 14 (crrev.com/c/5525435, crrev.com/c/5518820, Bug: 329130177). - Désactivation des compilateurs WPT pour
content_shellen raison de difficultés à exécuter les WPT avec ChromeDriver et Content Shell ensemble (crrev.com/c/5512439, Bug: 40214293). - Rétablissement d'une modification qui met à jour les WPT
focus-navigationpour utiliserShift+Tabviatest_driver.action_sequence()pour la navigation vers l'arrière. Correction d'un bug dansfocus-utils.jsoù le mauvais code de touche (E050au lieu deE008) était utilisé pour la touche Maj (crrev.com/c/5467843, annulation de crrev.com/c/5466531, réintégration de crrev.com/c/5463903, Bug : 40597271). - Ajout de
crossbenchetchromedriveraux cibles de compilation des performances (crrev.com/c/5521874, Bug: 338627700).
ChromeDriver 125
Nouvelles fonctionnalités
- Position de l'appareil : ajout de commandes ChromeDriver pour la gestion de la position de l'appareil, compatible avec la section "Automation" (Automatisation) de la spécification de la position de l'appareil. Cela permet de remplacer la posture de l'appareil définie par le matériel et de supprimer le remplacement à l'aide des commandes d'extension (crrev.com/c/5437993, Bug: 330376761).
Correction de bugs
- BiDi : le stockage intermédiaire de la commande BiDi entrante
idest passé deDoubleàbase::Value. Cela permet de s'assurer queidest renvoyé précisément dans la réponse, sans point décimal ni partie fractionnaire inattendus après la sérialisation JSON (crrev.com/c/5444225, Bug 4676). - FedCM : rétablissement de la modification pour activer CORS dans le point de terminaison d'assertion d'identité une fois les IdP prêts (crrev.com/c/5440132, rétablissement de crrev.com/c/5381316, rétablissement de crrev.com/c/5370086, bug 40284123).
- FedCM : correction d'un bug qui marquait incorrectement une boîte de dialogue comme fermée. Pour résoudre ce problème, nous avons fait en sorte qu'elle ne soit marquée comme fermée que si la commande
selectAccountréussit. Cela résout les échecs de test lorsqueselectAccountest appelé sans sélecteur de compte attendu (crrev.com/c/5398379, Bug: 331237776). Évité d'appelerfedcm_get_and_select_first_accountlorsqu'un sélecteur de compte n'est pas attendu pour éviter de déclencher ce bug (crrev.com/c/5398800). - Tests : correction d'un échec du test WPT
popover-light-dismiss.htmlen combinant des séquences d'actions et en utilisant le document du frame principal comme origine pour l'actionpointerUp, ce qui empêche ChromeDriver d'envoyer incorrectement des événementspointerUpsimultanés dans les frames (crrev.com/c/5402096, Bug 325981758). - Tests : correction de
wptrunnerpour transférer correctement la sortiestderr(y compris les journaux du navigateur écrits lors de l'utilisation de--enable-chrome-logs) à l'artefactstderrau lieu decrash_log, et déplacement des erreurs de harnais (qui contiennent la trace de la pile du navigateur) verscrash_log(crrev.com/c/5437023, Bug : 41494889). - Tests : correction de
wptrunnerpour acheminer les journaux du navigateur vers l'artefact de test approprié en regroupant les résultats par processus ChromeDriver, ce qui empêche les journaux entrelacés et orphelins lors de l'exécution de tests en parallèle (crrev.com/c/5320681, Bug : 41494889).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour, intégrant les dernières améliorations du protocole et les corrections de bugs (crrev.com/c/5433300, crrev.com/c/5393442, Bug: 4226). (Remarque : Une précédente augmentation crrev.com/c/5374366 a été annulée crrev.com/c/5374839, puis réintégrée avec des tests instables désactivés et des licences mises à jour crrev.com/c/5374914).
- Diagnostics : les exceptions ChromeDriver sont désormais liées à
StackTracede Chrome. La trace de la pile du navigateur s'affiche dans le message d'erreur lorsqu'une session est supprimée en raison d'un plantage de page/d'onglet (par exemple, des pointeurs suspendus sur Mac), ce qui améliore considérablement la capacité de débogage (crrev.com/c/5374371, Bug: 330009945). - Tests : le test d'intégration
testTakeLargeElementViewportScreenshotinstable a été temporairement désactivé sur Mac (plus précisémentmac-arm64) (crrev.com/c/5447515, bug 333826980). - Tests : les arguments de lancement de ChromeDriver dans les environnements de test (CEL) ont été mis à jour pour correspondre à la syntaxe de Selenium 4+ (crrev.com/c/5448812, bug 308885357).
- Tests : extrait la ligne de commande
chromeexacte utilisée pour exécuter chaque test WPT à partir du journalchromedriverdans un artefact ResultDB nommécommand. Cela facilite le débogage manuel avecrun_blink_wptserve.py(crrev.com/c/5441189, Bug: 41494889). - Dépendances :
Closurea été supprimé de la liste des dépendancesselenium-atoms, et donc des avis tiers de ChromeDriver (crrev.com/c/5424804, Bug: 4226). - Dépendances : suppression des dépendances inutilisées sur
dynamic_annotationsdans le dépôt de base (crrev.com/c/3398908, Bug : 1282422). - Mise en forme : application de la nouvelle configuration
clang-formataux en-têtes Windows problématiques (crrev.com/c/5367127, Bug : 329138753).
ChromeDriver 124
Nouvelles fonctionnalités
- BiDi : ajout d'une étape de compilation pour réduire le script
BiDiMapperavant de l'intégrer à ChromeDriver, car le mappeur de source est désormais téléchargé non réduit à partir de CIPD (crrev.com/c/5310075, Bug : 4226). - WebAuthn : ajout de la commande
SetCredentialProperties, qui permet aux clients de mettre à jour les indicateurs de sauvegarde pour une identifiant WebAuthn (crrev.com/c/5296389, Bug : 40945430). - WebAuthn : les indicateurs de sauvegarde WebAuthn sont exposés via WebDriver en ajoutant
defaultBackupEligibilityetdefaultBackupStateà la commande "Add Virtual Authenticator" (Ajouter un authentificateur virtuel), etbackupEligibilityetbackupStateà la commande "Add Credential" (Ajouter une identifiant) (crrev.com/c/5297117, Bug: 40945430). - Tests : ajout de la prise en charge de l'argument de ligne de commande
--failfastaux tests d'intégration Python de ChromeDriver, ce qui permet d'arrêter l'exécution des tests à la première erreur pour faciliter le débogage (crrev.com/c/5374546). - Tests : ajout de la compatibilité avec content-shell pour la commande WebDriver
SetRPHRegistrationModevia les APItestdriver-vendor.js(crrev.com/c/5205730, Bug : 1359103).
Correction de bugs
- Stabilité : le contrôle de l'expiration du délai d'attente a été déplacé dans le corps de la boucle d'interrogation et d'attente dans
ChromeImpl::SetWindowBounds. Correction d'un problème qui pouvait entraîner l'expiration du délai avant la première itération de boucle en cas de charge élevée (crrev.com/c/5366899, Bug: 4642). - Performances : temps d'attente réduit dans
ChromeImpl::SetWindowBoundsen n'appliquant un temps d'attente avec backoff exponentiel que si les limites de la fenêtre n'ont pas encore atteint l'état souhaité, ce qui réduit la latence de configuration WPT (crrev.com/c/5366457, Bug: 4642). - Démarrage : ChromeDriver mis à jour pour utiliser
--user-data-dirau lieu de--data-pathlors de la spécification du répertoire de données pourcontent_shell, conformément à la façon dont il lit le port DevTools actif (crrev.com/c/5226609, Bug : 1295373).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour pour inclure les derniers correctifs et fonctionnalités du protocole (crrev.com/c/5374366, crrev.com/c/5349491, crrev.com/c/5317650, bug 4226). (Remarque : Une mise à jour a été brièvement annulée, puis réappliquée en raison d'échecs de tests crrev.com/c/5374839, crrev.com/c/5368680, crrev.com/c/5319423).
- Remplacement des utilisations de
absl::optionalparstd::optionaldans l'ensemble du code suite à la transition deabsl::optionalvers un alias de type (crrev.com/c/5296147, Bug: 1500249). - Couverture étendue de
MiraclePtr(raw_ptr) à d'autres conteneurs standards, y comprisstd::list,std::unordered_set,base::flat_set,std::stacketstd::queue(crrev.com/c/5306923, Bug: 325302189). WriteBigEndian()a été converti pour utiliser les conversions d'octetsbase::numericsouBigEndianWriter(qui accepte désormaisbase::span), ce qui améliore la sécurité lors de l'écriture d'octets big-endian (crrev.com/c/5202348, Bug: 1490484).- Passage à ChromeDriver pour exécuter les tests de plate-forme Web (WPT) avec
content_shell(à l'exception des tests virtuels et des reftests en attente de correction de bugs en amont) (crrev.com/c/5347371, Bug 40214293). - Conversion de tous les tests Web Generic Sensor existants pour utiliser
test_driver.jset des capteurs virtuels au lieu de mocks JS/Mojo, conformément à la nouvelle section Automation de la spécification Generic Sensor (crrev.com/c/4770867, Bug: 1278377, Bug: 1471996). - Amélioration de la génération de licences en ajoutant
append_notices.pypour générer des crédits pour les dépendancesBiDiMapperet en mettant à jour l'invocationlicenses.pypour s'appuyer strictement sur le fichier READMEselenium-atomspour les avis tiers (crrev.com/c/5350601, crrev.com/c/5339957, Bug: 4729, Bug: 4735).
ChromeDriver 123
Nouvelles fonctionnalités
- FedCM : affichage de boîtes de dialogue modales pour les flux de boutons de compte unique, y compris l'ajout de la prise en charge des vues modales dans l'interface d'automatisation (crrev.com/c/5231438, bug 1518356).
- FedCM : implémentation de la compatibilité ChromeDriver pour ouvrir des liens dans les boîtes de dialogue FedCM, en les traitant comme des boutons pour simplifier l'automatisation (crrev.com/c/5225543, Bug : 1513520).
- Capteurs : modification des commandes de capteur virtuel WebDriver pour lire les angles d'Euler (alpha-bêta-gamma) au lieu des quaternions, conformément aux récentes mises à jour des spécifications des capteurs d'orientation. Les couches internes du CDP et des services utilisent toujours des quaternions via une étape de conversion (crrev.com/c/5229177, Bug : 1506995, Bug : 1520912, Bug : 1520919).
Correction de bugs
- Classic : correction d'un problème qui entraînait une erreur
StaleElementReferencelorsqu'un nœud d'un autre frame était renvoyé via un script. Désormais, une erreurJavaScriptErrorest renvoyée, conformément à la norme WebDriver (crrev.com/c/5222746, Bug 4668). - Tests : correction d'un test d'événements de défilement hors limites qui échouait sur Chrome/ChromeDriver, car le déplacement tactile s'étendait au-delà des limites de la fenêtre. Le déplacement est désormais correctement limité (crrev.com/c/5297676, Bug: 40832230).
- Tests : correction des tests MIDI
open-close.https.htmlpour éviter de créer des promesses inutiles, ce qui permet d'éviter les rejets de promesses non gérés qui entraînaient l'échec du test ChromeDriver (crrev.com/c/5239869, Bug : 1499775). - Tests : correction de l'ensemble d'autorisations dans les tests
wpt_internal/system-wake-lock/idlharness*oùtest_driver.set_permission(...)transmettait incorrectementfalseau lieu denullou d'unWindowProxy, ce qui induisait ChromeDriver en erreur (crrev.com/c/5271087, Bug: 40287920).
Modifications et refactorisations internes
- BiDi : la dépendance BiDi Mapper a été mise à jour pour récupérer les derniers correctifs et fonctionnalités (crrev.com/c/5205452, crrev.com/c/5255321, crrev.com/c/5238148, crrev.com/c/5237125, Bug 4226). (Remarque : Une augmentation a été brièvement annulée, puis réappliquée en raison d'échecs de compilation crrev.com/c/5238855).
- Amélioration de l'intégrité du code ChromeDriver en éliminant les casts statiques non sécurisés d'une classe de base vers une classe dérivée dans
ChromeImpletDevToolsClientImpl, ce qui empêche un comportement potentiellement indéfini (crrev.com/c/5277062, crrev.com/c/5272562, Bug: 4702). - Élimination des casts non sécurisés dans
WebViewImpl(crrev.com/c/5272230, Bug: 4702). - Suppression des formes obsolètes de
base::Base64Encode(), migration vers la variante de retourstd::stringplus récente au lieu d'utiliser des paramètres de sortie (crrev.com/c/5179900, crrev.com/c/5246585, Bug: 1486214). - Mise à jour de toutes les directives
#includepourbase/...afin d'utiliser""au lieu de<>pour plus de cohérence (crrev.com/c/5237376, Bug 1500249). - Migration de tous les fichiers
DIR_METADATAdanschrome/test/vers Buganizer (crrev.com/c/5284119, Bug : 1518875). - Empêche wptrunner de créer un fichier
-local lors du passage de-vvven supprimant le commutateurchromedriver --log-path=-inutile, car stderr est déjà redirigé vers stdout (crrev.com/c/5282721). - Amélioration de wptrunner pour résumer les résultats des tests en cas de régression, en incluant explicitement les résultats des sous-tests et les traces de pile ChromeDriver directement dans le résumé (crrev.com/c/5238662, Bug: 1521922).
- Simplification du débogage des tests d'intégration ChromeDriver en introduisant le paramètre
--remote-chromedriver-portdansrun_py_tests.py, permettant la connexion à une instance existante s'exécutant sous un débogueur (crrev.com/c/5237254, Bug: 4693). - Évité les appels
base::HexEncode()etRandBytes()à deux arguments pour permettre au compilateur de déduire la taille correcte, ce qui simplifie le code (crrev.com/c/5241357).
ChromeDriver 122
Correction de bugs
- BiDi : la sérialisation des nœuds profonds a été mise à jour pour inclure
loaderId, ce qui permet à ChromeDriver et au mappeur BiDi de référencer et de déréférencer correctement les nœuds sans effectuer trop d'allers-retours (crrev.com/c/5116240, Bug 1420968). - Fonctionnalités : ChromeDriver mis à jour pour transmettre la fonctionnalité
acceptInsecureCertsau mappeur BiDi immédiatement au démarrage, ce qui évite les conditions de course où la fonctionnalité pourrait être appliquée trop tard (crrev.com/c/5125711, Bug 4643). - Classique : l'architecture de la génération de références d'éléments a été repensée pour utiliser un format
<frame_id>.<loader_id>.<backend_node_id>. Cela permet à ChromeDriver de distinguer définitivement les références d'éléments valides, inconnues et obsolètes lors des navigations dans les frames et des mises à jour du DOM (crrev.com/c/5094519, Bug 4379). - Classic : correction d'un problème qui pouvait entraîner l'échec de la commande
window/handlesavec une erreur "no such window" si une cible nouvellement créée se fermait (par exemple, dans une condition de course) avant que ChromeDriver puisse s'y attacher (crrev.com/c/5147409, Bug: 1506833). - FedCM : ajout d'un écouteur d'événements interne pour envoyer une notification lorsqu'une boîte de dialogue FedCM est fermée, ce qui empêche la commande
dialogtypede renvoyer des données obsolètes si la boîte de dialogue a été fermée en externe (par exemple, viaAbortController.abort) (crrev.com/c/5067504, bug 1506292). - FedCM : le préfixe du fournisseur a été supprimé de la commande
ClickDialogButton, car il a été approuvé dans la spécification FedCM (crrev.com/c/5092527, bug 1499341).
Modifications et refactorisations internes
- BiDi : la dépendance BiDi Mapper a été mise à jour vers la dernière version (crrev.com/c/5205452, Bug: 4226).
- Réduction du trafic ChromeDriver et Chrome DevTools Protocol (CDP) en supprimant les appels
Page.enableredondants envoyés à partir de chaqueDevToolsEventListener, carDevToolsClientImplgère déjà cela par cible (crrev.com/c/5088789, Bug: 4600). - Tous les compilateurs Wptrunner pour
content_shellsont passés à l'état expérimental, car l'exécution de tests en mode protocole n'est actuellement pas entièrement prise en charge pendant l'intégration de ChromeDriver (crrev.com/c/5225148, Bug: 1474702). - Ignorer les tests qui nécessitent
window.test_driver_internal.get_computed_rolesurcontent_shell, car il n'est pas encore implémenté, ce qui empêche les échecsTypeError(crrev.com/c/5189678, Bug: 1517744). - Refactorisation réintégrée pour utiliser des indicateurs
IS_OZONE_{X11, WAYLAND}indépendants de la plate-forme au lieu deOZONE_PLATFORM_*(crrev.com/c/5086329, Bug: 1500494). - Mise à jour de la dépendance
selenium-atomsvers la dernière révision (crrev.com/c/5110808, Bug : 4662). - Correction de la logique dans les tests SnapEvents lorsqu'ils sont exécutés sur le binaire Chrome complet en arrondissant les entrées de déplacement du pointeur, en appliquant le paramètre
originpour les défilements et en utilisant des assertions d'approximation (assert_approx_equals) pour gérer les écarts de défilement/décalage fractionnaires (crrev.com/c/5097343). - Ajout de l'assistant
StringPrintfNonConstexpr()pour le distinguer deStringPrintf()lorsque les chaînes de format ne sont pas des constantes de compilation (crrev.com/c/4950568, Bug : 1371963). - L'échappement de la macro Rust
chromium::import!utilise désormais une fonction injective pour éviter les collisions dans les noms de cibles GN générés (crrev.com/c/5132119, Bug: 1512174). - L'implémentation
ScopedTempDirWithRetrya été nettoyée en ajoutant un constructeur et des retours anticipés dans le destructeur (crrev.com/c/5113843).
ChromeDriver 121
Nouvelles fonctionnalités
- Tests : ajout de la compatibilité pour l'exécution de tests ChromeDriver intégrés (
chromedriver_py_test) surchrome-headless-shellen plus du navigateur Chrome standard sur les robots de compilation. Cela inclut la possibilité de découvrir le binaire du navigateur en fonction du paramètre--browser-nameet d'exécuter conditionnellement des ensembles de tests spécifiques (crrev.com/c/4995189, crrev.com/c/4989442, Bug: 4358).
Correction de bugs
- Stabilité : la valeur par défaut de
KeyboardLayoutEnginea été initialisée surStubKeyboardLayoutEnginepour éviter les plantages de ChromeDriver causés par un accèsDCHECKdansKeyboardLayoutEngineManager::SetKeyboardLayoutEngine(crrev.com/c/5017859, Bug: 4625). - Stabilité : correction d'un problème de flakiness où ChromeDriver pouvait planter si le thread de session demandait à fermer une connexion après que le client avait déjà demandé à fermer la même connexion (crrev.com/c/4994636, Bug: 4606).
- Gestion des ressources : correction des fuites de ressources dans les tests d'intégration ChromeDriver (
RemoteBrowserTest) en s'assurant que le processus du navigateur est arrêté même si une exception est générée par une commande ChromeDriver (crrev.com/c/5009554, Bug 4614). - Gestion des ressources : logique implémentée dans les tests d'intégration ChromeDriver pour détecter et mettre fin à tous les processus de navigateur abandonnés par le processus ChromeDriver (crrev.com/c/5014093, Bug: 4617).
- Démarrage : correction d'un problème où
chrome-headless-shellrenvoyait une liste de cibles vide, empêchant la création de session, en ajoutant l'argumentdata:,à la ligne de commande du navigateur lorsque le nom du navigateur estchrome-headless-shell(crrev.com/c/5010392, crrev.com/c/5009535, Bug: 4615, Bug: 4358). - FedCM : ajout d'un nouvel événement pour notifier la fermeture d'une boîte de dialogue FedCM, afin de s'assurer que
dialogtypeet d'autres commandes ne renvoient pas de données obsolètes si la boîte de dialogue a été fermée en externe (par exemple, viaAbortController.abort) (crrev.com/c/5067504, Bug : 1506292). - Tests : correction et réactivation de tous les tests d'intégration ChromeDriver qui avaient été précédemment désactivés pour
chrome-headless-shellsur Windows (crrev.com/c/5027594, Bug 4358). - Tests : les assertions trop strictes ont été assouplies dans
testElementRegionTestpour s'aligner sur la norme WebDriver, ce qui a permis de résoudre les problèmes de fiabilité causés par les particularités de rendu du navigateur (crrev.com/c/5017865, Bug: 4526).
Modifications et refactorisations internes
- BiDi : mise à jour de la dépendance BiDi Mapper (crrev.com/c/4994305, bug 4226).
- L'utilisation de
IS_OZONE_{X11, WAYLAND}a été annulée au profit deOZONE_PLATFORM_*en raison d'un bug (crrev.com/c/5086571, annulation de crrev.com/c/5083096, Bug : 1500494). - Migration du code dans
commands_unittest.ccpour utiliserbase::BindLambdaForTestingau lieu debase::Passed, qui est obsolète (crrev.com/c/5078589, Bug : 1326449). - Refactorisation de
session.newpour extraire la gestion des capacités de code réutilisable (par exemple,testName,binary,browserName) dans une méthode dédiée et s'assurer que la commande respecte les capacités de la même manière que la commande classique (crrev.com/c/5004665, crrev.com/c/5001510, Bug: 4358, Bug: 4610). - Suppression de l'utilisation de l'en-tête
base/strings/string_piece_forward.hobsolète (crrev.com/c/5008994, Bug: 691162). - Préparation de la transition de
net::IOBuffervers une classe non propriétaire en utilisantnet::IOBufferWithSizepour les cas propriétaires (crrev.com/c/4996470, Bug: 1493389). base::RandBytesAsVector()a été introduit et utilisé pour éviter de stocker des valeurs binaires dans des chaînes (crrev.com/c/5018451).- Désactivation de plusieurs tests d'intégration Python qui échouaient systématiquement sur Mac pour éviter qu'ils n'entraînent des builds verts en raison de l'exonération de l'analyse LUCI (crrev.com/c/4998771, Bug : 1486604, Bug : 1486520, Bug : 1486474, Bug : 1481915).
- Renommage de
webdriver_tests_suite(etwpt_tests_suite) enchrome_wpt_testspour standardiser les conventions de nommage de la suite WPT sur les compilateurs d'essai Linux (crrev.com/c/5014293, Bug : 1474702). - La commande
ConfirmIdpLogindu pilote Web FedCM a été réutilisée pour créer une commandeClickDialogButtonplus extensible qui accepte un paramètreDialogButton(crrev.com/c/5003255, Bug: 1499341). - Mise à jour de la dépendance
crossbenchavec de nombreux correctifs et fonctionnalités, y compris une meilleure analyse du type de pilote, des stubs réseau et la compatibilité avec iOS (crrev.com/c/5009937). - Ajout de
#include <string>manquant àchrome_finder.hpour la conformité IWYU (crrev.com/c/4994605, Bug: 957519).
ChromeDriver 120
Nouvelles fonctionnalités
- BiDi : ajout de la compatibilité avec les commandes
session.newetsession.end, permettant aux utilisateurs de créer et de mettre fin à des sessions directement via les commandes BiDi (crrev.com/c/4941941, bug 4496). - BiDi : ajout de la prise en charge de la commande PureBiDi
session.status, permettant aux utilisateurs d'établir une connexion WebSocket non liée à une session et de récupérer l'état de la session (crrev.com/c/4938596, Bug : 4496). (Rétablissement après une précédente restauration dans crrev.com/c/4922097) - BiDi : la dépendance du mappeur BiDi a été mise à jour et alignée sur le nouveau processus d'exécution du mappeur simplifié (crrev.com/c/4952609, bug 4226).
- Capteurs : implémentation des commandes de capteur virtuel dans
browser_protocol.pdlet la couche CDP (domaine d'émulation), ajout de la prise en charge de la section "Automation" (Automatisation) de la spécification Generic Sensor (crrev.com/c/4770864, Bug : 1278377). - Capteurs : ajout de commandes d'extension ChromeDriver pour la gestion des capteurs virtuels, traduction des paramètres WebDriver en nouveaux appels CDP (crrev.com/c/4770866, Bug 1278377).
- Capteurs : ajout d'un chemin de code
content_shellpour la manipulation des capteurs virtuels viatestdriver.js, en contournant complètement ChromeDriver pour les tests Web (crrev.com/c/4770865, Bug 1278377). - Mesures d'atténuation du suivi : ajout de la compatibilité de ChromeDriver avec les mesures d'atténuation du suivi des rebonds (DIPS), ce qui permet d'automatiser la spécification
nav-tracking-mitigations(crrev.com/c/4873672, bug 1474656). (Remarque : Cette modification a été temporairement annulée en raison d'échecs de tests sur Mac dans crrev.com/c/4938394.)
Correction de bugs
- Démarrage : ajout de la découverte de Headless Shell à ChromeDriver, ce qui lui permet de rechercher le binaire
chrome-headless-shellsi la demande est effectuée via les capacités et qu'aucun chemin d'accès explicite n'est fourni (crrev.com/c/4987262, Bug 4358). (Rétablissement après une précédente restauration dans crrev.com/c/4984449) - WebSockets : implémentation d'une compatibilité partielle avec l'établissement d'une liaison de fermeture WebSocket, garantissant que ChromeDriver répond avec un frame
CLOSElorsqu'il en reçoit un de l'extrémité distante (crrev.com/c/4931500, Bug: 4499). - Autorisations :
options.disclaim_responsibilityest exposé en tant qu'indicateur de compilation pour permettre aux compilations de fournisseurs (comme Microsoft Teams) de le désactiver, ce qui empêche les invites d'autorisation macOS de bloquer l'automatisation des tests (crrev.com/c/4929495, Bug : 1223643). - Conformité à la norme C++ : correction du comportement indéfini (UB) détecté par UBSan lors de la conversion d'un double hors plage en int en ajoutant des vérifications de plage (crrev.com/c/4980055, Bug : 1394755).
- FedCM : l'ancienne syntaxe d'en-tête n'est plus acceptée, ce qui garantit la conformité avec la syntaxe
login-status-httpstandard (crrev.com/c/4957073, bug 1381501).
Modifications et refactorisations internes
- Ajout d'un test d'intégration
testReturnFrameElementpour vérifier le comportement de ChromeDriver concernant le traitement dewindow.frameElementcomme référence obsolète (crrev.com/c/4983549, Bug: 4477). - Amélioration de la journalisation en veillant à ce que ChromeDriver enregistre les chemins spécifiques où il tente de localiser le binaire du navigateur (crrev.com/c/4976116, Bug: 4539).
- Diverses fonctions
base::Timeont été renommées pour être plus descriptives (par exemple,FromDoubleT()est devenuFromSecondsSinceUnixEpoch()) (crrev.com/c/4956111). - Refactorisation du constructeur
net::StringIOBufferet des instanciationsIOBufferpour éviter les copies de chaînes inutiles et les allocations de longueur nulle (crrev.com/c/4938384, crrev.com/c/4959174). - Nettoyage de la gestion des chaînes en remplaçant
base::StrCatpar+le cas échéant et en utilisantbase::AppendHexEncodedByte()(crrev.com/c/4963465, crrev.com/c/4977165). DIR_SOURCE_ROOTa été renomméDIR_SRC_TEST_DATA_ROOTdans les tests//chrome*pour plus de clarté (crrev.com/c/4916045, Bug: 1264897).- Désactivation des tests
PureBidiTestinstables sur les compilateurs Mac (crrev.com/c/4983555, Bug: 1496826).
ChromeDriver 119
Nouvelles fonctionnalités
- BiDi : implémentation de la prise en charge de la résolution des références d'objets locaux faibles renvoyées par l'extrémité distante lors des appels de fonctions à distance (crrev.com/c/4886760, Bug 4536).
- FedCM : ajout de la commande
confirmidpsigninavec préfixe du fournisseur pour prendre en charge l'essai Origin Trial de l'API IDP Sign-In Status (crrev.com/c/4811725, Bug : 1451884).
Correction de bugs
- Émulation mobile : correction d'un problème lié aux appareils prédéfinis sans hints client (par exemple, les configurations plus anciennes), qui étaient cassés en étant remplis avec des valeurs par défaut appropriées (crrev.com/c/4887254, Bug: 4550).
- Classic : correction de la sérialisation des objets
MapetSet. Ils sont désormais correctement sérialisés en tant queObjectplutôt qu'en tant queCollection, car ils ne possèdent pas de propriétélength(crrev.com/c/4881378, Bug 4031). - Classic : la logique de téléchargement et d'utilisation de la dernière version compatible de ChromeDriver pendant les tests a été rétablie. Le système ne revient à des versions spécifiques qu'en cas de problèmes de compatibilité (crrev.com/c/4779613, en revenant à crrev.com/c/4778973).
- FedCM : les commandes d'automatisation du navigateur ont été normalisées en renommant
SigninenLogin(confirmidplogin) pour s'aligner sur les dernières discussions concernant la spécification FedCM (crrev.com/c/4901302, Bug : 1451884). - Tests : correction des tests FedCM qui échouaient lorsque les cookies tiers étaient désactivés en activant explicitement l'API IDP Sign-In Status lors de l'exécution des tests (crrev.com/c/4889802, Bug: 1484833).
- Tests : le code de remplacement de l'URL non valide
~NOTFOUNDa été remplacé par^NOTFOUNDdans les exécuteurs de tests pour se conformer aux prochaines modifications concernant l'application de la norme relative aux URL Chromium (crrev.com/c/4845589, Bug : 1416013).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour vers la version 0.4.27, ce qui permet de bénéficier des derniers correctifs et fonctionnalités (crrev.com/c/4862031, crrev.com/c/4890322).
- Remplacement de plusieurs API de pointeur/longueur dans
//urlparstd::string_viewpour améliorer la sécurité et la commodité (crrev.com/c/4897456). - L'utilitaire
generateWebDriverValueest désormais compatible avec l'option de sérialisation approfondie (serializationOptions.serialization: deep) fournie en mode natif par le protocole BiDi (crrev.com/c/4889644). - Ajout de tests d'intégration pour vérifier que la recherche sous une référence d'élément obsolète renvoie correctement une erreur "référence d'élément obsolète" (crrev.com/c/4886793, Bug: 4440).
- Amélioration de la mise en forme du style de code dans
call_function.js(crrev.com/c/4882511, Bug: 4031). - Amélioration des commentaires des utilisateurs en les informant explicitement lorsqu'ils se connectent via WebSockets que les pipes sont pris en charge et recommandés pour une meilleure fiabilité et sécurité (crrev.com/c/4882626, Bug: 3480).
- Mise à jour de la configuration de la suite WPT pour archiver
results.htmlpour les testswebdriver_tests_suite, ce qui permet d'obtenir une meilleure interface utilisateur pour afficher les résultats (crrev.com/c/4873223). - Correction de l'intégration des outils de développement à WebView en marquant les WebContents WebView et en définissant leur type d'outils de développement sur
popup_pageau lieu deother(crrev.com/c/4842093). - Le nom de la cible de compilation WPT
chrome_wpta été remplacé parchrome_wpt_testspour plus de cohérence, et la ciblewebdriver_wpt_testsredondante a été supprimée (crrev.com/c/4847474, Bug: 1474702). - Migration de
run_py_tests.pyde la bibliothèqueoptparseobsolète versargparse(crrev.com/c/4849411, Bug : 4557).
ChromeDriver 118
Nouvelles fonctionnalités
- Tests d'intégration : introduction de tests d'intégration C++ pour ChromeDriver, permettant de tester des classes spécifiques par rapport au trafic CDP réel, comblant ainsi le fossé entre les tests unitaires et les tests d'intégration Python (crrev.com/c/4707855, Bug 4528).
- Crossbench : la dépendance
crossbencha été mise à jour avec de nombreuses améliorations, y compris de nouveaux scénarios de référence de consommation d'énergie, une meilleure compatibilité avec les plates-formes et les appareils, un débogage amélioré et divers correctifs (crrev.com/c/4803743).
Correction de bugs
- Fonctionnalités : correction d'un problème qui empêchait l'affichage de
debuggerAddressdans les fonctionnalités renvoyées dans les configurations par défaut. Il est désormais correctement renvoyé pour prendre en charge la communication BiDi basée sur CDP de Selenium (crrev.com/c/4789068, Bug : 4533). - Capacités : ChromeDriver renvoie désormais les valeurs
platformNamestandards (par exemple, "linux", "windows", "mac") comme l'exige la spécification WebDriver (crrev.com/c/4797735, Bug 4548).
Modifications et refactorisations internes
- Le code migré dans
MockSocketpréfèrebase::span<>aux pointeurs bruts pour une sécurité renforcée (crrev.com/c/4832086). - Suppression des utilisations obsolètes de
base::raw_ptretbase::raw_refau profit de leurs formes non qualifiéesraw_ptretraw_refvia le nettoyage automatisé (crrev.com/c/4773481). - Rétablissement temporaire d'une modification qui utilisait toujours la dernière version de ChromeDriver, car elle provoquait des plantages sur les canaux stable/bêta de Windows (crrev.com/c/4778973, rétablissement de crrev.com/c/4777430).
- Configurations WPT (Web Platform Tests) ajustées, y compris la suppression des échecs de débogage uniquement dans
pointer_touch.pyet l'implémentation de la vérification de la mise au point côté navigateur pour les cadres cloisonnés (crrev.com/c/4844810, crrev.com/c/4572517). - Ajout de
#include <vector>manquant àclient_hints.hpour la conformité IWYU (crrev.com/c/4767547). - Migration des types de base spécifiques à Apple (
ScopedTypeRef,ScopedCFTypeRef,scoped_nsautorelease_pool) dans l'espace de nomsbase::apple::, en laissant des en-têtes de transfert temporaires pour Crashpad (crrev.com/c/4799213, crrev.com/c/4790744, crrev.com/c/4790741, crrev.com/c/4784010).
ChromeDriver 117
Nouvelles fonctionnalités
- Communication par canalisations : le mode de communication par défaut entre ChromeDriver et Chrome est passé de WebSockets à des canalisations (
--remote-debugging-in-pipeet--remote-debugging-out-pipe) sur toutes les plates-formes compatibles, y compris Windows (crrev.com/c/4634299, crrev.com/c/4628834, crrev.com/c/4635378, Bug : 3480). - BiDi : dépendance BiDi Mapper mise à jour (crrev.com/c/4670516, bug 4226).
Correction de bugs
- Stabilité : correction d'un accès au pointeur nul qui entraînait le plantage de ChromeDriver, ce qui entraînait des erreurs
ConnectionRefusedlors des tests (crrev.com/c/4675633, Bug 1457101). - Navigation : correction d'un problème qui empêchait la gestion uniforme des erreurs
NoSuchExecutionContextetNoSuchWindowde Chrome lors de la navigation. Les deux sont désormais correctement mappées pour réessayer l'opération (crrev.com/c/4667156, Bug : 4459). - Émulation mobile : correction de la logique d'inférence pour
clientHints.mobile. Elle est désormais correctement inférée à partir deuserAgentsur Android et définie sur "false" par défaut sur les autres plates-formes. Cela corrige un problème où les tablettes étaient incorrectement signalées comme mobiles (crrev.com/c/4649348, Bug : 4243). - Création de session : la création de session a été mise à jour pour renvoyer correctement le code d'erreur
SessionNotCreatedstandard en cas d'échec, en respectant strictement la spécification W3C WebDriver (crrev.com/c/4638223, Bug: 4379). Remarque : Cette modification a ensuite été annulée, car certains chemins de code spécifiques nécessitent des codes d'erreur différents (crrev.com/c/4651188).
Modifications et refactorisations internes
- Élimination des scripts manuels du processus de publication de ChromeDriver, car ChromeDriver est désormais entièrement intégré au processus de publication de Chrome et disponible via l'infrastructure Chrome for Testing (crrev.com/c/4520687, Bug: 4142).
- L'infrastructure WPT (Web Platform Tests) migrée utilise désormais le harnais
wptrunnerofficiel au lieu du harnaisrun_webdriver_tests.pypersonnalisé, ce qui améliore considérablement la vitesse et la fiabilité de l'exécution. Elle garantit également que ChromeDriver redémarre entre les tests pour isoler les plantages (crrev.com/c/4723147, crrev.com/c/4676070, crrev.com/c/4639168). - Refactorisation approfondie de
ChromeLauncheret des classes associées pour prendre en charge la transition vers les pipes, en réduisant le couplage avecDevToolsHttpClientet en déplaçant la logique WebSocket dans des branches dédiées (crrev.com/c/4632801, crrev.com/c/4674345). - Le champ
BrowserInfo.is_headlesstrompeur a été renomméBrowserInfo.is_headless_shellpour plus de clarté (crrev.com/c/4650452, Bug: 4358). - Remplacement de diverses méthodes
base::Valueobsolètes par les équivalentsbase::Value::Dictmodernes (par exemple,FindDouble(),Set(),size()) dans l'ensemble du code (crrev.com/c/4258936, crrev.com/c/4336805, crrev.com/c/4461067).112.0.5603.0, 113.0.5653.0, 114.0.5733.0 - L'utilisation de
[w]ctype.ha été supprimée au profit d'utilitaires de chaîne de base plus sûrs, et de nouvelles fonctionnalités ont été implémentées pourbase::expected(crrev.com/c/4749459, crrev.com/c/4755226). - Implémentation des commandes d'automatisation
get_fedcm_dialog_titleetselect_fedcm_accountdansTestDriverpour les WPT FedCM (crrev.com/c/4618303). - Mise à jour des scripts de compilation du mappeur BiDi pour qu'ils fonctionnent correctement, quel que soit le répertoire de travail actuel (crrev.com/c/4670550).
- Les fichiers
/chrome/test/chromedriverconvertis utilisent ARC (Automatic Reference Counting) dans les versions macOS, en ajoutant le boilerplate nécessaire (crrev.com/c/4663602). - Tentative de désactivation de la communication par canalisation par défaut via un commit de validation automatique, mais la modification n'a touché que la configuration sans modifier le comportement de canalisation par défaut introduit précédemment (crrev.com/c/4683947).
ChromeDriver 116
Nouvelles fonctionnalités
- FedCM : ajout d'une nouvelle fonctionnalité permettant aux clients de vérifier si ChromeDriver est compatible avec les commandes FedCM sans avoir à les exécuter et à détecter les erreurs (crrev.com/c/4624924, Bug 1356159).
- Tests : la réutilisation de la fenêtre de test a été activée pour les tests testharness exécutés via ChromeDriver dans
wptrunnerafin d'évaluer son impact sur les performances et l'instabilité (crrev.com/c/4515180, Bug 1394572).
Correction de bugs
- Conformité à la norme C++ : correction du comportement indéfini causé par l'utilisation incorrecte d'énumérations à portée (enum class) directement dans les chaînes de format, en réponse aux nouveaux avertissements du compilateur Clang (crrev.com/c/4628112, Bug: 1456289).
- FedCM : correction d'un cas limite qui empêchait
setdelayenabledde fonctionner correctement, ce qui pouvait être à l'origine de l'instabilité des tests (crrev.com/c/4606064, bug 1453412).
Modifications et refactorisations internes
- BiDi : la dépendance du mappeur BiDi a été mise à jour et le script de compilation a été modifié pour extraire la dernière révision de "main" par défaut (crrev.com/c/4615087, crrev.com/c/4615791, Bug 4226).
- ChromeDriver est désormais en mesure d'ouvrir et d'écrire tous les fichiers en utilisant explicitement l'encodage UTF-8 (crrev.com/c/4614522).
- Refactorisation de
ChromeImplpour éliminer sa dépendance àDevToolsHttpClientet réduction de l'utilisation deSyncWebSocketFactoryetBrowserInfoen vue de la communication via des canaux au lieu de WebSockets (crrev.com/c/4571690, crrev.com/c/4571199, Bug: 3480). - Suppression du "mode par défaut" obsolète pour les cadres clôturés et mise à jour des tests associés pour activer le nouvel indicateur de fonctionnalité, poursuivant la migration vers les enchères FLEDGE (crrev.com/c/4558645).
- Amélioration des tests FedCM en remplaçant les assertions
WaitForConditiongénériques parassertTruepour indiquer clairement quand des délais d'attente se produisent (crrev.com/c/4590211). - Marquage des avertissements
raw_ptrinstables connus dans les tests unitaireslinux-rel(crrev.com/c/4598070). - Fichier OWNERS mis à jour pour le mappeur BiDi (crrev.com/c/4614518).
ChromeDriver 115
Nouvelles fonctionnalités
- Émulation mobile : prise en charge des User-Agent Client Hints dans l'émulation mobile, permettant à ChromeDriver d'analyser les indications client à partir des capacités et des préréglages, et de les transmettre à Chrome (crrev.com/c/4498667, crrev.com/c/4466129, Bug: 4243).
- Émulation mobile : les préréglages d'émulation mobile ont été mis à jour pour utiliser la version majeure du navigateur hôte au lieu de la version ChromeDriver lors du remplacement de la chaîne de format
%sdans l'user-agent (crrev.com/c/4502850, Bug 4243). - Configuration : ajout de la compatibilité avec le téléchargement d'une version spécifique de ChromeDriver pour un canal donné, ce qui améliore les scénarios d'automatisation dans lesquels ChromeDriver s'exécute sur une plate-forme différente (comme Android/WebView) de l'hôte (crrev.com/c/4550281).116.0.5791.0
Correction de bugs
- Classic : correction d'un problème qui entraînait le renvoi incorrect d'un
UnknownErrorau lieu de l'erreurNoSuchElementstandard en cas d'échec de la résolution d'un nœud (crrev.com/c/4508952, Bug 4440). - Émulation mobile : des assertions plus strictes ont été ajoutées aux préréglages d'émulation mobile pour s'assurer que l'indicateur
clientHints.mobileest défini sur "true" si la chaîneuserAgentcontient "Mobile" (crrev.com/c/4507142, Bug: 4243). - Émulation mobile : les remplacements
DeviceMetricsont été migrés pour utiliser la commande CDPEmulation.setDeviceMetricsOverrideau lieu de l'équivalent de domainePageobsolète (crrev.com/c/4502614, Bug : 4243).
Modifications et refactorisations internes
- BiDi : la dépendance BiDi Mapper a été mise à jour, ce qui permet d'activer les fonctionnalités de sérialisation approfondie (crrev.com/c/4535936, crrev.com/c/4512195).
- Suppression de la méthode
Connectobsolète deDevToolsClienten vue de la migration de ChromeDriver pour communiquer via des canaux (crrev.com/c/4521485, Bug: 3480). - Migration de la base de code pour privilégier
base::Value::Dictpar rapport àbase::Valueet remplacement des méthodes obsolètes telles queFindStringKey(),SetKey()etSetByDottedPath()(crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150). - Utilisation des fonctions
string_util.hà la place de[w]ctype.hpour des conversions de type plus sûres (crrev.com/c/4529187). - La logique de chargement des fichiers de seed a été modifiée pour utiliser des chemins absolus afin d'assurer la cohérence lorsque les scripts et Chrome s'exécutent à différents emplacements (crrev.com/c/4504656).
- Suppression de la méthode
CallAsyncFunction()inutilisée deweb_view.h(crrev.com/c/4518363, Bug: 3376). - Le nom
base::raw_ptra été automatiquement remplacé parraw_ptrpour respecter les préférences du guide de style (crrev.com/c/4476651).
ChromeDriver 114
Nouvelles fonctionnalités
- Classique : les informations
MobileDeviceont été transmises àMobileEmulationOverrideManagerpour préparer le terrain pour les futurs remplacements de Hints client et d'UserAgent (crrev.com/c/4447524). - Tests : ajout de fixtures de test pour ChromeDriver (crrev.com/c/4459939).
Correction de bugs
- Sans interface graphique : correction d'un plantage dans le nouveau mode sans interface graphique en ignorant silencieusement les demandes d'aperçu avant impression scriptées (par exemple,
window.print()), en alignant le comportement sur l'ancien mode sans interface graphique (crrev.com/c/4436313, Bug 4385). - Fonctionnalités : correction d'un bug d'utilisation après déplacement dans les fonctionnalités ChromeDriver (crrev.com/c/4462094, Bug 4243).
- DevTools : suppression d'un
DCHECKdansDevToolsClientImpl::SendCommandInternalpour éviter les plantages lorsque la connexion aux outils de développement est interrompue, car il ne s'agit pas d'une violation d'invariant (crrev.com/c/4370486, Bug 4385).
Modifications et refactorisations internes
- BiDi : mise à jour de la dépendance BiDi Mapper (crrev.com/c/4418727).
- Correction de plusieurs avertissements de pointeur orphelin lors de l'exécution des tests unitaires en gérant correctement les références non propriétaires et la destruction locale dans les tests
WebViewImplet du journaliseur de performances (crrev.com/c/4374824, crrev.com/c/4368179). - Migration de la codebase pour utiliser la nouvelle API
base::Valuev2, en remplaçant les méthodes obsolètes telles queValue::SetPath(),Value::SetStringPath()etbase::ListValue(crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520). - Toutes les utilisations de
base::GUIDont été remplacées parbase::Uuidpour s'aligner sur le changement de nom de la bibliothèque de base principale (crrev.com/c/4455083). - Divers nettoyages de code ont été effectués, y compris en raccourcissant le code, en utilisant des opérations monadiques pour
expected, en supprimant le code mort et en corrigeant les violations de style (crrev.com/c/4475368, crrev.com/c/4464199). - Mise à jour des tests impliquant des cadres clôturés pour utiliser l'attribut
configau lieu de l'attributsrcobsolète (crrev.com/c/4382231). - Suppression de l'utilisation inefficace de
ShadowDOMV0(crrev.com/c/4388302). - L'ajout d'un indicateur pour un correctif PDF Skia (
SK_IGNORE_PDF_EOF_NEWLINE_FIX) a été annulé pour permettre le rebaselining (crrev.com/c/4401451). - Mise à jour du propriétaire du script de test ChromeDriver et ajustements pour générer le fichier JSON de configuration exclusivement pour pinpoint (crrev.com/c/4437492, crrev.com/c/4298554).
- Ajout d'une inclusion manquante (
<cstring>) pourstd::strlendansweb_view_impl.ccafin de corriger un problème de compilation IWYU (crrev.com/c/4376772). - Suppression d'un fichier de test inutilisé (
orientation_test.html) (crrev.com/c/4335668).
ChromeDriver 113.0.5672.63
Compatible avec Chrome 113
- Problème 4205 résolu : mêmes ID d'objet dans les versions classique et bidirectionnelle [Pri-1]
- Problème 4302 résolu : ne pas supposer que Mapper se trouve dans le premier onglet d'ExecuteGetWindowHandles [Pri-1]
- Résolution du problème 4356 : Chrome 110 n'utilise pas la valeur de préférence "download.default_directory" [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 113.0.5672.24
Compatible avec Chrome 113
- Problème 4205 résolu : mêmes ID d'objet dans les versions classique et bidirectionnelle [Pri-1]
- Problème 4302 résolu : ne pas supposer que Mapper se trouve dans le premier onglet d'ExecuteGetWindowHandles [Pri-1]
- Résolution du problème 4356 : Chrome 110 n'utilise pas la valeur de préférence "download.default_directory" [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 112.0.5615.49
Compatible avec Chrome 112
- Problème 3517 résolu : activer la fonctionnalité d'impression pour les navigateurs non headless [Pri-]
- Résolution du problème 4419 : surcharge importante sur Speedometer lors de l'utilisation de chromedriver [Pri-3]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 112.0.5615.28
Compatible avec Chrome 112
- Problème 4357 résolu : problème de session Chromedriver version 110.0.5481.77 avec les options --headless et --user-data-dir. [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 111.0.5563.64
Compatible avec la version 111 de Chrome
- Problème résolu 4216 : Exécuter ChromeDriver avec un BiDiMapper personnalisé [Pri-]
- Problème 4300 résolu : le handle de fenêtre est interopérable entre les versions classique et bidirectionnelle [Pri-]
- Problème 4325 résolu : la gestion de toJSON dans jsonSerialize de call_function.js s'écarte de la norme. [Pri-]
- Résolution du problème 4330 : échec de DCHECK dans DevToolsClientImpl::AddListener [Pri-]
- Problème résolu 4357 : Problème de session ChromeDriver avec les options --headless et --user-data-dir [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 111.0.5563.41
Compatible avec la version 111 de Chrome
- Problème résolu 4357 : Problème de session ChromeDriver avec les options --headless et --user-data-dir [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 111.0.5563.19
Compatible avec la version 111 de Chrome
- Problème résolu 4216 : Exécuter ChromeDriver avec un BiDiMapper personnalisé [Pri-]
- Problème 4300 résolu : le handle de fenêtre est interopérable entre les versions classique et bidirectionnelle [Pri-]
- Problème 4325 résolu : la gestion de toJSON dans jsonSerialize de call_function.js s'écarte de la norme. [Pri-]
- Résolution du problème 4330 : échec de DCHECK dans DevToolsClientImpl::AddListener [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 110.0.5481.77
Compatible avec Chrome 110
- Problème résolu 4193 : Échec du démarrage d'une nouvelle session sur Android 13 [Pri-]
- Résolution du problème 4272 : WebSocket doit traiter le code 0 comme une indication de FIN [Pri-]
- Problème 4276 résolu : correction des problèmes de connectivité dans ChromeDriver [Pri-]
- Problème résolu 4295 : ChromeDriver avec
"webSocketUrl": trueest instable [Pri-] - Problème résolu 4297 : ChromeDriver Bidi sérialise de manière incorrecte [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 110.0.5481.30
Compatible avec Chrome 110
- Problème résolu 4193 : Échec du démarrage d'une nouvelle session sur Android 13 [Pri-]
- Résolution du problème 4272 : WebSocket doit traiter le code 0 comme une indication de FIN [Pri-]
- Problème 4276 résolu : correction des problèmes de connectivité dans ChromeDriver [Pri-]
- Problème résolu 4295 : ChromeDriver avec
"webSocketUrl": trueest instable [Pri-] - Problème résolu 4297 : ChromeDriver Bidi sérialise de manière incorrecte [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 109.0.5414.74
Compatible avec Chrome version 109
- Problème 4179 résolu : la session BiDi doit accepter plusieurs connexions [Pri-]
- Problème 4203 résolu : améliorer les informations sur les crédits [Pri-]
- Problème 4263 résolu : plantage sur Meta+A [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 109.0.5414.25
Compatible avec Chrome version 109
- Problème 4179 résolu : la session BiDi doit accepter plusieurs connexions [Pri-]
- Problème 4203 résolu : améliorer les informations sur les crédits [Pri-]
- Problème 4263 résolu : plantage sur Meta+A [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 108.0.5359.71
Compatible avec la version 108 de Chrome Pour en savoir plus, consultez les notes de version.
ChromeDriver 108.0.5359.22
Compatible avec Chrome 108
- Problème 4204 résolu : correction de l'échec du test WPT test_top_level_and_one_child [Pri-]
- Problème 4215 résolu : renommer la compilation chromedriver_mac64_m1 en chromedriver_mac_arm64 [Pri-]
- Résolution du problème 4221 : plantage lorsqu'une commande de clic ferme le navigateur [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 107.0.5304.62
Compatible avec Chrome version 107
Pour en savoir plus, consultez les notes de version.
ChromeDriver 107.0.5304.18
Compatible avec Chrome version 107
- Résolution du problème 4180 : interdiction de gérer les commandes BiDi tant que BiDiMapper n'a pas démarré [Pri-]
- Résolution du problème 4198 : ChromeDriver BiDi ne doit pas supposer que BiDiMapper se trouve toujours dans le premier onglet [Pri-]
- Problème 4207 résolu : erreur WebDriver lors de l'exécution de WPT [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 106.0.5249.61
Compatible avec la version 106 de Chrome
Pour en savoir plus, consultez les notes de version.
ChromeDriver 106.0.5249.21
Compatible avec la version 106 de Chrome
- Problème résolu 4016 : Ajouter la compatibilité bidirectionnelle de base à ChromeDriver (basée sur Mapper) [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 105.0.5195.52
Compatible avec Chrome 105
Pour en savoir plus, consultez les notes de version.
ChromeDriver 105.0.5195.19
Version de Chrome compatible
Pour en savoir plus, consultez les notes de version.
ChromeDriver 104.0.5112.79
Compatible avec Chrome 104
Pour en savoir plus, consultez les notes de version.
ChromeDriver 104.0.5112.29
Compatible avec Chrome 104
- Résolution du problème 4121 : la commande WebDriver échoue parfois avec le message "unexpected command response" (réponse de commande inattendue) [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 104.0.5112.20
Compatible avec Chrome 104
- Résolution du problème 4121 : la commande WebDriver échoue parfois avec le message "unexpected command response" (réponse de commande inattendue) [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 103.0.5060.134
Compatible avec Chrome 103
- Problème résolu 4048 : frame cible détaché [Pri-]
- Résolution du problème 4121 : la commande WebDriver échoue parfois avec le message "unexpected command response" (réponse de commande inattendue) [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 103.0.5060.53
Compatible avec Chrome 103
- Problème résolu 4048 : frame cible détaché [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 103.0.5060.24
Compatible avec Chrome 103
Pour en savoir plus, consultez les notes de version.
ChromeDriver 102.0.5005.61
Compatible avec Chrome 102
- Problème 1309282 résolu : chromedriver ne prend pas en charge les commutateurs à valeurs multiples [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 102.0.5005.27
Compatible avec Chrome 102
- Problème 1309282 résolu : chromedriver ne prend pas en charge les commutateurs à valeurs multiples [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 101.0.4951.41
Compatible avec Chrome 101
- Résolution du problème 4046 : DCHECK détecté lors de l'ajout d'un frame cloisonné vide [Pri-]
- Problème 4080 résolu : Échec du passage à un frame imbriqué [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 101.0.4951.15
Compatible avec Chrome 101
- Résolution du problème 4046 : DCHECK détecté lors de l'ajout d'un frame cloisonné vide [Pri-]
- Problème 4080 résolu : Échec du passage à un frame imbriqué [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 100.0.4896.60
Compatible avec la version 100 de Chrome
- Problème résolu 4002 : Prise en charge des cadres clôturés [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 100.0.4896.20
Compatible avec la version 100 de Chrome
- Problème résolu 4002 : Prise en charge des cadres clôturés [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 99.0.4844.51
Compatible avec Chrome 99
Pour en savoir plus, consultez les notes de version.
ChromeDriver 99.0.4844.35
Compatible avec Chrome 99
- RÉTABLIE !!! Résolution du problème 2269 : impossible d'utiliser des caractères non BMP (points de code au-dessus de U+FFFF) [Pri-3]
- Problème résolu chromium:1295243 : régression dans ChromeDriver sendKeys [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 99.0.4844.17
Compatible avec Chrome 99
Pour en savoir plus, consultez les notes de version.
ChromeDriver 98.0.4758.102
Compatible avec Chrome 98
- Problème 3933 résolu : le clic sur le bord de la fenêtre d'affichage est inefficace sans erreur [Pri-]
- RÉTABLIE !!! Résolution du problème 2269 : impossible d'utiliser des caractères non BMP (points de code au-dessus de U+FFFF) [Pri-3]
- Problème résolu chromium:1295243 : régression dans ChromeDriver sendKeys [Pri-1]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 98.0.4758.80
Compatible avec Chrome 98
- Problème 3933 résolu : le clic sur le bord de la fenêtre d'affichage est inefficace sans erreur [Pri-]
- Résolution du problème 2269 : impossible d'utiliser des caractères non BMP (points de code au-dessus de U+FFFF) [Pri-3]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 98.0.4758.48
Compatible avec Chrome 98
- Problème 3933 résolu : le clic sur le bord de la fenêtre d'affichage est inefficace sans erreur [Pri-]
- Résolution du problème 2269 : impossible d'utiliser des caractères non BMP (points de code au-dessus de U+FFFF) [Pri-3]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 97.0.4692.71
Compatible avec Chrome version 97
- Problème 3878 résolu : meilleure gestion des coordonnées fractionnaires des éléments pour le clic sur un élément [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 97.0.4692.36
Compatible avec Chrome version 97
- Problème 3878 résolu : meilleure gestion des coordonnées fractionnaires des éléments pour le clic sur un élément [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 97.0.4692.20
Compatible avec Chrome version 97
- Problème 3878 résolu : meilleure gestion des coordonnées fractionnaires des éléments pour le clic sur un élément [Pri-]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 96.0.4664.45
Compatible avec la version 96 de Chrome
- Résolution du problème 3445 : Impossible d'accéder aux éléments d'un iFrame à l'intérieur d'une racine fantôme [Pri-3]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 96.0.4664.35
Compatible avec la version 96 de Chrome
- Résolution du problème 3445 : Impossible d'accéder aux éléments d'un iFrame à l'intérieur d'une racine fantôme [Pri-3]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 96.0.4664.18
Compatible avec la version 96 de Chrome
- Résolution du problème 3445 : Impossible d'accéder aux éléments d'un iFrame à l'intérieur d'une racine fantôme [Pri-3]
Pour en savoir plus, consultez les notes de version.
ChromeDriver 95.0.4638.69
Compatible avec la version 95 de Chrome
- Problème 3857 résolu : l'en-tête d'hôte ou l'en-tête d'origine est spécifié et ne figure pas sur la liste blanche ou sur localhost [Pri-1]
- Ajout de l'argument
--allowed-origins
Pour en savoir plus, consultez les notes de version.
ChromeDriver 95.0.4638.54
Compatible avec la version 95 de Chrome
- Problème 3857 résolu : l'en-tête d'hôte ou l'en-tête d'origine est spécifié et ne figure pas sur la liste blanche ou sur localhost [Pri-1]
- Ajout de l'argument
--allowed-origins
Pour en savoir plus, consultez les notes de version.
ChromeDriver 95.0.4638.17
Compatible avec la version 95 de Chrome
- Problème 3857 résolu : l'en-tête d'hôte ou l'en-tête d'origine est spécifié et ne figure pas sur la liste blanche ou sur localhost [Pri-1]
- Ajout de l'argument
--allowed-origins
Pour en savoir plus, consultez les notes de version.
ChromeDriver 95.0.4638.10
Compatible avec la version 95 de Chrome
- Problème 3857 résolu : l'en-tête d'hôte ou l'en-tête d'origine est spécifié et ne figure pas sur la liste blanche ou sur localhost [Pri-1]
- Ajout de l'argument
--allowed-origins
Pour en savoir plus, consultez les notes de version.
ChromeDriver 94.0.4606.113
Compatible avec la version 94 de Chrome
Pour en savoir plus, consultez les notes de version.
ChromeDriver 94.0.4606.61
Compatible avec la version 94 de Chrome
Pour en savoir plus, consultez les notes de version.
ChromeDriver 94.0.4606.41
Compatible avec la version 94 de Chrome
Pour en savoir plus, consultez les notes de version.
ChromeDriver 93.0.4577.63
Compatible avec Chrome 93
Pour en savoir plus, consultez les notes de version.
ChromeDriver 93.0.4577.15
Compatible avec Chrome 93
Pour en savoir plus, consultez les notes de version.
ChromeDriver 92.0.4515.107
Compatible avec Chrome 92
Pour en savoir plus, consultez les notes de version.
ChromeDriver 92.0.4515.43
Compatible avec Chrome 92
- Problème 3389 résolu : validation de l'hôte pour les requêtes ChromeDriver
Pour en savoir plus, consultez les notes de version.
ChromeDriver 91.0.4472.101
Compatible avec Chrome 91
- Problème résolu 1205107 : Impossible d'obtenir la valeur de l'attribut pour les champs de l'application Web.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 91.0.4472.19
Compatible avec Chrome 91
- Problème 3744 résolu : SendKeys() et Click() échouent silencieusement après la navigation vers un lien
- Problème 3746 résolu : le point de terminaison de l'attribut met à jour les valeurs de manière incorrecte
Pour en savoir plus, consultez les notes de version.
ChromeDriver 90.0.4430.24
Compatible avec Chrome 90
- Résolution du problème 3708 : GetElementLocation's inView échoue pour les éléments du Shadow DOM
- Problème 3721 résolu : collecte du journal des performances pour le service worker lorsqu'il est activé
- Problème 3731 résolu : AdbImpl::GetPidByName ne fonctionne pas correctement sur les systèmes d'exploitation Android non standards, comme sur OnePlus
- Problème 3733 résolu : échec catastrophique avec le domaine sur localhost
- Résolution du problème 3734 : le pilote doit générer une erreur lors de la tentative de définition d'un cookie sur un domaine incorrect
- Résolution du problème 3743 : refactoriser la fonction d'appel et corriger le problème de suppression d'éléments
Pour en savoir plus, consultez les notes de version.
ChromeDriver 89.0.4389.23
Compatible avec Chrome 89
- Problème résolu 3667 : délai dépassé lors de la réception d'un message du moteur de rendu
- Résolution du problème 3675 : GetElementLocation utilise la méthode inView qui gère mal les valeurs booléennes en tant que tableaux
- Résolution du problème 3682 : GetElementRegion renvoie une taille incorrecte pour les éléments partiellement hors du champ de vision
- Problème 3690 résolu : ChromeDriver échoue si les extensions utilisent l'API chrome.windows
Pour en savoir plus, consultez les notes de version.
ChromeDriver 88.0.4324.96
Compatible avec Chrome 88
- Problème 3641 résolu : la page ne se charge pas/ne s'affiche pas lorsque la fenêtre du navigateur n'est pas au premier plan avec Chrome Beta v87 et chromedriver v(87/86)
Pour en savoir plus, consultez les notes de version.
ChromeDriver 88.0.4324.27
Compatible avec Chrome 88
- Problème 3611 résolu : la sortie
getText()dans Protractor est différente de<element>.innerText - Problème 3625 résolu : améliorer la compatibilité des captures d'écran des éléments
- Problème 3628 résolu : référence d'élément obsolète et URL incorrecte signalée avec une autre URL dans son chemin d'accès
- Problème 3631 résolu : ajout de la compatibilité avec la fonctionnalité
webauthn:extension:largeBlob - Résolution du problème 3635 : Chromedriver 86 –
chromedriver.quit()ne semble pas transmettre correctement l'événement de déchargement - Résolution du problème 3649 : la copie du texte sélectionné dans le presse-papiers ne fonctionne pas sous Windows 10 en mode sans affichage
Pour en savoir plus, consultez les notes de version.
ChromeDriver 87.0.4280.88
Compatible avec Chrome version 87
- Problème 3641 résolu : la page ne se charge pas/ne s'affiche pas lorsque la fenêtre du navigateur n'est pas au premier plan avec Chrome Beta v87 et chromedriver v(87/86)
- Problème 3657 résolu : le délai d'attente du navigateur d'arrière-plan de la capture d'écran a expiré
Pour en savoir plus, consultez les notes de version.
ChromeDriver 87.0.4280.20
Compatible avec Chrome version 87
- Problème 2421 résolu : suppression des anciens canaux de redirection de port sur le serveur adb Android
- Problème 3474 résolu : la liste des appareils mobiles émulés doit être mise à jour
- Problème 3507 résolu : implémenter "get computed role"
- Résolution du problème 3508 : implémenter "get computed label"
- Résolution du problème 3584 : renommer l'option de ligne de commande ChromeDriver --whitelisted-ips
- Problème 3588 résolu : connexion WebSocket bidirectionnelle
- Résolution du problème 3594 : la navigation se termine prématurément si l'OOPIF se charge avant la page principale
- Problème 3598 résolu : option de ligne de commande permettant de transférer le port des outils de développement vers le socket webview_devtools_remote
- Résolution du problème 3608 : l'adresse debuggerAddress de Chromedriver n'est pas compatible avec IPv6
Pour en savoir plus, consultez les notes de version.
ChromeDriver 86.0.4240.22
Compatible avec la version 86 de Chrome
- Résolution du problème 3370 : arrêt de Chrome en douceur pour que le cookie soit correctement enregistré dans le fichier de persistance SQLite
- Problème 3401 résolu : la fonction JS "Get Element Location" ne localise pas le centre visible de l'élément
- Problème 3462 résolu : la touche CMD ne fonctionne pas pour sendKeys sur MAC
- Problème résolu 3541 : Améliorer le journal entre le client et ChromeDriver
- Problème résolu 3559 : Afficher la version de Chrome lorsque ChromeDriver signale une incompatibilité
Pour en savoir plus, consultez les notes de version.
ChromeDriver 85.0.4183.87
Compatible avec la version 85 de Chrome
- Résolution du problème 3578 : Chrome 85 n'autorise plus l'interaction fluide avec les fenêtres lorsqu'une boîte de dialogue d'alerte est ouverte
Pour en savoir plus, consultez les notes de version.
ChromeDriver 85.0.4183.83
Compatible avec la version 85 de Chrome
- Problème 3577 résolu : ChromeDriver 85 ne détecte pas le changement de répertoire Chrome (C:\Program Files)
Pour en savoir plus, consultez les notes de version.
ChromeDriver 85.0.4183.38
Compatible avec la version 85 de Chrome
- Problème 3214 résolu : ChromeDriver78 : Sendkeys réinitialise la sélection de texte avec contenteditable
- Problème résolu 3376 : supprimer la commande LaunchApp de ChromeDriver
- Problème 3432 résolu : parfois,
NavigationTrackerne détecte pas la fin du chargement de la page - Résolution du problème 3481 : nouveau point de terminaison d'impression conforme à la spécification W3C
- Problème 3488 résolu : driver.get ne génère pas d'erreur lorsque le proxy est mal configuré
- Problème résolu 3502 : Utiliser
document.hasFocus()pour vérifier si l'élément est sélectionné - Problème résolu 3515 : selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message
Pour en savoir plus, consultez les notes de version.
ChromeDriver 84.0.4147.30
Compatible avec Chrome 84
- Problème 3420 résolu : chromedriver ne répond plus après le basculement vers la fenêtre d'impression
- Problème 3421 résolu : le pilote renvoie du texte cyrillique sans style
- Résolution du problème 3422 : GetElementText ne fonctionne pas avec le prototype 1.6.0.3
- Problème 3434 résolu : impossible d'obtenir les messages "assert" à partir des journaux "browser"
Pour en savoir plus, consultez les notes de version.
ChromeDriver 83.0.4103.39
Compatible avec la version 83 de Chrome
- Mise à jour de Chromedriver pour qu'il fonctionne correctement avec prototype.js.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 83.0.4103.14
Compatible avec la version 83 de Chrome
- Problème résolu 1778 : Abandonner launchApp de ChromeDriver
- Problème 2520 résolu : InitSession peut attendre indéfiniment lorsque Chrome ne répond pas
- Problème résolu 3120 : téléchargement en mode headless depuis un nouvel onglet
- Problème résolu 3234 : Confirmer le point-virgule trouvé avant la sous-chaîne
- Problème résolu 3240 : ExecuteGetElementRect ne vérifie pas l'état renvoyé par GET_SIZE
- Problème 3331 résolu : la méthode
get_cookies()renvoie des clés "expiry" de type double, mais devrait être int64 en mode W3C - Problème résolu 3332 : le délai avant nouvelle tentative est enregistré comme grave
- Problème 3339 résolu : Chromedriver s'est arrêté de manière inattendue avec le code null, signal SIGTRAP
- Problème 3351 résolu : améliorer le message sur les considérations de sécurité
- Problème 3352 résolu : prise en charge de SendKeys pour les éléments de couleur
- Problème 3353 résolu : "Wait for Pending Navigation" (Attendre la navigation en attente) se poursuit après la destruction du contexte du frame
- Résolution du problème 3375 : Chromedriver v80 se bloque sur getPageSource sur certains sites
- Problème résolu 3383 : ChromeDriver 80+ sur Windows semble quitter ou bloquer certaines commandes d'élément ou de clic
- Problème 3399 résolu : supprimer la vérification wasThrown
ChromeDriver 81.0.4044.138
Compatible avec la version 81 de Chrome
- Mise à jour de Chromedriver pour qu'il fonctionne correctement avec prototype.js.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 81.0.4044.69
Compatible avec la version 81 de Chrome
- Correction : Chromedriver plante sur getPageSource sur certains sites.
- Correction : plantages de ChromeDriver sur certaines commandes d'élément ou de clic.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 81.0.4044.20
Compatible avec la version 81 de Chrome
- Correction d'une erreur lors de la tentative d'obtention de l'emplacement d'un élément HTML.
- Les commandes "Get Cookie" et "Add Cookie" sont désormais spécifiques aux frames.
- Résolution de certains problèmes qui se produisent avec les sites qui redéfinissent les objets JavaScript standards.
- ChromeDriver continuera d'attendre la fin du chargement après avoir reçu un message "Target Closed" (Cible fermée).
- Chromedriver renvoie désormais un code d'erreur conforme aux spécifications pour les délais d'attente
- Correction : temps de réponse ChromeDriver anormalement lent pour la commande NewSession.
- Les délais avant expiration définis par l'utilisateur et supérieurs à 10 minutes sont désormais acceptés.
- Correction : ChromeDriver ne peut pas se connecter aux outils de développement en raison d'une incompatibilité entre IPv4 et IPv6.
- Restauration de l'ordre de recherche du binaire Chrome sur Linux.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 80.0.3987.106
Compatible avec la version 80 de Chrome
- Restauration de l'ordre de recherche du binaire Chrome sur Linux
Pour en savoir plus, consultez les notes de version.
ChromeDriver 80.0.3987.16
Compatible avec la version 80 de Chrome
- Correction du problème d'annulation du chargement de la page lors de l'utilisation d'un proxy.
- Chromedriver attend désormais le chargement du frame actuel.
- Le journal ChromeDriver inclut le port utilisé par le pilote.
- Enabled SetGeoLocation for w3c mode.
- Ajout du texte d'alerte manquant pour l'état UnexpectedAlertOpen.
- Amélioration du message lorsque l'extension CRX2 est chargée.
- Correction d'une condition de concurrence potentielle dans ExecuteGetPageSource.
- ChromeDriver ajoutera l'indicateur "--ignore-certificate-errors" lorsque la fonctionnalité acceptInsecureCerts est définie sur "true".
- Mise à jour du message d'erreur et de l'état de retour en cas d'absence de contexte d'exécution
- Correction : ChromeDriver peut se bloquer indéfiniment en attendant la navigation en cours.
- Ajout de l'attribut SameSite à AddCookie et GetCookie.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 79.0.3945.36
Compatible avec la version 79 de Chrome
Inclut la modification suivante par rapport à la version 79.0.3945.16 :
- Correction du calcul incorrect des coordonnées des éléments
Pour en savoir plus, consultez les notes de version.
ChromeDriver 79.0.3945.16
Compatible avec la version 79 de Chrome
- Correction du plantage de ChromeDriver causé par une alerte JavaScript déclenchée lors de l'exécution d'une commande
- Correction d'un bug qui entraînait le blocage de Chromedriver lorsqu'une alerte était déclenchée lors de la prise d'une capture d'écran
- Suppression de --ignore-certificate-errors de la commande de lancement de Chrome
- Modification de la plate-forme et de platformName en "windows" sur Win10
- Correction de la fenêtre undefined.navigator.webdriver lorsque "enable-automation" est exclu
- Correction du test WPT "test_not_editable_inputs[hidden]"
- Correction de l'erreur "L'élément n'est pas cliquable" lors de l'utilisation du mode headless
Pour en savoir plus, consultez les notes de version.
ChromeDriver 78.0.3904.105
Compatible avec la version 78 de Chrome
Inclut la modification suivante par rapport à la version 78.0.3904.70 : * Correction du calcul incorrect des coordonnées des éléments
Pour en savoir plus, consultez les notes de version.
ChromeDriver 78.0.3904.70
Compatible avec la version 78 de Chrome
Inclut la modification suivante par rapport à la version 78.0.3904.11 :
- Nous avons annulé la modification apportée à la taille des captures d'écran sur l'écran Retina en raison de plusieurs problèmes signalés.
Pour en savoir plus, consultez les notes de version.
ChromeDriver 78.0.3904.11
Compatible avec la version 78 de Chrome
- Correction de plusieurs problèmes liés à la sérialisation des objets JavaScript
- Correction d'un bug lié à la correspondance des fonctionnalités pour Chrome sur Android
- Mise en place de l'automatisation des autorisations
- Taille fixe des captures d'écran sur un écran Retina
- Correction du délai d'expiration du chargement de page dans certains cas
- Amélioration de la correspondance des capacités platformName
- Correction du code d'erreur renvoyé lors du déplacement du pointeur vers les options de la liste déroulante
- Correction d'un problème affectant le téléchargement en mode headless
Pour en savoir plus, consultez les notes de version.
ChromeDriver 77.0.3865.40
Compatible avec la version 77 de Chrome
Inclut les modifications suivantes par rapport à la version 77.0.3865.10 :
- Correction de deux bugs liés à la sérialisation et à la désérialisation des objets JavaScript
- Correction de la gestion de platformName: android lors de la mise en correspondance des capacités
Pour en savoir plus, consultez les notes de version.
ChromeDriver 77.0.3865.10
Compatible avec la version 77 de Chrome
- Correction de plusieurs problèmes dans l'implémentation de l'API Actions
- Amélioration de l'exécution du code JavaScript et de la gestion des résultats
- Correction d'un bug qui refusait à tort les requêtes POST avec un corps vide en mode OSS
- Un outil de suivi de la navigation plus robuste
- Prise en charge de la stratégie de chargement de page anticipé
- Ajout de la commande "Nouvelle fenêtre" à partir de la spécification W3C WebDriver
- Prise en charge de l'enregistrement des téléchargements de fichiers en mode sans affichage
- Ajout de la prise en charge du chargement des extensions CRX3
Pour en savoir plus, consultez les notes de version.
ChromeDriver 76.0.3809.126
Compatible avec la version 76 de Chrome
Inclut les modifications suivantes par rapport à la version 76.0.3809.68 :
- Correction de deux bugs liés à la sérialisation et à la désérialisation des objets JavaScript
Pour en savoir plus, consultez les notes de version.
ChromeDriver 76.0.3809.68
Compatible avec la version 76 de Chrome
Inclut les modifications suivantes par rapport à la version 76.0.3809.25 :
- Correction d'un bug lié à la détection des références circulaires dans les objets JavaScript
- Correction d'un bug qui entraînait le plantage de ChromeDriver lorsque certains types d'erreurs JavaScript se produisaient
- Correction d'un bug qui empêchait l'API Actions d'interagir avec les éléments à l'intérieur des Shadow DOM
- Correction d'un bug lié au suivi de l'état des touches de modification entre les commandes de l'API Actions
- Correction d'un bug lié au suivi des positions du pointeur entre les commandes de l'API Actions
- Enregistrement de l'erreur "Impossible d'appeler une commande non conforme à la norme W3C en mode W3C" dans le fichier journal lorsqu'elle se produit
Pour en savoir plus, consultez les notes de version.
ChromeDriver 76.0.3809.25
Compatible avec la version 76 de Chrome
Inclut les modifications suivantes par rapport à la version 76.0.3809.12 :
- Correction d'un bug qui refusait à tort les requêtes POST avec un corps vide en mode OSS
- Ajout de nouveaux points de terminaison pour récupérer le journal Chrome
- Ajout d'un point de terminaison pour la commande "Is Displayed" en mode W3C
Pour en savoir plus, consultez les notes de version.
ChromeDriver 76.0.3809.12
Compatible avec la version 76 de Chrome
- Implémentation terminée de l'API Actions
- Amélioration de la conformité aux spécifications de la gestion du délai d'expiration des scripts
- Amélioration de la sérialisation des résultats de la commande "Exécuter le script"
- Résolution des problèmes liés au défilement de l'élément dans la vue
- Ajout de la gestion de la touche "Annuler" définie dans la spécification WebDriver
- Correction du traitement de la réponse d'erreur d'alerte non traitée
- Traitement fixe de l'élément
<details> - Mise à jour de l'option excludeSwitches pour autoriser les tirets de début facultatifs dans les noms de commutateurs
Pour en savoir plus, consultez les notes de version.
ChromeDriver 75.0.3770.140
Compatible avec Chrome 75
Inclut les modifications suivantes par rapport à la version 75.0.3770.90 :
- Correction d'un bug qui entraînait le plantage de ChromeDriver lorsqu'un certain type d'erreur JavaScript se produisait
- Correction d'un bug lié à la conservation de l'état des touches de modification entre les actions
Pour en savoir plus, consultez les notes de version.
ChromeDriver 75.0.3770.90
Compatible avec Chrome 75
Inclut les modifications suivantes par rapport à la version 75.0.3770.8 :
- Correction d'un bug qui refusait à tort les requêtes POST avec un corps vide en mode OSS
- Ajout de nouveaux points de terminaison pour récupérer le journal Chrome
Pour en savoir plus, consultez les notes de version.
ChromeDriver 75.0.3770.8
Compatible avec Chrome 75
La modification la plus notable est que ChromeDriver s'exécute désormais par défaut en mode conforme à la norme W3C. Voici d'autres modifications :
- Correction d'un bug qui entraînait le déclenchement de l'événement de flou deux fois lors de l'effacement d'un élément
- Renommage de la fonctionnalité loggingPrefs en goog:loggingPrefs, comme l'exige la norme W3C
- Correction de la gestion des erreurs en mode W3C
- Gestion correcte de la création de cookies sans point au début du nom de domaine
- Autorise la valeur nulle pour le délai d'expiration du script
- Correction de la commande "Envoyer des touches" pour l'entrée de fichier avec l'attribut "multiple"
- Correction de la commande "Get Active Element" (Obtenir l'élément actif) pour renvoyer l'erreur "no such element" (aucun élément de ce type) lorsqu'aucun élément actif n'existe
- Correction de la navigation vers une URL incorrecte pour renvoyer une erreur "argument non valide"
- Correction du code d'état HTTP lorsqu'un ID de session non valide est reçu
- Correction de la réponse d'erreur lorsque le paramètre d'entrée est manquant ou incorrect
- Correction de la commande "Exécuter le script" pour gérer les commentaires JavaScript orientés ligne
Pour en savoir plus, consultez les notes de version.
ChromeDriver 74.0.3729.6
Compatible avec la version 74 de Chrome
- Correction d'un bug qui générait un fichier debug.log inattendu sous Windows
- Correction des clics de souris et du glisser-déposer dans le document SVG
- Ajout d'un en-tête cache-control dans les réponses de ChromeDriver
- Correction du type d'erreur lorsque le clic est intercepté par un autre élément
- Correction d'un bug qui entraînait l'échec de ChromeDriver sur les appareils Linux sans /dev/shm
- Correction de certains types d'événements de double-clic
- Correction de la commande Get Sessions
- Correction de la vérification des erreurs dans la commande "Passer au frame"
- Correction de la commande "Afficher la source de la page"
Pour en savoir plus, consultez les notes de version.
ChromeDriver 73.0.3683.68
Compatible avec la version 73 de Chrome
- Correction d'un bug qui générait un fichier debug.log inattendu sous Windows
- Correction du code d'erreur renvoyé par la commande "Exécuter le script" dans certains scénarios
- Ajout d'un en-tête cache-control dans les réponses de ChromeDriver
- Le serveur HTTP conserve désormais la connexion active par défaut.
- Correction de la commande "Fermer la fenêtre" pour gérer correctement les invites utilisateur
- Correction du code d'erreur renvoyé lors de l'envoi de touches à un élément désactivé
- Amélioration de la conformité des spécifications concernant la gestion des valeurs de délai avant expiration
- Amélioration de la conformité de la commande "Ajouter un cookie" avec les spécifications
- Augmentation de la longueur de la file d'attente du serveur HTTP
- Correction de la commande "Is Element Displayed" dans le Shadow DOM v0
- Ajout d'un avertissement concernant la modification du comportement de la commande "Effacer l'élément" dans le fichier journal
- Correction de la commande "Exécuter le script" pour convertir correctement document.all au format JSON
- Amélioration de la gestion des références d'éléments incorrectes
Pour en savoir plus, consultez les notes de version.
ChromeDriver 2.46
Compatible avec Chrome 71 à 73
- Correction du code d'erreur renvoyé par la commande "Exécuter le script" dans certains scénarios
- Le serveur HTTP conserve désormais la connexion active par défaut.
- Correction de la commande "Fermer la fenêtre" pour gérer correctement les invites utilisateur
- Correction du code d'erreur renvoyé lors de l'envoi de touches à un élément désactivé
- Amélioration de la conformité des spécifications concernant la gestion des valeurs de délai avant expiration
- Amélioration de la conformité de la commande "Ajouter un cookie" avec les spécifications
- Amélioration de la conformité des spécifications de la commande "Passer à l'image suivante"
- Augmentation de la longueur de la file d'attente du serveur HTTP
- Correction de la commande "Is Element Displayed" dans Shadow DOM v0
- Commande "Double-clic sur un élément fixe"
- Ajout d'un avertissement concernant la modification du comportement de la commande "Effacer l'élément" dans le fichier journal
- Correction de la commande "Exécuter le script" pour convertir correctement document.all au format JSON
- Amélioration de la gestion des références d'éléments incorrectes
Pour en savoir plus, consultez les notes de version.
ChromeDriver 2.45
Compatible avec Chrome 70 à 72
- Correction : la nouvelle session n'est pas conforme aux spécifications
- Correction : ChromeDriver ne doit pas lancer Chrome si les versions de Chrome et de ChromeDriver sont incompatibles
- Correction du problème lié à la commande "Find Element" (Rechercher un élément) qui renvoyait un code d'erreur incorrect lorsqu'un sélecteur non valide était utilisé
- Correction de l'erreur liée à certains codes d'état ChromeDriver
- Correction d'une erreur de compilation dans JS à l'intérieur de WebViewImpl::DispatchTouchEventsForMouseEvents
- Les commandes de taille de fenêtre fixe doivent gérer les requêtes utilisateur
- ChromeDriver corrigé ne démarre pas correctement Chrome avec l'option Chrome "user-data-dir="
- La commande d'état fixe n'est pas conforme aux spécifications
- Correction de l'ajout de la prise en charge de strictFileInteractability
ChromeDriver 2.44
Compatible avec Chrome 69 à 71
- Correction de WindowMaximize sur Mac
- Correction de l'erreur d'ouverture d'alerte incorrecte pour l'appel de gestion de fenêtre
- Fixed Element Send Keys should get "text" property in W3C mode
- Le cas particulier XML fixe de "Is Element Enabled" n'est pas géré conformément aux spécifications
- Correction du cas particulier XML où la valeur CSS de l'élément Get n'est pas gérée conformément aux spécifications
- Fixed Set Window Rect needs to check for invalid input
- Correction de la prise en charge des nouveaux modes unhandledPromptBehavior
ChromeDriver 2.43
Compatible avec Chrome 69 à 71
Voici les modifications apportées :
- Correction de l'analyse de la configuration du proxy non conforme aux normes
- La commande "Lancer l'application" est instable
- Correction du problème de capture d'écran incorrecte d'un élément dans un iFrame
- Ajout de la prise en charge du redimensionnement des fenêtres par ChromeDriver sur une connexion à distance
- Correction du problème lié aux codes d'erreur qui ne sont pas gérés dans l'élément "Effacer"
- Correction du problème "Ne pas attendre que l'élément soit visible"
- La propriété "Obtenir la propriété de l'élément" n'est pas implémentée
- Le bouton "Passer à la frame" ne respecte pas les spécifications
- Correction : Execute Async Script ne renvoie pas de codes d'erreur conformes aux spécifications
- Correction du problème lié à l'exécution du script qui ne renvoyait pas de codes d'erreur conformes aux spécifications
- Correction du code d'erreur dans ExecuteGet non conforme aux spécifications
- Correction du problème lié à l'envoi d'un texte d'alerte qui ne renvoyait pas de codes d'erreur conformes aux spécifications
- Correction de clear() sur un type d'entrée="date" qui fait croire que l'élément n'est pas modifiable par l'utilisateur
- Le Chromedriver corrigé obtient le handle de fenêtre pour l'onglet ouvert manuellement
- Correction de l'option "Autoriser l'ajout ou le démarrage d'un fichier journal pour chromedriver"
- Correction : "Nouvelle session" n'appelle pas le mode W3C si l'indicateur se trouve dans "firstMatch"
ChromeDriver 2.42
Compatible avec Chrome 68 à 70
Voici les modifications apportées :
- Correction de ClickElement dans l'émulation mobile
- Correction des adresses IP ajoutées à la liste blanche avec IPv4
- Correction du démarrage de ChromeDriver avec l'indicateur whitelisted-ips sur macOS
- Correction de SetTimeout pour accepter les formats pré-W3C et W3C
- Capture d'écran de l'élément de prise fixe
- Correction : ChromeDriver recherche également les binaires Chrome dans un chemin système
- Correction de l'agrandissement de la fenêtre et du plein écran
- Mise en œuvre de la fonctionnalité de relecture du journal. ( ne fonctionne pas encore pour Android ni le navigateur à distance)
- Correction de certains codes d'erreur non conformes à la norme W3C
- Correction du problème de gestion incorrecte de console.log avec plusieurs arguments
- Correction de GetElementRect pour autoriser les doubles
- Émulation tactile fixe
ChromeDriver 2.41
Compatible avec Chrome 67 à 69
Voici les modifications apportées :
- Correction d'un problème lorsque ChromeDriver s'exécute avec l'option "whitelisted-ips"
- Le port de débogage à distance est renvoyé dans les capacités.
- Implémentation de l'obtention de la taille de la fenêtre sur Android
- Amélioration des messages d'erreur de lancement de Chrome sur ordinateur
- ChromeDriver échoue rapidement lorsqu'il ne parvient pas à démarrer les binaires Chrome
- La valeur renvoyée par "Fermer la fenêtre" est conforme aux spécifications