Versiones anteriores de Chrome
En el caso de las versiones anteriores de Chrome, estas son las versiones de ChromeDriver que las admiten.
Para obtener más información sobre cómo seleccionar la versión correcta de ChromeDriver, consulta la página Selección de versión.
ChromeDriver 148
Correcciones de errores
- Acceso al DOM: Se corrigió una falla que se producía cuando se simulaba un clic en un botón dentro de un iframe que, a su vez, estaba anidado dentro de una raíz de sombra cerrada. El código JavaScript que se usaba anteriormente para encontrar el ID del elemento de marco del propietario no podía atravesar las raíces de sombra cerradas. La nueva implementación usa directamente el formato
f.X.d.Y.e.Zpara resolver el marco (crrev.com/c/7594919, error: 469831357). - Seguridad: Se reforzó la limpieza de argumentos de Chrome para evitar una posible vulnerabilidad relacionada con la inyección de argumentos posicionales (crrev.com/c/7695604, error: 494464734).
- Pruebas: Se aumentó el tiempo de espera de
kImplicitWaitpara las pruebas deFindElement(s)WhileNavigatingencommands_unittestcuando se ejecuta en AddressSanitizer (ASAN). El tiempo de espera predeterminado de 3 s no era suficiente para que el bucle de reintentos consumiera todos los errores simulados bajo la sobrecarga de ASAN, lo que provocaba inestabilidad (crrev.com/c/7657276).
Cambios internos y refactorizaciones
- Estándares de C++: Se reemplazaron las inclusiones superfluas de
base/functional/callback_forward.hen los archivos//chrome.cc, lo que impone el uso decallback.hcuando realmente se utilizan devoluciones de llamada (crrev.com/c/7200285, Bug: 40318405). Se trasladólogging::LoggingSettingsdebase/logging.ha su propio encabezadobase/logging/logging_settings.hpara mejorar la eficiencia de la compilación (crrev.com/c/7173024, se volvió a realizar el cambio crrev.com/c/7160150 después de revertir crrev.com/c/7170750). Se corrigieron varios errores de IWYU relacionados conbase/logging.h(crrev.com/c/7730403, Bug: 499476145). - Estándares de C++: Se reemplazaron las verificaciones redundantes de
count(key)del mapa seguidas de búsquedas con accesos más eficientes al iteradorfind(key)(crrev.com/c/7705392, crrev.com/c/7693277, Bug: 452950815). Se inyectóThreadDelegatea través del constructorThreadpara mejorar la encapsulación y se agregó una opciónRestartableaThreadpara admitir casos en los que se deben reiniciar los subprocesos (crrev.com/c/7696887, Bug: 40881604). - Seguridad de la memoria: Se convirtió
#pragma allow_unsafe_buffersa nivel del archivo en macrosUNSAFE_TODO()detalladas enchrome/(crrev.com/c/7132241, Bug: 409340989). Se acortóIOBuffer->span().first()aIOBuffer->first()(crrev.com/c/7159119). - Dependencias: Se lanzó la dependencia
crossbench, que incluye correcciones para descubrir archivos binarios de ChromeDriver compilados de forma local en macOS y Android (crrev.com/c/7673978). - Pruebas: Se volvió a habilitar el esquema
moduleenchromedriver_py_testsdespués de corregir la infraestructura subyacente de compilación y pruebas (crrev.com/c/7707960).
ChromeDriver 147
Correcciones de errores
- Pruebas: Se agregó una prueba de regresión hermética para verificar que
ElementClickcontrole correctamente los clics en iframes de origen cruzado con elementos de superposición, específicamente en situaciones de aislamiento de sitios. Esto garantiza que los clics no se enruten erróneamente al contenido integrado en lugar de a la superposición visible (crrev.com/c/7261984, Bug: 42321834, Bug: 42322220).
Cambios internos y refactorizaciones
- Estándares de C++: Se cambiaron los nombres de los modos y las funciones de decodificación de URL para cumplir con la guía de estilo de C++ de Google, y se reemplazaron
DecodeURLModeporDecodeUrlModeyDecodeURLEscapeSequences()porDecodeUrlEscapeSequences()(crrev.com/c/7593238). Se introdujourl::UrlEscapeDecoderpara simplificar el uso de la decodificación de URLs en toda la base de código (crrev.com/c/7610180). Se quitaron las inclusiones superfluas debuild/branding_buildflags.hen los archivos//chrome(crrev.com/c/7595125, Bug: 40318405). Se quitó la lógica deBUILDFLAG(IS_FUCHSIA)de//chrome, excepto en ChromeDriver (crrev.com/c/5485913, error: 41481724). - Seguridad de la memoria (spanificación): Se resolvieron los marcadores
UNSAFE_TODOen las utilidades de ChromeDriver y se migraron a implementaciones seguras basadas en rangos (crrev.com/c/7562602, Error: 435317390).
ChromeDriver 146
Correcciones de errores
- Estabilidad: Se corrigió una falla de ChromeDriver que podía ocurrir mientras se procesaba un comando si la ventana se cerraba de forma simultánea (p.ej., mientras se esperaba que se completara una navegación). La corrección adquiere un bloqueo en el objeto
WebViewpara evitar que se deseche de forma prematura (crrev.com/c/7257074, Bug: 468228355). - Seguridad: Se agregó una verificación del encabezado
Originpara las conexiones WebSocket entrantes al servidor HTTP de ChromeDriver, lo que evita un posible secuestro entre orígenes (crrev.com/c/7538400, Error: 478783560). - Pruebas: Se trasladó
testWebviewDetactedDuringClickal filtro inestable, por lo que se omite en todas las ejecuciones en lugar de solo en el modo sin interfaz gráfica (crrev.com/c/7545378, Error: 481485821).
Cambios internos y refactorizaciones
- Estándares de C++: Se cambiaron los nombres de
base::DictValueybase::ListValuepor sus equivalentes modernos (base::Value::Dictybase::Value::List) en//chrome(crrev.com/c/7515855, crrev.com/c/7514475, Bug: 478100525). Se reemplazaron los usos debase::Contains()porstd::ranges::contains()(crrev.com/c/7461026, Bug: 470391351). Se migraronstd::setystd::unordered_setabase::fixed_flat_setcuando correspondía (crrev.com/c/7521991, Bug: 473916362). Se refactorizaron las llamadas abase::JSONReader::Readque no especificaban opciones de análisis (crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Se reemplazaron varias llamadas abase::JSONWriter::Write()conbase::WriteJson()(crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Se limpió el orden de#include(crrev.com/c/7366868). Se migraron las referencias de errores en los comentarios para usar IDs de Buganizer en lugar de IDs de Monorail (crrev.com/c/7528268, Bug: 321899722). Se cambió el nombre de las marcas de compilaciónIS_OZONE_*aSUPPORTS_OZONE_*para proporcionar mayor claridad (crrev.com/c/7535923). - Seguridad de la memoria (spanificación): Se reemplazó el uso de punteros no seguros por
base::spanenbase/strings/utf_string_conversion_utils.cc(crrev.com/c/7496410, error: 439964610, error: 40284755). Se agregaron más usos debase::Fileen las pruebas de//chrome(crrev.com/c/7489592, Bug: 435317390). Se reemplazómemsetpor la inicialización agregada en//chrome(crrev.com/c/6875520, Bug: 435317390). Se convirtieron los marcadores#pragma allow_unsafe_buffersrestantes en marcadoresUNSAFE_TODO(crrev.com/c/7132241, Bug: 409340989). - Precalentamiento de DSE: Se habilitó la función
DSEPrewarmenfieldtrial_testing_config.jsonpara macOS y Windows, ya que se abordó la inestabilidad de las pruebas relacionadas de ChromeDriver (crrev.com/c/7489009, relanzamiento de crrev.com/c/7002185 después de la reversión crrev.com/c/7452344). (Nota: Esta reversión se revirtió nuevamente debido al aumento de los tiempos de ejecución de las pruebas en Windows (crrev.com/c/7517985, Error: 478888140)). - Diagnóstico: Se agregó el seguimiento de la ubicación de la persona que llama a los eventos de registro de
WaitableEventyConditionVariablepara mejorar la capacidad de depuración (crrev.com/c/7487755, Bug: 476408124).
ChromeDriver 145
Nuevas funciones
- Pruebas: Se actualizó el framework de pruebas
run_py_tests.pypara que acepte pruebas de cadenas determinísticas de diferentes longitudes (p.ej., 53, 101 y 501 caracteres) dirigidas a los elementosinput,textareaycontenteditable. Esto proporciona cobertura de regresión y garantiza que no se descarten caracteres durante las operacionessend_keyslargas (crrev.com/c/7221410, Bug: 428116078). - Pruebas: Se agregó una prueba específica para el elemento
<selectlist>de HTML (crrev.com/c/7420729, Error: 342889200).
Correcciones de errores
- Capturas de pantalla: Se revirtió el ajuste de escala de las capturas de pantalla de elementos, ya que la especificación de WebDriver no prescribe el ajuste de escala y era incoherente con otras funciones de captura de pantalla (crrev.com/c/7409603, Bug: 42323022).
- Pruebas: Se corrigieron los errores en
testClientHintsDeviceNameIPhoneXytestClientHintsDeviceNameIPadactualizando las expectativas de prueba de ChromeDriver para que coincidan con los valores correctos recientes (para los campos platform, platformVersion, model y mobile) introducidos en Herramientas para desarrolladores Frontend (crrev.com/c/7408699, Error: 474179501).
Cambios internos y refactorizaciones
- Estándares de C++: Se migraron varios usos de
base::Contains()astd::ranges::contains()en//chrome(crrev.com/c/7411011, Error: 470391351), incluidas las correcciones de formato necesarias (crrev.com/c/7247217). Se refactorizaron los parámetros de cadena astd::string_viewpara evitar asignaciones innecesarias de cadenas cuando se usasubstr()(crrev.com/c/7350716). Se quitaron las inclusiones superfluas de<map>en los encabezados de//chrome(crrev.com/c/7225838, Bug: 40318405). Se corrigió el orden de inclusión en algunos archivos (crrev.com/c/7366868). Se reemplazaron las devoluciones de llamada heredadas deBodyAsStringCallbackDeprecateden los usos deSimpleURLLoaderporBodyAsStringCallback, que utilizastd::optionalen lugar destd::unique_ptr(crrev.com/c/7210000, Bug: 40258809). - Pruebas: Se volvió a implementar la configuración de la prueba de campo de
InfobarPrioritization, incluidas las correcciones para evitar fallas en las pruebas del navegador de ChromeDriver cuando se controlan barras de información pendientes que no se agregaron a la jerarquía de vistas (crrev.com/c/7223590, Error: 447176374). Se volvió a implementar el filtrado por país y configuración regional para la función de Glic, que se había revertido anteriormente debido a fallas en pruebas no relacionadas (crrev.com/c/7245749, se volvió a implementar crrev.com/c/7148759 después de la reversión crrev.com/c/7233767, Error: 454431875).
ChromeDriver 144
Nuevas funciones
- Permisos: Se actualizó el comando
SetPermissionpara que cumpla con la especificación más reciente del W3C, utilizando la URL del marco actual (origen incorporado) además del origen de nivel superior. Esto configura correctamente los permisos comostorage-accessque dependen del contexto incorporado (crrev.com/c/7106801, se vuelve a aplicar crrev.com/c/7093216 después de revertir crrev.com/c/7104484, Bug: 384959114). - Testing: Se agregó
testMetadata(incluido el nombre de la prueba) a la carga útil de carga de pruebas de ChromeDriver para admitir el verificador de inestabilidad cuando se usan IDs de prueba estructurados (crrev.com/c/7124354, Bug: 456432041).
Correcciones de errores
- Ciclo de vida del destino: Se corrigió un error por el que ChromeDriver se detenía si se separaba un marco principal mientras un marco secundario esperaba una respuesta de comando. ChromeDriver ahora separa de forma explícita y transitiva los marcos descendientes cuando un
WebViewImplprincipal está bloqueado y marcado como separado durante el procesamiento de comandos (crrev.com/c/7080912, Bug: 438436830). - Administración de ventanas: Se inhabilitó la ejecución en segundo plano de ventanas obstruidas específicamente para las sesiones de ChromeDriver. Se resolvieron problemas en WebDriver BiDi en los que las pruebas podían fallar si el navegador consideraba incorrectamente que una ventana estaba obstruida y la limitaba (crrev.com/c/7128058, Bug: 458027819).
Cambios internos y refactorizaciones
- Estándares de C++: Se quitaron las inclusiones superfluas de
base/functional/callback_forward.hen los archivos//chrome.cc, lo que impone el uso decallback.hcuando realmente se utilizan devoluciones de llamada (crrev.com/c/7200285, Bug: 40318405). Se trasladólogging::LoggingSettingsdebase/logging.ha su propio encabezadobase/logging/logging_settings.hpara mejorar la eficiencia de la compilación (crrev.com/c/7173024, se volvió a realizar el cambio crrev.com/c/7160150 después de revertir crrev.com/c/7170750). Se migraron los usos debase::HexEncodealbase::HexEncodeLowermás reciente (crrev.com/c/7103100, error: 456472080). - Seguridad de la memoria (spanificación): Se migraron
WriteToPipeyWriteToPipeNoBestEfforten las pruebas de unidadesPipeBuilderyPipeConnectionpara aceptarbase::span, lo que corrige el uso no seguro del búfer (crrev.com/c/7090293, Error: 455758227). Se convirtieron las macros#pragma allow_unsafe_buffersa nivel del archivo en macrosUNSAFE_TODO()detalladas enchrome/(crrev.com/c/7132241, Bug: 409340989). Se acortóIOBuffer->span().first()aIOBuffer->first()(crrev.com/c/7159119).
ChromeDriver 143
Correcciones de errores
- Estabilidad: Se corrigió una falla de Use-After-Free (UAF) en
OverrideNetworkConditions. El puntero sin procesar guardado para la aplicación posterior se liberaba entre llamadas consecutivas; ahora se administra correctamente (crrev.com/c/7047422, Bug: 42323833). - Pruebas: Se corrigieron las pruebas táctiles inestables de ChromeDriver para Android con la API de
WaitForConditionpara una sincronización más confiable (crrev.com/c/6978928, error: 42321861). - DSE Prewarm: Se inhabilitó la función
Prewarmen ChromeDriver de forma predeterminada a través del parámetro de configuración--disable-features=Prewarm, lo que evita que las páginas precalentadas interfieran en la ejecución de pruebas y el descubrimiento de objetivos (crrev.com/c/7007072, Bug: 431928370).
Cambios internos y refactorizaciones
- Estándares de C++: Se intercambió
ref_counted.hporscoped_refptr.hen los encabezados de//chromeen los que solo se usa el puntero inteligente, lo que mejora la eficiencia de la compilación (crrev.com/c/7080753, Bug: 40245294). Se migraron los accesores deGURLa sus variantes deGet*(p.ej.,GetSpec()en lugar despec()) para indicar claramente la asignación de cadenas, lo que evita penalizaciones accidentales en el rendimiento (crrev.com/c/7002119, Bug: 448174617). - Pruebas: Se quitaron patrones de verificación redundantes en
devtools_client_impl_unittest.ccconADD_FAILURE()(crrev.com/c/6998270). Se agregó una prueba de regresión paracrbug.com/413382905(crrev.com/c/6879417).
ChromeDriver 142
Nuevas funciones
- Diagnóstico: Se agregó el estado
TERMINATION_STATUS_EVICTED_FOR_MEMORYpara diferenciar los procesos que el navegador finalizó de forma proactiva (para ahorrar memoria) de los procesos que fallaron debido a errores de memoria insuficiente (OOM). Actualmente, se comporta de forma idéntica a una falla por OOM (muestra una pestaña triste), pero sienta las bases para un manejo distinto en el futuro (crrev.com/c/6991933, Bug: 394092280). - Diagnóstico: Se agregó la capacidad
goog:processIDa la respuesta de WebDriver, que devuelve el ID del proceso principal del navegador para computadoras. Esto alinea ChromeDriver conmoz:processIDde Firefox y ayuda a probar las APIs de accesibilidad de la plataforma (crrev.com/c/5825307, Error: 438884256). - Pruebas: Se agregó compatibilidad con las cargas de IDs de prueba estructurados a ResultSink para las pruebas de integración de Python de ChromeDriver (crrev.com/c/6916708, error: 418015486).
Correcciones de errores
- Diagnóstico: Se modificó el comportamiento de ChromeDriver tras un cierre normal de Chrome para que ya no emita un mensaje de error genérico y confuso relacionado con el uso de
user-data-dir. Ahora se indica explícitamente que la instancia se cerró y se dirige al usuario a los registros detallados del error específico que generó Chrome (crrev.com/c/6977507, Error: 42323434). - Inicialización: Se actualizó la estructura de inicialización de ChromeDriver para que siga siendo compatible con los cambios de Selenium WebDriver v4.16.0 (crrev.com/c/6630600).
- Android: Se corrigió
CheckAppInstalleden versiones heredadas de Android (anteriores a Android 11) en las que el administrador de paquetes no admite la marca--user cur(crrev.com/c/6785949, Error: 433885051). - Pruebas: Se corrigió un error por el que
IgnoreDuplicateNavsanulaba incorrectamente los interruptores de capacidad predeterminados en ChromeDriver. Se inhabilitó la función para las sesiones de ChromeDriver y se corrigió la lógica deSwitches::SetFromSwitches(crrev.com/c/6949166, Bug: 445332809).
Cambios internos y refactorizaciones
- Estándares de C++: Se reemplazaron varias llamadas a
base::JSONWriter::Write()que estaban obsoletas porbase::WriteJson(), lo que mantiene el comportamiento de devolver una cadena vacía en caso de falla cuando no se verificó el valor de devolución (crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Se requiere la habilitación explícita para las opciones de análisis de JSON que no cumplen con los requisitos (p.ej., permitir comentarios) enbase::JSONReader::Readybase::JSONReader::ReadAndReturnValueWithError(crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Se quitaron las directivas#pragma allow_unsafe_buffersa nivel del archivo después de los esfuerzos manuales de spanificación (crrev.com/c/6778035, Bug: 409340989). Se limpiaron los usos de la macroLazyInstancecon fugas (crrev.com/c/6781377, error: 432815283). Se incluyeron los encabezados faltantes parahttp_response_headers.ha través de IWYU (crrev.com/c/6894196, Bug: 40216326). - Seguridad de la memoria (spanificación): Se spanificaron automáticamente numerosos punteros en el directorio
chrome/para las compilaciones de Linux, y se agregaronCHECKrecuperables donde los parámetros de tamaño se consideraron redundantes (crrev.com/c/6734592, Error: 431824299). - Pruebas: Se inhabilitó temporalmente
testDoesntCrashOnClosingBrowserFromAsyncScripten macOS (crrev.com/c/6995358, Bug: 446461733). Se corrigieron errores de escritura en los nombres de los métodos de prueba que involucran "Certificates" (crrev.com/c/6950683). Se aplicó el formato automático a los archivos//chrome/testde GN (crrev.com/c/6789277, error: 40760278). - FedCM: Se introdujo una función
ShouldShowAccountsPassiveDialogenIdentityDialogControllerpara verificar de forma síncrona si se debe mostrar un diálogo de cuentas, lo que corrige una falla relacionada con las verificaciones asíncronas y la instrumentación de Herramientas para desarrolladores (crrev.com/c/6780413, Bug: 425801332). - Precalentamiento de DSE: Se agregó
Page.setPrewarmingAllowedal Protocolo de Herramientas para desarrolladores como solución a corto plazo para habilitar o inhabilitar manualmente el precalentamiento, y se corrigieron las pruebas relacionadas para garantizar que interactúen correctamente con la página principal (crrev.com/c/6847287, Bug: 431928370). Se habilitó la funciónDSEPrewarmenfieldtrial_testing_config.jsonpara macOS y Windows después de resolver la inestabilidad (crrev.com/c/6951835, Bug: 431928370, Bug: 435621391). (Nota: El comando de CDP y la habilitación de la prueba de campo se revirtieron debido a que eran cambios que interrumpían el funcionamiento para los usuarios de WebDriver, ya que exponían destinos inesperados y causaban otros problemas posteriores, respectivamente [crrev.com/c/6966133, crrev.com/c/6966161, Error: 445883308]). - Limpieza: Se quitaron las referencias restantes al proyecto
WebLayerno compatible en el código de Android (crrev.com/c/6792520, Error: 40272607).
ChromeDriver 141
Nuevas funciones
- Pruebas: Se agregó compatibilidad con la marca
--enable-per-test-tracingarun_wpt_tests.py, lo que coincide con el comportamiento derun_web_tests.py. Esto recupera eventos de seguimiento en formato JSON de un búfer interno de ChromeDriver y los guarda en el directorio de resultados de la prueba (crrev.com/c/6820247, Error: 434017035).
Correcciones de errores
- Diagnóstico: Se impidió que ChromeDriver imprimiera su propio seguimiento de pila interno cuando devolvía un error
kTabCrashed. Esto evita confundir a los usuarios y, al mismo tiempo, garantiza que el seguimiento de pila de falla del renderizador permanezca en los registros (crrev.com/c/6841669, Error: 395131239).
Cambios internos y refactorizaciones
- Estándares de C++: Se reemplazaron las llamadas a
memsetpotencialmente no seguras por la inicialización agregada estándar de C++ (instance = {}) enchrome/para evitar omitir los constructores y garantizar la seguridad de la memoria (crrev.com/c/6875520, Bug: 435317390). Se agregaron las directivas#includefaltantes para//base/time/time.ha través de IWYU (crrev.com/c/6832689, Bug: 40216326). Se volvieron a escribir las directivas de compilación de búfer no seguro forzado (crrev.com/c/6828538). - Pruebas: Se agregó una prueba de regresión para
crbug.com/413382905(crrev.com/c/6879417). - Transiciones de vista: Se volvió a implementar la corrección de las transiciones de vista que actualiza el trabajo realizado antes de que se resuelva la promesa finalizada, después de que se demostró que era incorrecta una reversión especulativa anterior vinculada a errores de prueba de ChromeDriver (crrev.com/c/6846765, se volvió a implementar crrev.com/c/6806850 después de la reversión crrev.com/c/6808537).
ChromeDriver 140
Correcciones de errores
- Selección de destino: Se solucionó un problema por el que la ventana de Herramientas para desarrolladores podía competir con la página principal para ser seleccionada como la ventana principal cuando se iniciaba Chrome con
--auto-open-devtools-for-tabs. ChromeDriver ahora excluye de forma explícita los destinos con el prefijodevtools://durante la determinación de la ventana principal (crrev.com/c/6769505, Bug: 427908560). - Selección de destino: Se evitó que ChromeDriver calculara de forma incorrecta el punto central visible de los elementos ignorando cualquier recorte de
overflow:hiddenimpuesto por los elementos superiores. Esto alinea el cálculo con la especificación de WebDriver y otros casos dePerformActions(crrev.com/c/6735230, Error: 42322257). - Android: Se corrigió la función
CheckAppInstalleden versiones anteriores de Android (anteriores a Android 11) en las que no se admite la marca--user curpara el administrador de paquetes (crrev.com/c/6785949, Error: 433885051). - Pruebas: Se corrigió la inestabilidad en el paquete de pruebas
chromedriver_py_testscausada por la funciónDSEPrewarm. ChromeDriver ahora inhabilita el activador de precalentamiento mientras un cliente de CDP está conectado para evitar recuentos de destino inesperados durante las pruebas (crrev.com/c/6764274, Bug: 423465927, Bug: 431928370). - Pruebas: Se revirtió la adición de la función
ShouldShowAccountsPassiveDialogaIdentityDialogController(parte de FedCM), lo que provocó una regresión (crrev.com/c/6780413, Error: 425801332).
Cambios internos y refactorizaciones
- Estándares de C++: Se agregaron los
std::vector#includefaltantes a través de Include What You Use (IWYU) (crrev.com/c/6652818, error: 40216326). Se quitaron las inclusiones superfluas degurl.h(crrev.com/c/6578272) y<queue>(crrev.com/c/6570349, Bug: 40318405) en los encabezados de//chrome. Se solucionó el problema deIWYUparaNOTIMPLEMENTED()en//chrome(crrev.com/c/6655452, error: 41493641). - Seguridad de la memoria (spanificación): Se ejecutó la herramienta automatizada de spanificación de punteros en compilaciones de Linux y se actualizó el código para usar rangos donde se conocen los tamaños (crrev.com/c/6734592, error: 431824299). Se quitaron las directivas
#pragma allow_unsafe_buffersa nivel del archivo enchrome/después de completar la migración (crrev.com/c/6778035, Bug: 409340989). Se excluyeron los destinos dechrome/testde la advertencia de-Wexit-time-destructorspara permitir que se habilite la advertencia de forma global (crrev.com/c/6736532, Bug: 40031409, Bug: 430332953). Se limpiaron los usos deLazyInstancecon fugas en//chrome(crrev.com/c/6781377, error: 432815283). - Limpieza: Se quitó la marca de la CLI
--debug-bidi-mapper, ya que la transición para ejecutar BiDi Mapper en un destino oculto se completó y es estable (crrev.com/c/6672011, Error: 408992812). - Limpieza: Se quitaron las referencias restantes al proyecto
WebLayerno compatible (crrev.com/c/6792520, error: 40272607). Se aplicó formato automático a los archivos//chrome/testGN para acortar las referencias de destino (crrev.com/c/6789277, error: 40760278). - Pruebas: Se agregó una prueba de aceptación para verificar la corrección del problema de
PerformActionspointerMove(crrev.com/c/6648646, error: 42322257). - Pruebas: Se comentó el segmento de creación de controladores paralelos de la prueba
testBrowserWithUsedUserDataDir(y se registró un error de seguimiento), ya que causaba fallas en macOS relacionadas con el bloqueo exclusivo cuando se usabachrome-headless-shell(crrev.com/c/6470455, error: 411407649, error: 380903149). - Pruebas: Se actualizó el wrapper
run_cwt_chromedriver.pypara iOS de modo que admita el argumento--platform-type(crrev.com/c/6771517, error: 427548014). - PROPIETARIOS: Se quitó
nvitkovdel archivochrome/test/chromedriver/OWNERS(crrev.com/c/6771413).
ChromeDriver 139
Correcciones de errores
- Estructura de inicialización: Se actualizó la estructura de inicialización de ChromeDriver para que siga siendo compatible con las actualizaciones de Selenium WebDriver v4.16.0 (crrev.com/c/6630600).
- Análisis de argumentos: Se unieron varios argumentos
--js-flags(de manera similar a como se controla--enable-features) en lugar de tomar solo el último proporcionado. Esto mejora la usabilidad cuando se pasan marcas complejas de V8 (crrev.com/c/6612042, Bug: 421941798).
Cambios internos y refactorizaciones
- Seguridad de la memoria (spanificación): Se reemplazaron los usos de
base::MakeStringPiece()que dejaron de estar disponibles porstd::string_viewen//chrome/test(crrev.com/c/6628089, Bug: 422940464). Se incluyóbase/strings/string_view_util.hdonde se usabase::as_string_view(), lo que prepara el terreno para futuras migraciones de espacios de nombres (crrev.com/c/6625024, error: 423048781). - Estándares de C++: Se mejoró el cumplimiento de Include What You Use (IWYU) en
//chrome, ya que se incluye<vector>de forma explícita (crrev.com/c/6652818),base/notimplemented.h(y se quitabase/notreached.hcuando no se usa) (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) y se quitaron las inclusiones superfluas debase/debug/stack_trace.h(crrev.com/c/6622838). - Pruebas: Se transfirió la opción
--driver-loggingarun_wpt_tests.py, lo que permite que la secuencia de comandos vuelque ChromeDriver y el navegadorstderrincluso en niveles de detalle más bajos (crrev.com/c/6608138, Bug: 421262910). - Pruebas: Se volvieron a habilitar las pruebas de integración de ChromeDriver que se habían inhabilitado anteriormente: pruebas de capturas de pantalla (
testTakeElementScreenshot*) (crrev.com/c/6598797, Bug: 42321815), pruebas de cierre de ventanas a través de JavaScript (testCloseWindowUsingJavascript*) (crrev.com/c/6598978, Bug: 42321150) y pruebas de tamaño de ventanasheadless-shell(crrev.com/c/6621336, Bug: 42323661). - Pruebas: Se corrigió
run_wpt_tests.py --stablepara identificar y usar correctamente la versión estable actual de Clank (Android) analizando el APK, y se actualizó la secuencia de comandos para descargar la versión correspondiente de ChromeDriver de Chrome for Testing (CfT) en un directorio temporal en lugar de contaminar la confirmación (crrev.com/c/6635694, Error: 402548382). - Infraestructura de compilación: Se quitó una dependencia de compilación innecesaria en
write_build_config.pyal no permitir que los destinos deandroid_resources()tengan manifiestos, ya que la combinación de manifiestos y la nomenclatura de paquetes de R.java ahora se controlan con atributos especializados (crrev.com/c/6625266, Error: 413331591). - FedCM: Se corrigió una marca de función de configuración de Finch relacionada con FedCM (crrev.com/c/6614137, error: 421959289).
ChromeDriver 138
Nuevas funciones
- Administración de funciones de pantalla: Se actualizó el comportamiento de ChromeDriver para los segmentos de viewport de modo que coincidan con una resolución reciente del Grupo de trabajo de CSS: ahora devuelve de forma coherente un array con un solo segmento cuando se usa un dispositivo plegable de forma plana o para todos los dispositivos no plegables. Esto coincide con el comportamiento de las consultas de medios y mitiga los riesgos de huellas digitales (crrev.com/c/6469455, Bug: 414430842).
- Preferencias y estado local (Android): Se agregó compatibilidad con las capacidades
localStateyprefscuando se ejecuta ChromeDriver en dispositivos Android. Esto se basa en ADB y requiere una marcauser-data-dirpersonalizada. Actualmente, inicializa el estado con plantillas predeterminadas (crrev.com/c/6397155, error: 406427226).
Correcciones de errores
- Estabilidad: Se corrigió una falla de ChromeDriver que ocurría en macOS cuando un usuario descartaba el diálogo de la Experiencia de primera ejecución (FRE) a través del botón "Continuar". La falla se produjo por la anulación de un estado de error
kTargetDetachedy el intento de acceder a unWebViewno válido (crrev.com/c/6538867, Bug: 410599467). - Pruebas de rendimiento: Se corrigió el ejecutor de pruebas
crossbenchen los bots de pinpoint de Windows que intentaban ubicar de forma incorrecta el objeto binario de ChromeDriver con una ruta de acceso../Release_x64obsoleta cuando se pasaba--browser=release_x64, lo que provocaba que se volviera a descargar un objeto binario anterior en lugar de usar la compilación local (crrev.com/c/6502134).
Cambios internos y refactorizaciones
- Seguridad de la memoria (spanificación): Se reemplazaron los punteros no verificados en
WebSocket::OnReadDuringHandshakeyWebSocket::OnReadDuringOpenporbase::span, lo que aborda las advertencias deunsafe-buffer-usage(crrev.com/c/6557346, Bug: 354307328). Se quitaron las pragmas#pragma allow_unsafe_buffersinnecesarias enchrome/test/chromedriverque ya no eran necesarias después de otras migraciones (crrev.com/c/6503154, Bug: 414858406). - Estándares de C++: Se quitaron las directivas superfluas
#include "url/gurl.h"y#include <queue>en los encabezadoschrome/, y se agregaron declaraciones anticipadas cuando correspondía para mejorar los tiempos de compilación (crrev.com/c/6578272, crrev.com/c/6570349, Bug: 40318405). - Migración de la API: Se migraron
RSAPrivateKeyacrypto::PrivateKeyySHA256HashStringacrypto::Sha256, y se limpió un caso de manejo de errores obsoleto, ya que las nuevas APIs de generación de claves son infalibles (crrev.com/c/6490294, Error: 372283556). - Pruebas: Se agregó el atributo
OwnContributionEstimatea los comandos de automatización de la API de Compute Pressure (implementaciones de CDP y testdriver) (crrev.com/c/6373001, Bug: 402033762). - Pruebas: Se corrigieron las pruebas de integración que verifican
ClearDisplayFeaturesen los bots de integración continua (CFT) simplificando las aserciones para verificar que los segmentos del viewport se restablezcan al tamaño predeterminado del viewport (crrev.com/c/6535067, Bug: 417195296). - Pruebas: Se aumentaron los tiempos de espera para las pruebas de WebDriver de Protected Audience para abordar la inestabilidad en los bots de CI más lentos (crrev.com/c/6494277).
ChromeDriver 137
Nuevas funciones
- Administración de funciones de pantalla: Se agregaron comandos de ChromeDriver para emular y borrar funciones de pantalla, y se implementaron los requisitos de automatización para las APIs de Viewport Segments (CSS y JS). Esto permite a los desarrolladores probar de forma programática situaciones de pliegue o bisagra en dispositivos plegables o de pantalla doble (crrev.com/c/6368674, Bug: 40137084).
- BiDi: Se actualizó ChromeDriver para ejecutar BiDi Mapper en un destino oculto de forma predeterminada. Esto evita que la página
data:,del asignador interfiera en la ejecución de prueba y la visibilidad. Para depurar el asignador, los clientes pueden pasar la marca--debug-bidi-mapperpara ejecutarlo en una pestaña visible (crrev.com/c/6441064, relanding crrev.com/c/6433672 después de revertir crrev.com/c/6439633, Bug: 402339952).
Correcciones de errores
- BiDi: Se evitó que ChromeDriver cerrara incorrectamente toda la sesión del navegador cuando procesaba comandos de BiDi (como
browsingContext.close) si perdía el seguimiento de los destinos creados por otras sesiones de CDP o BiDi. Ahora se sincronizan de forma explícita las pestañas de nivel superior antes de decidir finalizar el navegador (crrev.com/c/6440293, error: 42323838). - BiDi: Se alinea con la especificación upstream de WebDriver BiDi. Para ello, se garantiza que ChromeDriver quite la capacidad
goog:channelsi se pasa como una cadena vacía, y se la trata de forma idéntica a un canal faltante (crrev.com/c/6438865, Error: 409282307). - Entrada: Se corrigió un problema por el que los eventos táctiles y de puntero fallaban o se comportaban de forma incorrecta. Para ello, se actualizó ChromeDriver para admitir coordenadas X e Y fraccionarias (de punto flotante) en los comandos de movimiento del puntero (crrev.com/c/6440834, error: 409684333).
- Selección de destino: Se impidió que los iframes fuera del proceso (OOPIF) de PDF se abrieran en vistas de invitado (cuando la función
PdfOopifestá inhabilitada) y se filtraran en la lista de destinos de nivel superior. Se expandió la lógica de filtrado para excluir correctamente estos destinos con el prefijochrome-extension://(crrev.com/c/6383500, Bug: 396611138).
Cambios internos y refactorizaciones
- Estándares de C++: Se volvió a aplicar el cambio para usar
std::string_viewen los nombres de archivos enLogMessagey en los eventos de seguimiento, lo que resolvió los problemas con el control de cadenas terminadas en nulo que causaron las reversiones anteriores (crrev.com/c/6430129, se volvió a aplicar crrev.com/c/6395097, se volvió a aplicar crrev.com/c/6387020 después de la reversión crrev.com/c/6383699). - Estándares de C++: Se modernizaron las llamadas a
Environment::GetVaren//chromepara usar la API de devolución destd::optionalen lugar de los parámetros de salida (crrev.com/c/6417343, Bug: 400758498). - Estándares de C++: Se refactorizaron los asistentes de identificadores específicos de Windows de
win_util.hen un encabezadowindows_handle_util.hdedicado para evitar problemas de dependencia circular (crrev.com/c/6418805, Bug: 406023316). - Pruebas: Se agregó un controlador de dominio
Browserespecífico para Android y se implementó la API deBrowser.getWindowForTargetpara admitir pruebas de creación de ventanas de Android (crrev.com/c/6427605, error: 404932444). - Pruebas: Se corrigió la inestabilidad en las pruebas de macOS causada por la demora en la inicialización de las extensiones (crrev.com/c/6423229, error: 407804497).
- Pruebas: Se inhabilitó temporalmente la creación paralela de
user-data-direntestBrowserWithUsedUserDataDircuando se ejecuta enchrome-headless-shell, ya que entraba en conflicto con el bloqueo exclusivo en macOS (crrev.com/c/6470455, error: 411407649, error: 380903149). - Extensiones: Se actualizaron las pruebas de Chrome para que se aprueben cuando se habilite la prueba de campo de
ExtensionManifestV2Unsupported. Este es un paso fundamental, aunque la prueba en sí permanece inhabilitada hasta que se realicen actualizaciones en otros repositorios (crrev.com/c/6415997, Bug: 367395349). (Nota: Se revirtió un intento anterior de habilitar esta prueba a través de la configuración crrev.com/c/6397497, lo que revirtió crrev.com/c/6358257). - Dependencias: Se actualizó manualmente la dependencia
catapulty se actualizaron los archivospydepsy las referenciasdevil_utilasociados (crrev.com/c/6480814, crrev.com/c/6466865, se volvió a aplicar crrev.com/c/6406098 después de revertir crrev.com/c/6448910, Bug: 397459590).
ChromeDriver 136
Nuevas funciones
- Ciclo de vida del navegador: Se agregó una capacidad específica de Chrome
quitGracefullyque obliga a ChromeDriver a intentar detener el navegador correctamente (conBrowser.closeo SIGTERM) en lugar deSIGKILLpredeterminado. Esto les da tiempo a los depuradores, comorr, para volcar sus grabaciones antes de que finalice el proceso (crrev.com/c/6322538, se vuelve a aplicar crrev.com/c/6269180 después de una breve reversión crrev.com/c/6320536, Bug: 339644807). - Pruebas: Se canalizó el argumento
run_wpt_tests.py --wrappergenerando una secuencia de comandos wrapper temporal que antepone el objeto binario del navegador con el depurador (p.ej.,rr) y sus argumentos. Esto soluciona la incapacidad de ChromeDriver para sustituir el objeto binario directamente cuandoargsse procesan como modificadores (crrev.com/c/6271108, Bug: 339644807). - Pruebas: Se habilitó la traducción por preferencia en
TranslateEnabledTestpara admitir un entorno de pruebas en el que ChromeDriver administra el proceso del navegador y omite la nueva restricción de--remote-debugging-portcuando--user-data-dires implícito (crrev.com/c/6354089, Bug: 327797500). - DevTools: Se agregó compatibilidad con la función de instancias múltiples de DevTools para abrir una pestaña nueva en otra ventana en Android (crrev.com/c/6352169, error: 401269942, error: 382183406).
Correcciones de errores
- Selección de destino: Se solucionó un problema por el que los iframe (OOPIF) fuera de proceso de PDF que se abrían en vistas de invitado no se filtraban de la lista de destinos de nivel superior cuando se inhabilitaba la función
PdfOopif. Se expandió el filtro para incluir el prefijochrome-extension, lo que resuelve el error y abarca las extensiones de Chrome de MV3 que crean pestañas (crrev.com/c/6383500, Bug: 396611138). - Selección de destino: Se corrigió una regresión que provocaba que el comando
getWindowHandles()fallara con un estadoconnection refusedcuando se segmentaban apps empaquetadas de Chrome (crrev.com/c/6317161, error: 396622746).
Cambios internos y refactorizaciones
- Estándares de C++: Se volvió a implementar el cambio que usa
std::string_viewpara los nombres de archivos enLogMessagey los eventos de seguimiento, lo que mejora la compatibilidad con las estructuras de registro de Rust que no garantizan cadenas terminadas en nulo (crrev.com/c/6387020, se volvió a implementar crrev.com/c/5765705 después de revertir crrev.com/c/6383699 y otra reversión crrev.com/c/6395097). - Estándares de C++: Se reemplazaron las llamadas redundantes de
base::Value::Clone()para optimizar el rendimiento (crrev.com/c/6361818). Se suprimieron advertencias adicionales de-Wunsafe-buffers-in-libc-callsen archivos específicos de Windows para limpiar el resultado de la compilación (crrev.com/c/6369920, error: 390223051). - Extensiones: Se revirtió la adición de la entrada
fieldtrial_testing_config.jsonpara la faseExtensionManifestV2Unsupporteddebido a un problema (crrev.com/c/6397497, se revierte crrev.com/c/6358257, Error: 367395349, Error: 406523920). - Documentación: Se mejoró la documentación de pruebas de ChromeDriver específica para Android (crrev.com/c/6354040).
ChromeDriver 135
Nuevas funciones
- BiDi: Se actualizó el asignador de BiDi para heredar los permisos de ChromeDriver cuando se especifica
--enable-unsafe-extension-debugging. Esto permite que los clientes de WebDriver BiDi prueben de manera eficaz las extensiones que requieren permisos que normalmente tiene el cliente de WebDriver (crrev.com/c/6288627, Bug: 393500934).
Correcciones de errores
- Pruebas: Se volvieron a habilitar y actualizar las expectativas para varias pruebas de WDSpec que antes se marcaban como fallidas. Esto restablece la cobertura de cumplimiento de especificaciones para las pruebas aprobadas (crrev.com/c/6310420).
Cambios internos y refactorizaciones
- Limpieza: Se quitaron todos los rastros de Lacros (incluidos
IS_CHROMEOS_LACROSy los datos de prueba relacionados) dechrome/test/, ya que Lacros está en desuso y se estandarizó enIS_CHROMEOS(crrev.com/c/6284446, Error: 354842935). - Limpieza: Se quitaron todos los rastros de la utilidad
md5sumdespués de su reemplazo pordevil_util, y se limpiaron las dependencias de compilación heredadas (crrev.com/c/6309939, Error: 397452007). - Estándares de C++: Se quitó el espacio de nombres
chrome::deResultCodeyIsNormalResultCode(), y se trasladaron al espacio de nombres global. También se quitaron las importaciones obsoletas de inicio de ChromeOS (crrev.com/c/6196899, Bug: 41050580). - Seguridad de la memoria: Se simplificó una llamada a
std::lower_bounden ChromeDriver aprovechandostd::ranges::lower_bound(crrev.com/c/6223172, Error: 392116519). Se suprimieron las advertencias deunsafe_libc_callpara los archivos que se identificaron inicialmente como no aptos para el cumplimiento en preparación para la aplicación futura (crrev.com/c/6187925, Error: 390223051). Se marcó el valor de devolución destd::to_arraycomoconstexprpara mejorar la seguridad y la evaluación en tiempo de compilación (crrev.com/c/6298909).
ChromeDriver 134
Nuevas funciones
- Mitigaciones del seguimiento por rebote (DIPS): Se volvió a implementar la compatibilidad de ChromeDriver con las mitigaciones del seguimiento por rebote, utilizando el comando
RunBounceTrackingMitigations. Se reestructuró la prueba de integración para usar páginas distintas, lo que garantiza que los rebotes con estado se registren correctamente antes de que se ejecute el comando. Esta función admite la especificación denav-tracking-mitigationsy se implementa en//chrome(crrev.com/c/4935955, error: 1474656). (Nota: Se agregó originalmente en crrev.com/c/4873672 y, luego, se revirtió). - BiDi: Se actualizó ChromeDriver para usar las propiedades de extensión BiDi estándar de WebDriver con el prefijo
goog:, lo que se alinea con los cambios dechromium-bidiupstream. Ya no se permite la propiedad heredadachannel(crrev.com/c/6179410). - Windows: Se agregó un recurso de versión al archivo binario
chromedriver.exeen Windows (crrev.com/c/6114586, error: 385300323).
Correcciones de errores
- MPArch/Targets: Se corrigió una regresión en la que los destinos de extensiones de Chrome (
chrome-extension://) se descubrían y adjuntaban de forma incorrecta durante la determinación del destino principal en ChromeOS, lo que provocaba que fallaran los comandos posteriores (como la navegación). Ahora, los destinos de extensión se omiten correctamente durante esta fase inicial (crrev.com/c/6183202, error: 385241097). - MPArch/Targets: Se corrigió otra regresión en la que los destinos de pestañas para los
background_pagede extensión no se filtraban correctamente de las vistas web de nivel superior cuando se inhabilitaba la compatibilidad con destinos de extensión (crrev.com/c/6160774, error: 385731198). - MPArch/Navigation: Se corrigió un problema por el que una pestaña podía no tener una página activa adjunta durante la activación de MPArch, lo que provocaba que ChromeDriver la viera incorrectamente como un estado de error. ChromeDriver ahora espera a que la pestaña adquiera una página nueva y complete su navegación antes de resolver el estado (crrev.com/c/6177606).
- Procesamiento de registros: Se corrigió una falla (error de
DCHECKenbase::Value()) causada por el truncamiento incorrecto de cadenas de registro que contienen caracteres multibyte. Se actualizó la lógica para usar la detección de límites deUnicodeStringen lugar de verificaciones simples de longitud destd::string, lo que garantiza puntos de código válidos (crrev.com/c/6210809, Bug: 367752739). - Pruebas: Se migraron la mayoría de las WPT relacionadas con la generación previa (excepto algunas con problemas conocidos de la API) de
content_shellaheadless_shell, ya que la refactorización reciente de MPArch permite que ChromeDriver las ejecute correctamente (crrev.com/c/6168830, Error: 42323502, Error: 366257368).
Cambios internos y refactorizaciones
- Estándares de C++: Se reemplazaron los usos de
base::rangesporstd::rangesestándar (crrev.com/c/6200893, crrev.com/c/6177197, Bug: 386918226). Se volvieron a escribir los patrones deb ? "true" : "false"para usarbase::ToString(bool)siempre que sea posible (crrev.com/c/6165810, error: 335797528). Se quitó la funciónStringPrintfNonConstexpr()no segura y se reemplazó por alternativas de formato de cadenas más seguras (crrev.com/c/6149756). Se reemplazó la aritmética de punteros (+ std::size) por iteradoresbegin/endestándar para resolver advertencias de búfer no seguro (crrev.com/c/6217045, Bug: 392116519). - Limpieza: Se quitaron la marca de función
FedCmIdpSigninStatusy su marca de tiempo de ejecución (crrev.com/c/6111321, Error: 381211734). (Nota: Se revirtió un intento de eliminación anterior crrev.com/c/6082405 debido a interrupciones).
ChromeDriver 133
Nuevas funciones
- Arquitectura: Se refactorizó ChromeDriver para admitir la arquitectura de varias páginas (MPArch) y los destinos de pestañas.
WebViewImplahora se conecta a los destinos de pestañas a través deAutoAttach. Los comandos que antes mostraban una página ahora buscan la página activa en una pestaña. Este cambio permite inspeccionar las páginas en segundo plano de las extensiones, a las que ahora se puede orientar a través de la capacidadenable_extension_targets(de forma predeterminada, se omiten los objetivos de las extensiones) (crrev.com/c/5961156, Bug: 379767670, Bug: 42323502). Se corrigió una regresión por la que las páginas de URLs dechrome-extension://se incluían de forma incorrecta como destinos de extensión. La selección se revierte solo atype=background_page(crrev.com/c/6093588, error: 383141569). Se movióenableExtensionTargetsa Opciones de Chrome en lugar de una capacidad de nivel superior (crrev.com/c/6093032). - Clásico: Se restableció la compatibilidad con las referencias de elementos de varias claves. Esta función no documentada, que se suele usar para crear referencias compatibles con los modos W3C y no W3C, ahora se admite oficialmente y se incluye en las pruebas de integración (crrev.com/c/6063257, error: 379584343).
Correcciones de errores
- Estabilidad: Se evitó que ChromeDriver se bloqueara de forma indefinida cuando controlaba el comando
browsingContext.close. Al usar un mecanismo diferente para determinar si es necesario cerrar el navegador, ChromeDriver ahora puede controlar correctamente los mensajes debeforeunloadsin detenerse (crrev.com/c/6080431, Bug: 42323838, Bug: 379049702). - Navegación: Se corrigió un error por el que una página ficticia con la URL
about:blank?testcausaba una detención. La heurística diseñada para identificar una ventana nueva que no responde (baseURL==about:blankydocumentURL!=about:blank) ahora controla correctamente estas URLs de cadena de consulta como un caso especial (crrev.com/c/6038039, Bug: 377410086). - Navegación: Se agregó lógica para volver a intentar los comandos que fallan con un error
AbortedByNavigation. ChromeDriver ahora intentará ejecutar el comando varias veces antes de abandonar con un errorTimeoutestándar (crrev.com/c/6012427, Bug: 42323825). - Diagnóstico: Se reenvió el error
kTargetCrasheddirectamente a través deNavigationTracker. Si un destino falla durante la detección de navegación, ahora se muestra este error específico al usuario en lugar de un tiempo de espera genérico, lo que mejora el diagnóstico (crrev.com/c/6032612, Bug: 377410086). - Android: Se corrigieron las búsquedas de destino de pestañas en
chrome_android_impl.cc(crrev.com/c/6110492, bug: 384781876). - Pruebas: Se corrigió la inestabilidad en varias pruebas de cambio de tamaño de la ventana en
win11-arm64(p.ej., hacer clic en elementos ocultos). Ahora, las pruebas consultan el tamaño de la ventana interna de forma repetida después de una operación de cambio de tamaño hasta que se registra correctamente una altura positiva, lo que explica las repintadas lentas de la ventana (crrev.com/c/6012658, Bug: 378470046). - Pruebas: Se corrigieron varias fallas en las pruebas de integración asignando errores de conexión genéricos de Python a
WebSocketConnectionClosedException, lo que simplificó el manejo de errores (crrev.com/c/6054134), se evitaron las condiciones de carrera usandoSendCommanden lugar dePostCommandcuando se esperan efectos secundarios inmediatos (crrev.com/c/6054137) y se reemplazó la dependencia de los efectos inmediatos deExecuteScriptpor mecanismos de detección de navegación más confiables (crrev.com/c/6063040, Error: 42323825). - Pruebas: Se revirtió la eliminación de la marca de función
FedCmIdpSigninStatus, ya que su eliminación causó interrupciones (crrev.com/c/6082405, se revirtió crrev.com/c/6078693, Error: 384866916, Error: 381211734). - Herramientas: Se agregó compatibilidad con el comando
Printen la secuencia de comandoslog_replay(crrev.com/c/6010809, error: 378451938).
Cambios internos y refactorizaciones
- Estándares de C++: Se quitó el histograma de
Mojo.InvalidUTF8String, lo que permitió limpiar los encabezados públicos de Mojo y las posteriores cascadas de IWYU (crrev.com/c/6133861, Error: 40509710, Error: 386793084). - Estándares de C++: Se evitaron las asignaciones en
WaitableEvent::Wait()cambiando destd::listabase::circular_deque(crrev.com/c/6097198). - Estándares de C++: Se establecieron como predeterminados los constructores y destructores vacíos definidos por el usuario en toda la base de código de
chrome/siempre que fue posible (crrev.com/c/6101911, crrev.com/c/6056220, Bug: 381119547). - Seguridad de la memoria (spanificación): Se migraron los arrays de estilo C a
std::arrayenchrome/como parte del esfuerzo más amplio para abordar las advertencias de-Wunsafe-buffer-usage(crrev.com/c/6043879, Error: 378069401). Se incorporó el uso estricto desize_ten las funciones de intervalo (crrev.com/c/6026238, crrev.com/c/6020621). - Pruebas: Se transfirió la función de pantalla completa
{ref,crash}testsde nuevo awpt_internal/, ya quetestdriverahora la admite (crrev.com/c/6088404). - Pruebas: Se corrigió
wptrunnerpara iOS para ubicar correctamente el wrapper de ChromeDriver cuando se usan directorios de resultado no predeterminados (p.ej.,//out/*-ios-wpt-fyi-rel/) mediante la canalización correcta de--build-directory(crrev.com/c/6014940, Error: 374199289, Error: 355218109). - Pruebas: Se agregó la prueba de integración
testBrowserCrashWhileWaitingForEventspara demostrar casos de regresión en los que los clientes no notan errores fatales (crrev.com/c/6025145, Error: 379049702). - Pruebas: Se suprimieron WPT específicas que fallan cuando se ejecutan en
headless_shellcombinado con ChromeDriver para estabilizar los compiladores (crrev.com/c/6032163, Bug: 377410086).
ChromeDriver 132
Nuevas funciones
- Pruebas: Se agregó compatibilidad con los parámetros de la línea de comandos
repeatyretry-limita las pruebas de integración de ChromeDriver, y se los asignó a los argumentos estándarisolated-script-test-repeatyisolated-script-test-launcher-retry-limit(crrev.com/c/5938195, Error: 374681919). Para las pruebas que se ejecutan de forma local (no de CI), el valor predeterminado deretry-limitse cambió a 0 (crrev.com/c/5953326, error: 374681919). - WebSockets: Se implementaron
WebSocketConnectiony las clases relacionadas enEmbeddedTestServer, lo que permite que las pruebas relacionadas con WebSocket migren deSpawnedTestServer. Esto incluye el encuadre según el protocolo y el registro simplificado del controlador (crrev.com/c/5849732, Bug: 40812029).
Correcciones de errores
- Estabilidad: Se corrigió una falla de ChromeDriver que podía ocurrir si un comando de clic provocaba el cierre del navegador. Para ello, se controló correctamente el estado de error
kTargetDetachedque se introdujo en refactorizaciones anteriores (crrev.com/c/5934524, Error: 42323264). - Estabilidad: Se corrigió una falla intermitente en la prueba de integración de
testClickNavigateRemoteToLocalen Mac ARM64 resolviendo una condición de carrera (crrev.com/c/5975526, error: 375971185). - Navegación: Se corrigieron los comandos
GoBackyGoForward, que anteriormente fallaban si se llamaba aPage.getNavigationHistorymientras el documento realizaba una transición para salir de un estado activo (lo que indicaba una navegación en curso). ChromeDriver ahora vuelve a intentar correctamente el comando en esta situación (crrev.com/c/6011739, Bug: 378433873). - Ejecución de secuencias de comandos: Se garantizó que las secuencias de comandos que activan una navegación o cierran una ventana devuelvan correctamente un error
ScriptTimeoutestándar si el navegador no garantiza un resultado, lo que le indica al usuario que evite estructuras de prueba ambiguas (crrev.com/c/5934265, Bug: 372883701). - Ejecución de secuencias de comandos: Se corrigió un problema por el que la función de reproducción de registros fallaba con un error de "respuesta de comando inesperada" (crrev.com/c/5961142, Error: 42323342).
- Códigos de error: Se corrigió el manejo de errores de ChromeDriver para que ya no fuerce el ajuste de todas las excepciones con una propiedad "code" en un "error de JavaScript" genérico. Esto garantiza que los errores estándar, como "referencia de elemento inactivo" (de
call_function.js) y "estado de elemento no válido" (de la funciónCLEARde Selenium Atoms), se propaguen con precisión al usuario (crrev.com/c/5937893, error: 42323409). Se mejoró el control de errores enGetElementTagNamepara interpretar correctamente la información faltante del nombre de la etiqueta como "el objeto no es un elemento" (crrev.com/c/5929087). - BiDi: Se solucionó un problema por el que no se podían inicializar las sesiones de BiDi cuando se usaba un perfil de usuario personalizado. La página cargada del perfil personalizado podría impedir que se inicie BiDiMapper. ChromeDriver ahora garantiza que la primera pestaña siempre cargue
data:,para proporcionar un estado inicial limpio para el asignador (crrev.com/c/5960656, Bug: 366886096). - Modo Incógnito: Se corrigió un error que impedía que ChromeDriver creara pestañas nuevas mientras operaba en el modo Incógnito (crrev.com/c/5952980, error: 42323352).
- Pruebas: Se corrigió la inestabilidad en la prueba de integración de
testScriptNavigateRemoteToLocal(que fallaba en un 8.33%) y se agregaron pruebas de integración en C++ para reproducir y verificar la corrección de la condición de carrera (crrev.com/c/6010867, Bug: 378387680). - Pruebas: Se volvieron a habilitar numerosas pruebas de integración que antes eran inestables en Mac (
testWindowMinimize) y Windows (ChromeDownloadDirTest.testFileDownloadAfterTab,InvalidCertificateTest.*), y a nivel global (testShadowDomFindElement, pruebas de capturas de pantalla de elementos). Se volvieron a trasladar temporalmente las pruebascss/css-scrollbars/de WPT inestables de shell sin encabezado a shell de contenido (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).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia del asignador
chromium-bidipara incorporar las correcciones más recientes y las actualizaciones del protocolo (crrev.com/c/5953339, crrev.com/c/5865478, Bug: 4226). (Nota: Se revirtió brevemente un aumento de la asignación debido a fallas en WPT y, luego, se volvió a aplicar [crrev.com/c/5961113]). - Arquitectura: Se minimizó el uso del objeto de sesión local del subproceso en ChromeDriver para evitar errores de uso compartido del estado entre las pruebas y simplificar el control explícito de la sesión (crrev.com/c/5978486, Bug: 42323555). Se refactorizaron las pruebas de integración de C++ para usar un fixture de prueba compartido (crrev.com/c/5971474, Bug: 42323555).
- Limpieza: Se quitaron las soluciones alternativas obsoletas específicas del modo "sin interfaz gráfica anterior", ya que el código heredado
chrome-headless-shellya no está presente en Chrome (crrev.com/c/5961602, Error: 42323387). - Limpieza: Se quitó el archivo
java_tests.txtsin usar, un remanente de las pruebas de aceptación de ChromeDriver que se quitaron anteriormente (crrev.com/c/5970994, Error: 357737793). - Pruebas: Se agregó una prueba de integración en C++ para verificar que ChromeDriver no cree erróneamente sesiones paralelas con la misma URL de
user-data-dirni filtre URLs entre sesiones, lo que podría causar inestabilidad (crrev.com/c/5961137, error: 375312517). - Pruebas: Se garantizó que las instancias temporales de ChromeDriver creadas por las pruebas de integración se cierren lo más rápido posible para liberar recursos (crrev.com/c/5997970, error: 375974725).
ChromeDriver 131
Nuevas funciones
- BiDi: Se actualizó la dependencia del asignador
chromium-bidia la versión 0.8.0, que incorpora las actualizaciones de protocolo y las correcciones de errores más recientes (crrev.com/c/5899240, crrev.com/c/5865478, Bug: 4226). - Acceso al DOM: Se agregó compatibilidad con shadow roots cerradas en el comando
GetElementShadowRoot. Anteriormente, este comando devolvía un errorNoSuchShadowRootcuando se intentaba acceder a una raíz de sombra cerrada (crrev.com/c/5923865, Bug: 372834222). - Acceso al DOM: Se implementó la compatibilidad con los identificadores de ventanas y marcos, lo que permite que se devuelvan referencias a ventanas o marcos (incluidos los iframe de OOP) desde los scripts ejecutados para una mayor desreferenciación (crrev.com/c/5890437, crrev.com/c/5923555, Bug: 366272556, Bug: 40229283).
- WebAuthn: Se expandió la API de automatización de WebAuthn para incluir las propiedades
userNameyuserDisplayName(crrev.com/c/5905423, Error: 367915823).
Correcciones de errores
- Entrada: Se corrigió una condición de carrera con clics del mouse en marcos remotos. Para ello, se enrutaron los eventos del mouse al antecesor del mismo origen más alto del marco de destino, en lugar de enviarlos simplemente al marco superior (crrev.com/c/5836968, Error: 42323535).
- Entrada: Se corrigió el formato de la marca de tiempo enviada con el comando
Input.dispatchTouchEventde milisegundos a segundos, lo que solucionó las fallas en las pruebas de eventos de puntero de WPT (crrev.com/c/5924253, error: 360918166). - Pruebas: Se volvieron a habilitar numerosas pruebas de ChromeDriver en Mac (crrev.com/c/5923569, crrev.com/c/5922823, crrev.com/c/5921444, crrev.com/c/5920851, crrev.com/c/5921442) y Windows (crrev.com/c/5923955), ya que sus fallas asociadas de inestabilidad ya no son reproducibles.
Cambios internos y refactorizaciones
- Seguridad de la memoria (spanificación): Se reemplazó el uso de punteros no seguros por
base::spanennet::HttpUtil(crrev.com/c/5854420) y se migróbase::File::WriteAtCurrentPos()a su equivalente basado en span (crrev.com/c/5818972). Se reescribieron los valores del puntero del mapa (p.ej., enstd::map,std::unordered_map) araw_ptr(crrev.com/c/5867189, Error: 329428315). - Estándares de C++: Se reemplazaron las macros de atributos de Abseil (
ABSL_ATTRIBUTE_*) por macros debase/estándar (crrev.com/c/5852373). Se evitaron copias no deseadas reemplazando cadenas o vectores de paso por valor constd::string_viewo referencias const cuando correspondía, y se quitaron calificadoresconstno utilizados de los argumentos destd::string_view(crrev.com/c/5914620, crrev.com/c/5906184, Bug: 369952985). - Infraestructura: Se configuró Fuchsia para usar ChromeDriver y controlar
web-engine(crrev.com/c/5867896, error: 40935291). - Pruebas: Se migró una prueba de WebAuthn de marcos delimitados del ejecutor de shell de contenido heredado a Chrome sin encabezado con ChromeDriver, ya que el ejecutor heredado pronto dejará de admitir la API de WebAuthn testdriver (crrev.com/c/5920770, Error: 372169469).
ChromeDriver 130
Nuevas funciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, y se obtuvieron las actualizaciones de protocolo y las correcciones de errores más recientes del upstream
chromium-bidi(crrev.com/c/5850570, se volvió a aplicar crrev.com/c/5837065 después de revertir crrev.com/c/5840080; crrev.com/c/5717956, Bug: 4226). - BiDi: Se actualizó ChromeDriver para proporcionar
unhandledPromptBehaviordirectamente al Mapper a través del comandosession.newcuando se inicializa una sesión de BiDi. Con esto, se completa la migración deMapperOptions(crrev.com/c/5682934, crrev.com/c/5766077, Bug: 42323841, Bug: 356371297). - Pruebas: Se agregó compatibilidad con el argumento
--chromedrivera la secuencia de comandosbisect-builds.pypara las compilaciones de escritorio, lo que permite que la secuencia de comandos descargue y use automáticamente la versión correcta de ChromeDriver durante las bisecciones para las pruebas dependientes de WebDriver/ChromeDriver (crrev.com/c/5861048, Error: 352344089).
Cambios internos y refactorizaciones
- Estándares de C++: Se resolvieron problemas de la "regla de los cinco" en varias clases. Debido a que el complemento de estilo de Chrome insiste en destructores fuera de línea sin aplicar también constructores de movimiento fuera de línea, el compilador borraba de forma implícita los operadores de movimiento y recurría a copias de forma silenciosa. Se agregaron estas declaraciones faltantes (crrev.com/c/5846757, Bug: 364788123).
- Pruebas: Se limpió el resumen de los resultados de la prueba
wptrunnerreemplazando la cadenachromecodificada de forma rígida por el producto real utilizado y ocultando el artefactocommanddetallado del resultado del resumen (crrev.com/c/5825633, Error: 41494889). - Pruebas: Se corrigieron errores masivos en las pruebas de integración de ChromeDriver en macOS 15 (Mac15) duplicando los tiempos de espera específicos, ya que las pruebas en este SO requerían mucho más tiempo que en Mac14. También se agregaron cuatro pruebas de sensores virtuales a la lista de elementos ignorados debido a su inestabilidad (crrev.com/c/5817455, Bug: 354939744).
- Pruebas: Se inhabilitaron las pruebas
ChromeDriverSiteIsolation.testClickNavigateLocalToLocalinestables en Mac (crrev.com/c/5806894, Bug: 361521805) y las pruebasChromeDriverTest.testClickElement*ObscuredByScrollBarinestables en Windows 11 (crrev.com/c/5804083, Bug: 360058651). - Pruebas: Se quitaron las pruebas de aceptación de ChromeDriver (que descargaban versiones anteriores de Chrome para probarlas con el ChromeDriver actual) debido a varios problemas de infraestructura. Es posible que se vuelvan a agregar más adelante en la CI con autoroll (crrev.com/c/5812142, Bug: 357737793).
ChromeDriver 129
Nuevas funciones
- BiDi: Se actualizó el asistente de inicialización de la sesión de ChromeDriver para enviar un comando
session.newal asignador de BiDi, lo que permite que el asignador controle directamente las capacidades. Este es el primer paso para quitarMapperOptions(crrev.com/c/5741432, Error: 356371297). (Nota: Se revirtió un cambio relacionado crrev.com/c/5754093 que proporcionaba elunhandledPromptBehaviorprocesado crrev.com/c/5755744 debido a una disminución en la cobertura de las pruebas). - Compute Pressure: Se agregaron nuevos comandos de extensión para la administración de fuentes de presión virtuales, lo que implementa la sección de automatización de la especificación de Compute Pressure. Estos comandos se analizan y reenvían a la capa de CDP (crrev.com/c/5666583, Error: 347031400).
- Extensiones MV2: Se actualizaron las pruebas que ejercen el comportamiento de MV2 para usar
ScopedTestMV2Enablercomo parte de la prueba de campo en curso de la baja del Manifest V2 de extensión (crrev.com/c/5685054, Error: 339061151).
Correcciones de errores
- Serialización clásica: Se hace un seguimiento de los objetos vistos cuando se serializa un
Seten los resultados de ejecución de la secuencia de comandos de WebDriver Classic, lo que evita bucles infinitos y tolera las anulaciones deArray.prototype.includes(crrev.com/c/5765833, Bug: 357472850). (Nota: Posteriormente, se revirtió crrev.com/c/5773175 debido a una regresión de WPT).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia del asignador de BiDi para incluir las correcciones de errores y las actualizaciones de protocolo más recientes de
chromium-bidi(crrev.com/c/5756587, crrev.com/c/5717956, Bug: 4226). - Seguridad de la memoria (spanification): Se reemplazó el uso de búferes no seguros en
WebSocketFrameParser::Decode,MaskWebSocketFramePayloadyWriteWebSocketFrameHeaderporbase::span(crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, Bug: 40284755, Bug: 354307327). Se agregó#pragma allow_unsafe_buffersenchrome/*como preparación para más correcciones (crrev.com/c/5717950, Bug: 40285824) y se convirtieron las macros deUNSAFE_BUFFERS()no conformes aUNSAFE_TODO()(crrev.com/c/5786346). Se reescribieron los camposbase::spancomobase::raw_span(crrev.com/c/5515096, error: 332587642). - Estándares de C++: Se quitó el uso de arrays peligrosos de longitud variable (VLA) en la base de código marcando explícitamente las longitudes de los arrays como
constexpr(crrev.com/c/5738737, error: 349656479). Se incluyeron los encabezados<unordered_map>necesarios que se extrajeron de forma transitiva anteriormente (crrev.com/c/5792881). - Arquitectura: Se quitó la bifurcación de la implementación de
WebSocketEncoderrevirtiendo su migración detenida a//services/network/public/cpp/servery centralizando la lógica nuevamente dentro de//net/serverpara garantizar actualizaciones coherentes (crrev.com/c/5768214, Bug: 40205564).
ChromeDriver 128
Nuevas funciones
- Capacidades: Se permitió el uso de un diccionario para la capacidad
unhandledPromptBehavior, lo que se alinea con las estructuras de capacidad estándar, aunque el Mapper aún no lo respeta por completo (crrev.com/c/5692204, crrev.com/c/5682934, Error: 42323841). - Startup: Se agregó el argumento de línea de comandos
--ignore-explicit-porta ChromeDriver. Esta solución alternativa temporal obliga a ChromeDriver a ignorar cualquier puerto proporcionado de forma explícita y, en cambio, a buscar y vincularse a un puerto libre, lo que resuelve las condiciones de carrera de puertos TCP durante la ejecución de pruebas de la plataforma web (se prevé que se quite después de M132) (crrev.com/c/5724574, crrev.com/c/5703976, Bug: 42323836).
Correcciones de errores
- Sensores: Se corrigió el comando
ExecuteUpdateVirtualSensorpara que useSendCommand()en lugar deSendCommandAndGetResult(), ya que el comandosetSensorOverrideReadingsde CDP no devuelve un valor (crrev.com/c/5703589). - FedCM: Se corrigió una condición de carrera en las pruebas de ChromeDriver de FedCM. Para ello, ya no se declara que se devuelve
NoSuchDialogcuando se espera un diálogo, lo que evita fallas si el diálogo aparece demasiado rápido (crrev.com/c/5713515, error: 346530330). - Pruebas: Se volvieron a habilitar las pruebas del autenticador virtual de WebAuthn en Mac después de que se corrigió el problema subyacente (crbug.com/40233722) (crrev.com/c/5635806, Error: 329130177).
- Mensajes de error: Se corrigió un error tipográfico en el mensaje de error del comando
execute/async(crrev.com/c/5697913).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, lo que incorporó las funciones de protocolo más recientes, las correcciones de errores y las actualizaciones de expectativas de WPT del proyecto
chromium-bidiupstream (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). - Se reemplazaron los usos del método
GrowableIOBuffer::StartOfBufferque se dio de baja porspan, lo que mejoró la seguridad de la memoria al eliminar los punteros no verificados (crrev.com/c/5706088, Bug: 329476354). - Se spanificaron los métodos
DecodedeWebSocketFrameParserpara mejorar la seguridad de la memoria (crrev.com/c/5722108, error: 354307327). - Se limpiaron los restos de
absl::optionalquitando los encabezados obsoletos de Abseil y migrando astd::optional(crrev.com/c/5691505, error: 40242125). - Se cambió ChromeDriver para que controle todos los tipos de destino desconocidos (incluido
shared_storage_worklet) comoWebViewInfo::kOtheren lugar de tratarlos como errores. Esto permite que Chrome introduzca nuevos tipos de destino sin que se interrumpan de inmediato las WPT (crrev.com/c/5680542, crrev.com/c/5679146, Bug: 42323839). - Se agregó un destino del instalador para el compilador
linux-builder-perfpara generar archivos binarios despojados de símbolos para los archivos de bisect, y se configuraron los compiladores de pinpoint para que acepten diferentesadditional_compile_targets(crrev.com/c/5668198, Bug: 344643694). - Se actualizó
run_performance_tests.pypara encontrar y pasar la ubicación de ChromeDriver acrossbenchdurante las compilaciones de rendimiento (crrev.com/c/5624538, error: 338629299). - Se actualizó la dependencia
crossbench(crrev.com/c/5681849). - Se marcaron
FedCmSpecificTest.testClickErrorMoreDetailsyFedCmSpecificTest.testClickErrorGotItcomo inestables en Mac (crrev.com/c/5704320, crrev.com/c/5677564, Bug: 352821422, Bug: 346530330). - Se inhabilitó la prueba
BidiTest.testFocusInFirstTabinestable (crrev.com/c/5676686, error: 350916212).
ChromeDriver 127
Correcciones de errores
- Estabilidad: Se corrigió una falla de ChromeDriver que ocurría cuando se recibía un comando
target.detachFromTarget(o un eventotarget.detachedFromTarget) mientras el cliente de Herramientas para desarrolladores procesaba activamente otros comandos, lo que impedía la liberación prematura de los objetosWebViewyDevToolsClient(crrev.com/c/5527584, Error: 339773537). - Estabilidad: Se corrigió un problema por el que el comando
Switch To Windowpodía devolver incorrectamente un "error desconocido" si se desconectaba una vista web durante la ejecución del comando. Ahora, se ignora correctamente el error interno "no se encontró la vista web", lo que genera una respuesta estándar de "no se encontró la ventana" si la ventana de destino se cerró (crrev.com/c/5583730, Error: 338616700). - Estabilidad: Se garantizó que ChromeDriver tolera la separación del destino mientras se actualiza la lista interna de WebView. Si un destino se desconecta durante la actualización, ChromeDriver ahora volverá a intentarlo en lugar de devolver un error no estándar, lo que reduce la inestabilidad en entornos en los que las ventanas se crean y destruyen rápidamente (crrev.com/c/5565103, Bug: 338616700, Bug: 4771).
- Navegación: Se agregó lógica a ChromeDriver para esperar una navegación detectada por el extremo remoto mientras se buscan elementos. Esto evita que ChromeDriver devuelva un error no estándar o falle con un
DCHECKcuando una navegación coincide con una operación de búsqueda de elementos (crrev.com/c/5563113, revierte crrev.com/c/5563420, vuelve a aplicar crrev.com/c/5562089, Error: 4771). - BiDi: Se corrigió una condición de carrera entre ChromeDriver y BiDiMapper durante la creación de la sesión. ChromeDriver ahora espera a que el comando
browsingContext.getTreedevuelva una lista no vacía antes de finalizar el comando NewSession, lo que garantiza que la pestaña predeterminada recién creada se registre correctamente (crrev.com/c/5575497, Bug: 341048786, Bug: 1503101). - BiDi: Se corrigió un problema por el que el foco permanecía en la pestaña en segundo plano de BiDiMapper después de la creación de la sesión en lugar de en la pestaña del usuario activo, ya que se otorgaba el foco de forma explícita a la primera pestaña del usuario (crrev.com/c/5594070, error: 341048786, error: 1503101).
- BiDi: Se detuvo el intento de ChromeDriver de adjuntar un Target cuando se controlan comandos de BiDi (como
browsingContext.close) para evitar que los comandos de CDP se detengan indefinidamente si se abre un mensaje del usuario, y se delega el control por completo a la capa de BiDi ya conectada (crrev.com/c/5541915, se revierte crrev.com/c/5539818, se vuelve a aplicar crrev.com/c/5522393, error: 4758). - FedCM: Se corrigió la falla de la prueba de WPT
fedcm-loginhint.https.htmlen la que un diálogo se marcó incorrectamente como cerrado. Ahora, el estado solo se actualiza si la operaciónselectAccountse realiza correctamente (crrev.com/c/5398379, Bug: 331237776). - Pruebas: Se corrigió una falla de
DCHECKdurante el análisis de JSON cuando un carácter alcanzaba exactamente el límite dekExtendedASCIIStart(crrev.com/c/5565276, Bug: 40284755). - Pruebas: Se corrigió la prueba
scrollend-event-fires-to-iframe-window.htmlde WPT usando el elemento iframe como origen de desplazamiento y redondeando las entradas de movimiento del puntero a números enteros, lo que evita errores de ChromeDriver con posiciones táctiles fraccionarias (crrev.com/c/5570150, Bug: 340956654). - Pruebas: Se mejoraron los diagnósticos en las pruebas de integración de ChromeDriver imprimiendo las rutas de acceso intentadas cuando
run_py_tests.pyno logra ubicar el objeto binario del navegador (crrev.com/c/5604204, Error: 4781).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia del asignador de BiDi para mantenernos al día con las últimas actualizaciones del protocolo y correcciones de errores (crrev.com/c/5614670, crrev.com/c/5593796, crrev.com/c/5537892, crrev.com/c/5471839, Bug: 4226).
- Se reemplazaron los usos de
NOTREACHED()porNOTREACHED_IN_MIGRATION()en todo el directoriochrome/en preparación para queNOTREACHED()sea estrictamente[[noreturn]](crrev.com/c/5539004, Bug: 40580068). - Se habilitó la generación de
THIRD_PARTY_NOTICES.txtpara ChromeDriver con la herramientalicenses.pypara cumplir con los requisitos de distribución (crrev.com/c/5596355, error: 4777). - Se quitó la compatibilidad con
run_wpt_tests.pyparacontent_shell, ya que la cobertura de WPT de Chromium está en plena transición aheadless_shell+ ChromeDriver (crrev.com/c/5589930). Se reorganizaron los parámetros de configuraciónwptrunnerpara que sean específicos del embedder y así adaptarse a este cambio sin que se vea afectado el funcionamiento (crrev.com/c/5589793, Bug: 338412391). - Se consolidó la lógica para la detección y el control de diálogos de JavaScript trasladándola de
JavaScriptDialogManagerdirectamente aDevToolsClientImpl, lo que eliminó la clase de administrador independiente para simplificar las pruebas y el razonamiento (crrev.com/c/5545630, Bug: 4757). - Se inhabilitó
PureBidiTest.testBrowsingContextTreeIsNotEmptyen Mac debido a su inestabilidad (crrev.com/c/5588665, error: 343891977). - Se actualizaron las expectativas de WPT de BiDi para tener en cuenta las actualizaciones recientes de Mapper (crrev.com/c/5615110, Bug: 4226, Bug: 324436866).
- Se agregaron pruebas unitarias para
WebView::SendBidiCommandyBidiTrackerpara aumentar la cobertura del código (crrev.com/c/5588400, Bug: 341048786, Bug: 1503101).
ChromeDriver 126
Nuevas funciones
- BiDi: Se actualizó ChromeDriver para que proporcione el parámetro de configuración
--disable-background-timer-throttlingcuando se inicia el navegador para una sesión de WebDriver BiDi, lo que evita que se limite la velocidad de las pestañas en segundo plano (crrev.com/c/5515013, error: 4762). - BiDi: Se agregó compatibilidad con BiDi Mapper para enviar mensajes de depuración (
sendDebugMessage) cuando se requiere un registro detallado. ChromeDriver marca estos eventos comobidi messagespara el análisis, aunqueBidiTrackeractualmente los ignora (crrev.com/c/5465782, error: 4753). - Clásico: Se implementó la aceptación automática de cualquier diálogo de
beforeunload(alertas), de conformidad con el estándar de WebDriver que indica que nunca se deben mostrar en una sesión clásica (crrev.com/c/5517510, Error: 4757).
Correcciones de errores
- Clásico: Se quitó la limitación redundante de intentos máximos en la lógica de recuperación de elementos. Ahora, la recuperación solo está limitada por el tiempo de espera implícito, lo que evita situaciones en las que la operación podría fallar de forma prematura y devolver incorrectamente un error
NoSuchExecutionContextno estándar (crrev.com/c/5478668, Bug: 4379). - Classic: Se corrigió una regresión que provocaba que ChromeDriver respondiera con un error
javascript erroren lugar de un errorinvalid selectorcuando una solicitud de recuperación usaba una estrategia de ubicación no válida (crrev.com/c/5490662, error: 4743). - Clásico: Se garantizó que los comandos de ventana en Android (Maximizar, Minimizar, Pantalla completa) devuelvan el error
unsupported operationque cumple con el estándar en lugar de continuar, ya que el navegador de Android no admite estas acciones (crrev.com/c/5490224, Error: 4689). - Classic: Se corrigió ChromeDriver para que nunca devuelva el código de error interno
kChromeNotReachable. Ahora devuelve correctamente el error estándarkSessionNotCreatedcuando el cliente HTTP no puede conectarse al navegador (crrev.com/c/5476390, Bug: 4379). - Classic: Se corrigió ChromeDriver para que nunca devuelva el error no estándar
kNoSuchExecutionContextcuando se ejecutan comandos de ventana (crrev.com/c/5483606, Bug: 4379). - Classic: Se quitó el código de error
kForbiddenno utilizado y no compatible de la lista de códigos de error compatibles (crrev.com/c/5476927, error: 4379). - BiDi: Se actualizó ChromeDriver para que le solicite al usuario que confirme antes de cerrar la pestaña Mapper dedicada, lo que se alinea con los cambios de
chromium-bidiupstream (crrev.com/c/5508600, Bug: 4761).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, lo que incorporó las funciones y correcciones de errores más recientes del proyecto
chromium-bidiupstream (crrev.com/c/5490428, crrev.com/c/5471839, crrev.com/c/5509316, crrev.com/c/5458234, Bug: 4226). (Nota: Un jardinero revirtió brevemente un aumento de asignación y, luego, lo volvió a aplicar [crrev.com/c/5374839, crrev.com/c/5374366]). - Se reemplazaron los usos de
base::StringPieceporstd::string_viewen//chrome(crrev.com/c/5467746, Bug: 40506050). - Se quitó el uso de
std::to_string()en//chromey se reemplazó porbase::NumberToString()obase::FormatNumber()(crrev.com/c/5505593, error: 335672557). - Se quitó la compatibilidad con el parámetro de configuración
--remote-debugging-addressen el modo sin interfaz gráfica anterior, ya que se consideró demasiado peligroso el acceso remoto no protegido al protocolo de Herramientas para desarrolladores de Chrome (crrev.com/c/5512634, Error: 327558594). - Se quitaron las reglas de compilación de Fuchsia de
//chrome, excepto ChromeDriver (crrev.com/c/5473870, Bug: 41481724). - Se migraron las referencias heredadas de
TODO(crbug.com/...)en toda la base de código al nuevo formato de ID del sistema de seguimiento de problemas (TODO(b/...)) (crrev.com/c/5492605, crrev.com/c/5486477, crrev.com/c/5461380, Error: 321899722). - Se inhabilitaron las pruebas de WebAuthn (autenticador) en Mac (tanto para
chromedriver_py_testscomo para headless) debido a un error subyacente complejo, lo que desbloqueó la actualización de los bots a macOS 14 (crrev.com/c/5525435, crrev.com/c/5518820, Bug: 329130177). - Se inhabilitaron los compiladores de WPT para
content_shelldebido a dificultades para ejecutar WPT con ChromeDriver y Content Shell juntos (crrev.com/c/5512439, Error: 40214293). - Se volvió a enviar un cambio que actualiza los WPT de
focus-navigationpara usarShift+Taba través detest_driver.action_sequence()para la navegación hacia atrás. Se corrigió un error enfocus-utils.jsen el que se usaba el código de tecla incorrecto (E050en lugar deE008) para la tecla Mayúsculas (crrev.com/c/5467843, revirtiendo crrev.com/c/5466531, volviendo a aplicar crrev.com/c/5463903, Bug: 40597271). - Se agregaron
crossbenchychromedrivera los destinos de compilación de rendimiento (crrev.com/c/5521874, Bug: 338627700).
ChromeDriver 125
Nuevas funciones
- Posición del dispositivo: Se agregaron comandos de ChromeDriver para la administración de la posición del dispositivo, lo que admite la sección Automatización de la especificación de posición del dispositivo. Esto permite anular la postura del dispositivo establecida por el hardware y quitar la anulación a través de comandos de extensión (crrev.com/c/5437993, Bug: 330376761).
Correcciones de errores
- BiDi: Se cambió el almacenamiento intermedio del comando BiDi entrante
idde unDoubleabase::Value. Esto garantiza que elidse repita con precisión en la respuesta sin un punto decimal final inesperado o una parte fraccionaria después de la serialización de JSON (crrev.com/c/5444225, error: 4676). - FedCM: Se volvió a implementar el cambio para habilitar CORS en el extremo de aserción de ID después de que los IDP estuvieron listos (crrev.com/c/5440132, revirtiendo crrev.com/c/5381316, volviendo a implementar crrev.com/c/5370086, Bug: 40284123).
- FedCM: Se corrigió un error por el que un diálogo se marcaba de forma incorrecta como cerrado. Para ello, se garantizó que solo se marque como cerrado si el comando
selectAccountse ejecuta correctamente. Esto resuelve las fallas de pruebas cuando se llama aselectAccountsin un selector de cuentas esperado (crrev.com/c/5398379, Bug: 331237776). Se evitó llamar afedcm_get_and_select_first_accountcuando no se espera un selector de cuentas para evitar que se active este error (crrev.com/c/5398800). - Pruebas: Se corrigió una falla en la prueba
popover-light-dismiss.htmlde WPT combinando secuencias de acciones y usando el documento del marco principal como origen para la acciónpointerUp, lo que evita que ChromeDriver envíe incorrectamente eventospointerUpsimultáneos en los marcos (crrev.com/c/5402096, Error: 325981758). - Pruebas: Se corrigió
wptrunnerpara que reenvíe correctamente el resultado destderr(incluidos los registros del navegador escritos cuando se usa--enable-chrome-logs) al artefactostderren lugar decrash_log, y se trasladaron los errores del arnés (que contienen el seguimiento de pila del navegador) acrash_log(crrev.com/c/5437023, error: 41494889). - Pruebas: Se corrigió
wptrunnerpara enrutar los registros del navegador al artefacto de prueba correcto agrupando el resultado por el proceso de ChromeDriver, lo que evita registros intercalados y huérfanos durante la ejecución de pruebas paralelas (crrev.com/c/5320681, Error: 41494889).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, lo que integró las mejoras más recientes del protocolo y las correcciones de errores (crrev.com/c/5433300, crrev.com/c/5393442, error: 4226). (Nota: Se revirtió una actualización anterior crrev.com/c/5374366 crrev.com/c/5374839 y, luego, se volvió a aplicar con pruebas no confiables inhabilitadas y licencias actualizadas crrev.com/c/5374914).
- Diagnóstico: Se canalizó el
StackTracede Chrome en las excepciones de ChromeDriver. Esto muestra el seguimiento de pila del navegador en el mensaje de error cuando se borra una sesión debido a una falla de la página o la pestaña (p.ej., punteros colgantes en Mac), lo que mejora significativamente la capacidad de depuración (crrev.com/c/5374371, Bug: 330009945). - Pruebas: Se inhabilitó temporalmente la prueba de integración inestable
testTakeLargeElementViewportScreenshoten Mac (específicamentemac-arm64) (crrev.com/c/5447515, error: 333826980). - Pruebas: Se actualizaron los argumentos de inicio de ChromeDriver en los entornos de prueba (CEL) para que coincidan con la sintaxis de Selenium 4 y versiones posteriores (crrev.com/c/5448812, error: 308885357).
- Pruebas: Se extrajo la línea de comandos de
chromeexacta que se usó para ejecutar cada prueba de WPT desde el registro dechromedriveren un artefacto de ResultDB llamadocommand. Esto facilita la depuración manual conrun_blink_wptserve.py(crrev.com/c/5441189, error: 41494889). - Dependencias: Se quitó
Closurede la lista de dependencias deselenium-atomsy, en consecuencia, se quitó de los avisos de terceros de ChromeDriver (crrev.com/c/5424804, error: 4226). - Dependencias: Se quitaron las dependencias no utilizadas en
dynamic_annotationsen todo el repositorio base (crrev.com/c/3398908, Error: 1282422). - Formato: Se aplicó la nueva configuración de
clang-formata los encabezados de Windows problemáticos (crrev.com/c/5367127, Error: 329138753).
ChromeDriver 124
Nuevas funciones
- BiDi: Se agregó un paso de compilación para reducir el script de
BiDiMapperantes de incorporarlo a ChromeDriver, ya que el asignador de fuentes ahora se descarga sin reducir desde CIPD (crrev.com/c/5310075, error: 4226). - WebAuthn: Se agregó el comando
SetCredentialProperties, que permite a los clientes actualizar las marcas de copia de seguridad para una credencial de WebAuthn (crrev.com/c/5296389, Bug: 40945430). - WebAuthn: Se expusieron las marcas de copia de seguridad de WebAuthn a través de WebDriver agregando
defaultBackupEligibilityydefaultBackupStateal comando "Add Virtual Authenticator", ybackupEligibilityybackupStateal comando "Add Credential" (crrev.com/c/5297117, Bug: 40945430). - Pruebas: Se agregó compatibilidad con el argumento de línea de comandos
--failfasta las pruebas de integración de ChromeDriver en Python, lo que detiene la ejecución de la prueba en el primer error para ayudar con la depuración (crrev.com/c/5374546). - Pruebas: Se agregó compatibilidad con content-shell para el comando
SetRPHRegistrationModede WebDriver a través de las APIs detestdriver-vendor.js(crrev.com/c/5205730, Error: 1359103).
Correcciones de errores
- Estabilidad: Se trasladó la verificación de vencimiento del tiempo de espera dentro del cuerpo del bucle de sondeo y espera en
ChromeImpl::SetWindowBounds. Se corrigió un problema por el que, con una carga alta, el tiempo de espera podía vencer antes de que se produjera la primera iteración del bucle (crrev.com/c/5366899, Bug: 4642). - Rendimiento: Se minimizó el tiempo de espera en
ChromeImpl::SetWindowBoundsaplicando solo una retirada exponencial si los límites de la ventana aún no alcanzaron el estado deseado, lo que reduce la latencia de configuración de WPT (crrev.com/c/5366457, Error: 4642). - Inicio: Se actualizó ChromeDriver para que use
--user-data-diren lugar de--data-pathcuando se especifica el directorio de datos paracontent_shell, lo que se alinea con la forma en que lee el puerto activo de DevTools (crrev.com/c/5226609, Bug: 1295373).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, lo que permite capturar las correcciones y funciones más recientes del protocolo (crrev.com/c/5374366, crrev.com/c/5349491, crrev.com/c/5317650, Bug: 4226). (Nota: Se revirtió brevemente un aumento y, luego, se volvió a aplicar debido a fallas en las pruebas crrev.com/c/5374839, crrev.com/c/5368680, crrev.com/c/5319423).
- Se reemplazaron los usos de
absl::optionalporstd::optionalen toda la base de código después de la transición deabsl::optionala un alias de tipo (crrev.com/c/5296147, Bug: 1500249). - Se extendió la cobertura de
MiraclePtr(raw_ptr) a contenedores estándar adicionales, incluidosstd::list,std::unordered_set,base::flat_set,std::stackystd::queue(crrev.com/c/5306923, Error: 325302189). - Se convirtió
WriteBigEndian()para usar conversiones de bytesbase::numericsoBigEndianWriter(que ahora aceptabase::span), lo que mejora la seguridad cuando se escriben bytes big-endian (crrev.com/c/5202348, error: 1490484). - Se cambió a ChromeDriver para ejecutar pruebas de la plataforma web (WPT) con
content_shell(excepto las pruebas virtuales y las pruebas de referencia pendientes de correcciones de errores upstream) (crrev.com/c/5347371, Bug: 40214293). - Se convirtieron todas las pruebas web existentes de Generic Sensor para que usen
test_driver.jsy sensores virtuales en lugar de simulaciones de JS/Mojo, lo que se alinea con la nueva sección Automation de la especificación de Generic Sensor (crrev.com/c/4770867, Bug: 1278377, Bug: 1471996). - Se mejoró la generación de licencias agregando
append_notices.pypara generar créditos para las dependencias deBiDiMappery actualizando la invocación delicenses.pypara que dependa estrictamente del README deselenium-atomspara los avisos de terceros (crrev.com/c/5350601, crrev.com/c/5339957, error 4729, error 4735).
ChromeDriver 123
Nuevas funciones
- FedCM: Se muestran diálogos modales para los flujos de botones de una sola cuenta, lo que incluye la incorporación de compatibilidad con vistas modales en la interfaz de automatización (crrev.com/c/5231438, error: 1518356).
- FedCM: Se implementó la compatibilidad con ChromeDriver para abrir vínculos dentro de los diálogos de FedCM, tratándolos como botones para simplificar la automatización (crrev.com/c/5225543, error: 1513520).
- Sensores: Se modificaron los comandos de sensores virtuales de WebDriver para leer los ángulos de Euler (alfa, beta y gamma) en lugar de los cuaterniones, lo que cumple con las actualizaciones recientes de las especificaciones de los sensores de orientación. Las capas internas de CDP y de servicios aún usan cuaterniones a través de un paso de conversión (crrev.com/c/5229177, Bug: 1506995, Bug: 1520912, Bug: 1520919).
Correcciones de errores
- Classic: Se corrigió un problema por el que devolver un nodo desde un marco diferente a través de una secuencia de comandos generaba incorrectamente un error de
StaleElementReference. Ahora, devuelve correctamente unJavaScriptErrorpara cumplir con el estándar de WebDriver (crrev.com/c/5222746, error: 4668). - Pruebas: Se corrigió una prueba de eventos de sobredesplazamiento que fallaba en Chrome/ChromeDriver porque el arrastre táctil se extendía fuera de los límites de la ventana. Ahora, el arrastre está correctamente restringido (crrev.com/c/5297676, Error: 40832230).
- Pruebas: Se corrigieron las pruebas de MIDI de
open-close.https.htmlpara que no construyan promesas de forma innecesaria, lo que evita los rechazos de promesas no controlados que hacían que ChromeDriver fallara en la prueba (crrev.com/c/5239869, Error: 1499775). - Pruebas: Se corrigió el conjunto de permisos en las pruebas de
wpt_internal/system-wake-lock/idlharness*en las quetest_driver.set_permission(...)pasaba incorrectamentefalseen lugar denullo unWindowProxy, lo que confundía a ChromeDriver (crrev.com/c/5271087, Error: 40287920).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, lo que permite recuperar las correcciones y funciones más recientes (crrev.com/c/5205452, crrev.com/c/5255321, crrev.com/c/5238148, crrev.com/c/5237125, Bug: 4226). (Nota: Se revirtió brevemente un aumento y, luego, se volvió a aplicar debido a errores de compilación crrev.com/c/5238855).
- Se mejoró el estado del código de ChromeDriver eliminando las conversiones estáticas no seguras de una clase base a una clase derivada en
ChromeImplyDevToolsClientImpl, lo que evita un posible comportamiento indefinido (crrev.com/c/5277062, crrev.com/c/5272562, Bug: 4702). - Se eliminaron las conversiones inseguras en
WebViewImpl(crrev.com/c/5272230, error: 4702). - Se quitaron las formas obsoletas de
base::Base64Encode()y se migró a la variante de devoluciónstd::stringmás reciente en lugar de usar parámetros de salida (crrev.com/c/5179900, crrev.com/c/5246585, Bug: 1486214). - Se actualizaron todas las directivas
#includepara quebase/...use""en lugar de<>para garantizar la coherencia (crrev.com/c/5237376, error: 1500249). - Se migraron todos los archivos
DIR_METADATAenchrome/test/a Buganizer (crrev.com/c/5284119, error: 1518875). - Se evitó que wptrunner cree un archivo
-local cuando se pasa-vvvquitando el parámetro dechromedriver --log-path=-innecesario, ya que stderr ya se redirecciona a stdout (crrev.com/c/5282721). - Se mejoró wptrunner para resumir los resultados de las pruebas cuando se producen regresiones, incluidos explícitamente los resultados de las subpruebas y los seguimientos de pila de ChromeDriver directamente en el resultado del resumen (crrev.com/c/5238662, Bug: 1521922).
- Se simplificó la depuración de las pruebas de integración de ChromeDriver con la introducción del parámetro
--remote-chromedriver-portenrun_py_tests.py, lo que permite la conexión a una instancia existente que se ejecuta en un depurador (crrev.com/c/5237254, error: 4693). - Se evitaron las llamadas de
base::HexEncode()yRandBytes()con dos argumentos para permitir que el compilador deduzca el tamaño correcto, lo que simplifica el código (crrev.com/c/5241357).
ChromeDriver 122
Correcciones de errores
- BiDi: Se actualizó la serialización de nodos profundos para incluir
loaderId, lo que permite que ChromeDriver y BiDi Mapper hagan referencia a los nodos y los desreferencien correctamente sin viajes de ida y vuelta excesivos (crrev.com/c/5116240, error: 1420968). - Capacidades: Se actualizó ChromeDriver para pasar la capacidad
acceptInsecureCertsa BiDi Mapper inmediatamente después del inicio, lo que evita condiciones de carrera en las que la capacidad podría aplicarse demasiado tarde (crrev.com/c/5125711, Bug: 4643). - Classic: Se rediseñó la generación de referencias de elementos para usar un formato
<frame_id>.<loader_id>.<backend_node_id>, lo que permite que ChromeDriver distinga de forma definitiva entre referencias de elementos válidas, desconocidas y obsoletas en las navegaciones de marcos y las actualizaciones del DOM (crrev.com/c/5094519, Bug: 4379). - Classic: Se corrigió un problema por el que el comando
window/handlespodía fallar con un error de "no such window" si un destino recién creado se cerraba (p.ej., en una condición de carrera) antes de que ChromeDriver pudiera adjuntarse a él (crrev.com/c/5147409, Error: 1506833). - FedCM: Se agregó un objeto de escucha de eventos interno para notificar cuando se cierra un diálogo de FedCM, lo que evita que el comando
dialogtypedevuelva datos obsoletos si el diálogo se cerró de forma externa (p.ej., a través deAbortController.abort) (crrev.com/c/5067504, Bug: 1506292). - FedCM: Se quitó el prefijo del proveedor del comando
ClickDialogButton, ya que ahora se aprobó en la especificación de FedCM (crrev.com/c/5092527, error 1499341).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper a la versión más reciente (crrev.com/c/5205452, error: 4226).
- Se redujo el tráfico de ChromeDriver y del protocolo de Herramientas para desarrolladores de Chrome (CDP) quitando las llamadas
Page.enableredundantes que se envían desde cadaDevToolsEventListener, ya queDevToolsClientImplya controla esto por destino (crrev.com/c/5088789, error: 4600). - Se cambiaron todos los compiladores de Wptrunner para
content_shellal estado experimental, ya que actualmente no se admite por completo la ejecución de pruebas en modo de protocolo mientras la integración de ChromeDriver está en curso (crrev.com/c/5225148, Bug: 1474702). - Se omitieron las pruebas que requieren
window.test_driver_internal.get_computed_roleencontent_shell, ya que aún no se implementó, lo que evita fallas deTypeError(crrev.com/c/5189678, Bug: 1517744). - Se volvió a incluir la refactorización para usar marcas
IS_OZONE_{X11, WAYLAND}independientes de la plataforma en lugar deOZONE_PLATFORM_*(crrev.com/c/5086329, error: 1500494). - Se actualizó la dependencia de
selenium-atomsa la revisión más reciente (crrev.com/c/5110808, error: 4662). - Se corrigió la lógica en las pruebas de SnapEvents cuando se ejecutan en el objeto binario completo de Chrome redondeando las entradas de movimiento del puntero, aplicando el parámetro
originpara los desplazamientos y usando aserciones de aproximación (assert_approx_equals) para controlar las discrepancias fraccionarias de desplazamiento o desplazamiento (crrev.com/c/5097343). - Se agregó el asistente
StringPrintfNonConstexpr()para distinguir deStringPrintf()cuando las cadenas de formato no son constantes de tiempo de compilación (crrev.com/c/4950568, Bug: 1371963). - Se garantizó que el escape de la macro
chromium::import!de Rust use una función inyectiva para evitar colisiones en los nombres de destino de GN generados (crrev.com/c/5132119, Bug: 1512174). - Se limpió la implementación de
ScopedTempDirWithRetryagregando un constructor y devoluciones anticipadas en el destructor (crrev.com/c/5113843).
ChromeDriver 121
Nuevas funciones
- Pruebas: Se agregó compatibilidad para ejecutar pruebas integradas de ChromeDriver (
chromedriver_py_test) enchrome-headless-shell, además del navegador Chrome estándar en los bots de compilación. Esto incluye la capacidad de descubrir el archivo binario del navegador según el parámetro--browser-namey ejecutar de forma condicional conjuntos de pruebas específicos (crrev.com/c/4995189, crrev.com/c/4989442, Bug: 4358).
Correcciones de errores
- Estabilidad: Se inicializó el valor predeterminado
KeyboardLayoutEnginecomoStubKeyboardLayoutEnginepara evitar fallas de ChromeDriver causadas por un acierto deDCHECKenKeyboardLayoutEngineManager::SetKeyboardLayoutEngine(crrev.com/c/5017859, error: 4625). - Estabilidad: Se corrigió un problema de inestabilidad en el que ChromeDriver podía fallar si el subproceso de la sesión solicitaba cerrar una conexión después de que el cliente ya había solicitado cerrar la misma conexión (crrev.com/c/4994636, error: 4606).
- Administración de recursos: Se corrigieron las pérdidas de recursos en las pruebas de integración de ChromeDriver (
RemoteBrowserTest) garantizando que el proceso del navegador finalice incluso si un comando de ChromeDriver arroja una excepción (crrev.com/c/5009554, Error: 4614). - Administración de recursos: Se implementó lógica en las pruebas de integración de ChromeDriver para detectar y finalizar cualquier proceso del navegador abandonado por el proceso de ChromeDriver (crrev.com/c/5014093, Error: 4617).
- Inicio: Se corrigió un problema por el que
chrome-headless-shelldevolvía una lista de destinos vacía, lo que impedía la creación de sesiones, agregando el argumentodata:,a la línea de comandos del navegador cuando el nombre del navegador erachrome-headless-shell(crrev.com/c/5010392, crrev.com/c/5009535, Bug: 4615, Bug: 4358). - FedCM: Se agregó un nuevo evento para notificar cuando se cierra un diálogo de FedCM, lo que garantiza que
dialogtypey otros comandos no devuelvan datos obsoletos si el diálogo se cerró de forma externa (p.ej., a través deAbortController.abort) (crrev.com/c/5067504, Bug: 1506292). - Pruebas: Se corrigieron y volvieron a habilitar todas las pruebas de integración de ChromeDriver que se habían inhabilitado anteriormente para
chrome-headless-shellen Windows (crrev.com/c/5027594, Bug: 4358). - Pruebas: Se debilitaron las aserciones demasiado estrictas en
testElementRegionTestpara alinearse con el estándar de WebDriver, lo que resolvió la inestabilidad causada por las peculiaridades de la renderización del navegador (crrev.com/c/5017865, Bug: 4526).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia del asignador de BiDi (crrev.com/c/4994305, error: 4226).
- Se revirtió el uso de
IS_OZONE_{X11, WAYLAND}en favor deOZONE_PLATFORM_*debido a un error (crrev.com/c/5086571, se revirtió crrev.com/c/5083096, error: 1500494). - Se migró el código en
commands_unittest.ccpara usarbase::BindLambdaForTestingen lugar debase::Passed, que dejó de estar disponible (crrev.com/c/5078589, Bug: 1326449). - Se refactorizó
session.newpara extraer el control de capacidades de código repetitivo (p.ej.,testName,binary,browserName) en un método dedicado y se garantizó que el comando respete las capacidades de manera similar al comando clásico (crrev.com/c/5004665, crrev.com/c/5001510, Bug: 4358, Bug: 4610). - Se quitó el uso del encabezado
base/strings/string_piece_forward.hobsoleto (crrev.com/c/5008994, error: 691162). - Se preparó la transición de
net::IOBuffera una clase no propietaria connet::IOBufferWithSizepara los casos de propiedad (crrev.com/c/4996470, Bug: 1493389). - Se introdujo y utilizó
base::RandBytesAsVector()para evitar almacenar valores binarios en cadenas (crrev.com/c/5018451). - Se inhabilitaron varias pruebas de integración de Python que fallaban de forma constante en Mac para evitar que generaran compilaciones correctas debido a la exoneración del análisis de LUCI (crrev.com/c/4998771, Bug: 1486604, Bug: 1486520, Bug: 1486474, Bug: 1481915).
- Se cambió el nombre de
webdriver_tests_suite(ywpt_tests_suite) achrome_wpt_testspara estandarizar las convenciones de nomenclatura del conjunto de WPT en los compiladores de prueba de Linux (crrev.com/c/5014293, error: 1474702). - Se cambió el propósito del comando
ConfirmIdpLoginde WebDriver de FedCM a un comandoClickDialogButtonmás extensible que acepta un parámetroDialogButton(crrev.com/c/5003255, Bug: 1499341). - Se actualizó la dependencia de
crossbenchcon numerosas correcciones y funciones, incluido un mejor análisis del tipo de controlador, stubs de red y compatibilidad con iOS (crrev.com/c/5009937). - Se agregó el
#include <string>faltante achrome_finder.hpara cumplir con IWYU (crrev.com/c/4994605, error: 957519).
ChromeDriver 120
Nuevas funciones
- BiDi: Se agregó compatibilidad con los comandos
session.newysession.end, lo que permite a los usuarios crear y finalizar sesiones directamente a través de comandos de BiDi (crrev.com/c/4941941, Bug: 4496). - BiDi: Se agregó compatibilidad con el comando
session.statusPureBiDi, lo que permite a los usuarios establecer una conexión WebSocket que no está vinculada a ninguna sesión y recuperar el estado de la sesión (crrev.com/c/4938596, error: 4496). (Se volvió a publicar después de una reversión anterior en crrev.com/c/4922097) - BiDi: Se actualizó la dependencia de BiDi Mapper y se alineó con el nuevo proceso de ejecución de Mapper simplificado (crrev.com/c/4952609, error: 4226).
- Sensores: Se implementaron comandos de sensores virtuales en
browser_protocol.pdly la capa de CDP (dominio de emulación), y se agregó compatibilidad con la sección Automation de la especificación de Generic Sensor (crrev.com/c/4770864, Bug: 1278377). - Sensores: Se agregaron comandos de extensión de ChromeDriver para la administración de sensores virtuales, que traducen los parámetros de WebDriver a las nuevas llamadas de CDP (crrev.com/c/4770866, error: 1278377).
- Sensores: Se agregó una ruta de instrucciones de código
content_shellpara la manipulación de sensores virtuales a través detestdriver.js, lo que omite ChromeDriver por completo para las pruebas web (crrev.com/c/4770865, error: 1278377). - Mitigaciones del seguimiento: Se agregó compatibilidad con ChromeDriver para las mitigaciones del seguimiento de rebote (DIPS), lo que permite la automatización de la especificación
nav-tracking-mitigations(crrev.com/c/4873672, error: 1474656). (Nota: Este cambio se revirtió temporalmente debido a errores de prueba en Mac en crrev.com/c/4938394)
Correcciones de errores
- Inicio: Se agregó la detección de Headless Shell a ChromeDriver, lo que le permite buscar el archivo binario
chrome-headless-shellsi se solicita a través de capacidades y no se proporciona una ruta de acceso explícita (crrev.com/c/4987262, Error: 4358). (Se volvió a enviar después de una reversión anterior en crrev.com/c/4984449) - WebSockets: Se implementó compatibilidad parcial con el protocolo de enlace de cierre de WebSocket, lo que garantiza que ChromeDriver responda con un marco
CLOSEcuando se recibe uno del extremo remoto (crrev.com/c/4931500, Error: 4499). - Permisos: Se expuso
options.disclaim_responsibilitycomo una marca de compilación para permitir que las compilaciones de proveedores (como Microsoft Teams) la desactiven, lo que evita que las solicitudes de permisos de macOS detengan la automatización de pruebas (crrev.com/c/4929495, error 1223643). - Cumplimiento del estándar de C++: Se corrigió el comportamiento indefinido (UB) detectado por UBSan cuando se convertía un valor doble fuera del rango a un valor int agregando verificaciones de rango (crrev.com/c/4980055, error: 1394755).
- FedCM: Se quitó la compatibilidad con la sintaxis de encabezado anterior, lo que garantiza el cumplimiento de la sintaxis estándar de
login-status-http(crrev.com/c/4957073, error: 1381501).
Cambios internos y refactorizaciones
- Se agregó la prueba de integración
testReturnFrameElementpara verificar el comportamiento de ChromeDriver en relación con el tratamiento dewindow.frameElementcomo referencia obsoleta (crrev.com/c/4983549, Bug: 4477). - Se mejoró el registro. Para ello, se garantiza que ChromeDriver registre las rutas de acceso específicas en las que intenta ubicar el objeto binario del navegador (crrev.com/c/4976116, error: 4539).
- Se cambiaron los nombres de varias funciones
base::Timepara que sean más descriptivos (p.ej.,FromDoubleT()aFromSecondsSinceUnixEpoch()) (crrev.com/c/4956111). - Se refactorizaron el constructor
net::StringIOBuffery las instanciacionesIOBufferpara evitar copias innecesarias de cadenas y asignaciones de longitud cero (crrev.com/c/4938384, crrev.com/c/4959174). - Se limpió el manejo de cadenas reemplazando
base::StrCatpor+cuando correspondía y utilizandobase::AppendHexEncodedByte()(crrev.com/c/4963465, crrev.com/c/4977165). - Se cambió el nombre de
DIR_SOURCE_ROOTaDIR_SRC_TEST_DATA_ROOTen todas las pruebas de//chrome*para mayor claridad (crrev.com/c/4916045, Bug: 1264897). - Se inhabilitaron las pruebas de
PureBidiTestpoco confiables en los compiladores de Mac (crrev.com/c/4983555, error: 1496826).
ChromeDriver 119
Nuevas funciones
- BiDi: Se implementó la compatibilidad para resolver referencias débiles a objetos locales que devuelve el extremo remoto durante las llamadas a funciones remotas (crrev.com/c/4886760, error: 4536).
- FedCM: Se agregó el comando
confirmidpsignincon prefijo de proveedor para admitir la prueba de origen de la API de IDP Sign-In Status (crrev.com/c/4811725, error: 1451884).
Correcciones de errores
- Emulación de dispositivos móviles: Se corrigió un problema por el que los dispositivos predefinidos sin Client Hints (p.ej., configuraciones anteriores) se dañaban al completarlos con valores predeterminados razonables (crrev.com/c/4887254, error: 4550).
- Classic: Se corrigió la serialización de los objetos
MapySet. Ahora se serializan correctamente comoObjecten lugar deCollection, ya que no tienen una propiedadlength(crrev.com/c/4881378, error: 4031). - Classic: Se restableció la lógica para descargar y usar siempre la versión compatible más reciente de ChromeDriver durante las pruebas, y se recurre a versiones específicas solo cuando surgen problemas de compatibilidad (crrev.com/c/4779613, revierte crrev.com/c/4778973).
- FedCM: Se estandarizaron los comandos de automatización del navegador cambiando el nombre de
SigninaLogin(confirmidplogin) para alinearse con los debates más recientes sobre la especificación de FedCM (crrev.com/c/4901302, Bug: 1451884). - Pruebas: Se corrigieron las pruebas de FedCM que fallaban cuando se inhabilitaban las cookies de terceros. Para ello, se habilitó de forma explícita la API de IDP Sign-In Status durante la ejecución de prueba (crrev.com/c/4889802, error: 1484833).
- Pruebas: Se reemplazó el marcador de posición de URL no válido
~NOTFOUNDpor^NOTFOUNDen los ejecutores de pruebas para cumplir con los próximos cambios en la aplicación de los estándares de URL de Chromium (crrev.com/c/4845589, Bug: 1416013).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper a la versión 0.4.27, que incluye las correcciones y funciones más recientes (crrev.com/c/4862031, crrev.com/c/4890322).
- Se reemplazaron varias APIs de puntero/longitud en
//urlporstd::string_viewpara mejorar la seguridad y la comodidad (crrev.com/c/4897456). - Se realizó la transición de la utilidad
generateWebDriverValuepara que use la opción de serialización profunda (serializationOptions.serialization: deep) que proporciona de forma nativa el protocolo BiDi (crrev.com/c/4889644). - Se agregaron pruebas de integración para verificar que la búsqueda con una referencia de elemento obsoleta muestre correctamente un error de "referencia de elemento obsoleta" (crrev.com/c/4886793, Bug: 4440).
- Se mejoró el formato del estilo de código en
call_function.js(crrev.com/c/4882511, error: 4031). - Se mejoró la respuesta del usuario informándole explícitamente cuando se conecta a través de WebSockets que se admiten y recomiendan las canalizaciones para una mayor confiabilidad y seguridad (crrev.com/c/4882626, error 3480).
- Se actualizó la configuración del paquete de WPT para archivar
results.htmlpara las pruebas dewebdriver_tests_suite, lo que proporciona una mejor IU para ver los resultados (crrev.com/c/4873223). - Se corrigió la integración de las Herramientas para desarrolladores con WebView marcando WebView WebContents y configurando su tipo de Herramientas para desarrolladores como
popup_pageen lugar deother(crrev.com/c/4842093). - Se cambió el nombre del destino de compilación de WPT
chrome_wptachrome_wpt_testspara mantener la coherencia y se quitó el destino redundantewebdriver_wpt_tests(crrev.com/c/4847474, error: 1474702). - Se migró
run_py_tests.pyde la bibliotecaoptparseobsoleta aargparse(crrev.com/c/4849411, error: 4557).
ChromeDriver 118
Nuevas funciones
- Pruebas de integración: Se introdujeron pruebas de integración de C++ para ChromeDriver, lo que permite probar clases específicas con tráfico de CDP real y llenar la brecha entre las pruebas de unidades y las pruebas de integración de Python (crrev.com/c/4707855, error: 4528).
- Crossbench: Se actualizó la dependencia de
crossbenchcon numerosas mejoras, incluidas nuevas historias de comparativas de potencia, mejor compatibilidad con plataformas y dispositivos, depuración mejorada y varias correcciones (crrev.com/c/4803743).
Correcciones de errores
- Capacidades: Se corrigió un problema por el que faltaba
debuggerAddressen las capacidades devueltas en las configuraciones predeterminadas. Ahora se devuelve correctamente para admitir la comunicación BiDi basada en CDP de Selenium (crrev.com/c/4789068, Error: 4533). - Capacidades: Se garantizó que ChromeDriver devuelva valores
platformNameestándar (p.ej., "linux", "windows", "mac") según lo requiere la especificación de WebDriver (crrev.com/c/4797735, Error: 4548).
Cambios internos y refactorizaciones
- Se migró el código en
MockSocketpara preferirbase::span<>en lugar de punteros sin procesar para mejorar la seguridad (crrev.com/c/4832086). - Se quitaron los usos obsoletos de
base::raw_ptrybase::raw_refy se reemplazaron por sus formas no calificadasraw_ptryraw_refa través de una limpieza automatizada (crrev.com/c/4773481). - Se revirtió temporalmente un cambio que siempre usaba la versión más reciente de ChromeDriver, ya que provocaba fallas en los canales estable y beta de Windows (crrev.com/c/4778973, revirtiendo crrev.com/c/4777430).
- Se ajustaron las configuraciones de WPT (pruebas de la plataforma web), incluida la supresión de fallas solo de depuración en
pointer_touch.pyy la implementación de la verificación del enfoque del lado del navegador para los marcos delimitados (crrev.com/c/4844810, crrev.com/c/4572517). - Se agregó el
#include <vector>faltante aclient_hints.hpara cumplir con IWYU (crrev.com/c/4767547). - Se migraron los tipos básicos específicos de Apple (
ScopedTypeRef,ScopedCFTypeRef,scoped_nsautorelease_pool) al espacio de nombresbase::apple::, y se dejaron encabezados de reenvío temporales para Crashpad (crrev.com/c/4799213, crrev.com/c/4790744, crrev.com/c/4790741, crrev.com/c/4784010).
ChromeDriver 117
Nuevas funciones
- Pipes Communication: Se cambió el modo de comunicación predeterminado entre ChromeDriver y Chrome de WebSockets a pipes (
--remote-debugging-in-pipey--remote-debugging-out-pipe) en todas las plataformas compatibles, incluido Windows (crrev.com/c/4634299, crrev.com/c/4628834, crrev.com/c/4635378, Bug: 3480). - BiDi: Se actualizó la dependencia de BiDi Mapper (crrev.com/c/4670516, error: 4226).
Correcciones de errores
- Estabilidad: Se corrigió un acceso a un puntero nulo que provocaba que ChromeDriver fallara, lo que, a su vez, generaba errores de
ConnectionRefuseddurante las ejecuciones de prueba (crrev.com/c/4675633, Bug: 1457101). - Navegación: Se corrigió un problema por el que los errores
NoSuchExecutionContextyNoSuchWindowde Chrome durante la navegación no se controlaban de manera uniforme. Ahora, ambos se asignan correctamente para volver a intentar la operación (crrev.com/c/4667156, error 4459). - Emulación de dispositivos móviles: Se corrigió la lógica de inferencia para
clientHints.mobile. Ahora se infiere correctamente a partir deuserAgenten Android y se establece de forma predeterminada como falso en otras plataformas, lo que corrige un problema por el que las tablets se informaban incorrectamente como dispositivos móviles (crrev.com/c/4649348, Bug: 4243). - Creación de sesiones: Se actualizó la creación de sesiones para que devuelva correctamente el código de error estándar
SessionNotCreateden caso de falla, en estricto cumplimiento con la especificación de WebDriver de W3C (crrev.com/c/4638223, Bug: 4379). Nota: Este cambio se revirtió posteriormente, ya que algunas rutas de código específicas requieren códigos de error diferentes (crrev.com/c/4651188).
Cambios internos y refactorizaciones
- Se eliminaron las secuencias de comandos manuales del proceso de lanzamiento de ChromeDriver, ya que ahora ChromeDriver está completamente integrado en el proceso de lanzamiento de Chrome y está disponible a través de la infraestructura de Chrome for Testing (crrev.com/c/4520687, Error: 4142).
- Se migró la infraestructura de WPT (pruebas de la plataforma web) para usar el arnés
wptrunneroficial en lugar delrun_webdriver_tests.pypersonalizado, lo que mejoró significativamente la velocidad y la confiabilidad de la ejecución, y garantizó que ChromeDriver se reiniciara entre las pruebas para aislar las fallas (crrev.com/c/4723147, crrev.com/c/4676070, crrev.com/c/4639168). - Se refactorizaron de forma exhaustiva
ChromeLaunchery las clases relacionadas para admitir la transición a canalizaciones, lo que redujo el acoplamiento conDevToolsHttpClienty trasladó la lógica de WebSocket a ramas dedicadas (crrev.com/c/4632801, crrev.com/c/4674345). - Se cambió el nombre del campo engañoso
BrowserInfo.is_headlessaBrowserInfo.is_headless_shellpara mayor claridad (crrev.com/c/4650452, Error: 4358). - Se reemplazaron varios métodos
base::Valueobsoletos por los equivalentes modernos debase::Value::Dict(p.ej.,FindDouble(),Set(),size()) en toda la base de código (crrev.com/c/4258936, crrev.com/c/4336805, crrev.com/c/4461067).112.0.5603.0, 113.0.5653.0, 114.0.5733.0 - Se quitó el uso de
[w]ctype.hy se reemplazó por utilidades de cadenas básicas más seguras. Además, se implementaron nuevas funciones parabase::expected(crrev.com/c/4749459, crrev.com/c/4755226). - Se implementaron los comandos de automatización
get_fedcm_dialog_titleyselect_fedcm_accountenTestDriverpara las WPT de FedCM (crrev.com/c/4618303). - Se actualizaron las secuencias de comandos de compilación del asignador BiDi para que funcionen correctamente independientemente del directorio de trabajo actual (crrev.com/c/4670550).
- Se convirtieron los archivos
/chrome/test/chromedriverpara usar ARC (recuento automático de referencias) en las compilaciones de macOS y se agregó el código estándar necesario (crrev.com/c/4663602). - Se intentó inhabilitar la comunicación de canalizaciones de forma predeterminada a través de una confirmación automática de aprobación, pero el cambio solo afectó la configuración sin alterar el comportamiento principal de las canalizaciones predeterminadas que se introdujo anteriormente (crrev.com/c/4683947).
ChromeDriver 116
Nuevas funciones
- FedCM: Se agregó una nueva capacidad que permite a los clientes verificar si ChromeDriver admite comandos de FedCM sin necesidad de ejecutarlos y detectar errores (crrev.com/c/4624924, error: 1356159).
- Pruebas: Se habilitó la reutilización de ventanas de prueba para las pruebas de testharness que se ejecutan a través de ChromeDriver en
wptrunnerpara evaluar su impacto en el rendimiento y la inestabilidad (crrev.com/c/4515180, error: 1394572).
Correcciones de errores
- Cumplimiento del estándar de C++: Se corrigió el comportamiento indefinido causado por el uso incorrecto de enumeraciones con alcance (clase enum) directamente en cadenas de formato, lo que aborda las nuevas advertencias del compilador Clang (crrev.com/c/4628112, Bug: 1456289).
- FedCM: Se corrigió un caso límite que impedía que
setdelayenabledfuncionara correctamente, lo que solucionó una posible causa de inestabilidad en las pruebas (crrev.com/c/4606064, error: 1453412).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper y se actualizó la secuencia de comandos de compilación para extraer la revisión más reciente de "main" de forma predeterminada (crrev.com/c/4615087, crrev.com/c/4615791, Bug: 4226).
- Se realizó la transición de ChromeDriver para abrir y escribir todos los archivos con codificación UTF-8 de forma explícita (crrev.com/c/4614522).
- Se refactorizó
ChromeImplpara eliminar su dependencia deDevToolsHttpClienty se redujo el uso deSyncWebSocketFactoryyBrowserInfoen preparación para la comunicación a través de canalizaciones en lugar de WebSockets (crrev.com/c/4571690, crrev.com/c/4571199, Bug: 3480). - Se quitó el "modo predeterminado" obsoleto para los marcos delimitados y se actualizaron las pruebas asociadas para habilitar la nueva marca de función, lo que continúa la migración a las subastas de FLEDGE (crrev.com/c/4558645).
- Se mejoraron las pruebas de FedCM reemplazando las aserciones genéricas
WaitForConditionporassertTruepara indicar claramente cuándo se producen tiempos de espera (crrev.com/c/4590211). - Se marcaron como conocidas las advertencias de
raw_ptrcolgantes no confiables en las pruebas unitarias delinux-rel(crrev.com/c/4598070). - Se actualizó el archivo OWNERS para el asignador de BiDi (crrev.com/c/4614518).
ChromeDriver 115
Nuevas funciones
- Emulación de dispositivos móviles: Se implementó la compatibilidad con User-Agent Client Hints en la emulación de dispositivos móviles, lo que permite que ChromeDriver analice las Client Hints a partir de capacidades y parámetros predeterminados, y que las pase a Chrome (crrev.com/c/4498667, crrev.com/c/4466129, Error: 4243).
- Emulación de dispositivos móviles: Se actualizaron los parámetros de configuración predeterminados de la emulación de dispositivos móviles para usar la versión principal del navegador host en lugar de la versión de ChromeDriver cuando se reemplaza la cadena de formato
%sen el usuario-agente (crrev.com/c/4502850, Error: 4243). - Configuración: Se agregó compatibilidad para descargar una versión específica de ChromeDriver para un canal determinado, lo que mejora las situaciones de automatización en las que ChromeDriver se ejecuta en una plataforma diferente (como Android o WebView) que el host (crrev.com/c/4550281).116.0.5791.0
Correcciones de errores
- Classic: Se corrigió un problema por el que, si no se podía resolver un nodo, se devolvía incorrectamente un
UnknownErroren lugar del error estándarNoSuchElement(crrev.com/c/4508952, Bug: 4440). - Emulación de dispositivos móviles: Se agregaron aserciones más estrictas a los ajustes predeterminados de emulación de dispositivos móviles para aplicar que la marca
clientHints.mobiledebe ser verdadera si la cadenauserAgentcontiene "Mobile" (crrev.com/c/4507142, Bug: 4243). - Emulación de dispositivos móviles: Se migraron los reemplazos de
DeviceMetricspara usar el comandoEmulation.setDeviceMetricsOverridede CDP en lugar del dominioPageequivalente que quedó obsoleto (crrev.com/c/4502614, Error: 4243).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper, lo que habilita funciones de serialización profunda (crrev.com/c/4535936, crrev.com/c/4512195).
- Se quitó el método
Connectobsoleto deDevToolsClientcomo preparación para migrar ChromeDriver para que se comunique a través de canalizaciones (crrev.com/c/4521485, Bug: 3480). - Se migró la base de código para preferir
base::Value::Dicten lugar debase::Valuey se reemplazaron los métodos obsoletos, comoFindStringKey(),SetKey()ySetByDottedPath()(crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150). - Se cambió el uso de funciones
string_util.hen lugar de[w]ctype.hpara conversiones de tipos más seguras (crrev.com/c/4529187). - Se cambió la lógica de carga de archivos de inicialización para usar rutas de acceso absolutas y garantizar la coherencia cuando las secuencias de comandos y Chrome se ejecutan en diferentes ubicaciones (crrev.com/c/4504656).
- Se quitó el método
CallAsyncFunction()sin usar deweb_view.h(crrev.com/c/4518363, Bug: 3376). - Se aplicó un cambio de nombre automático de
base::raw_ptraraw_ptrpara seguir las preferencias de la guía de estilo (crrev.com/c/4476651).
ChromeDriver 114
Nuevas funciones
- Clásico: Se pasó información de
MobileDeviceaMobileEmulationOverrideManagerpara sentar las bases de futuras anulaciones de Client Hints y UserAgent (crrev.com/c/4447524). - Pruebas: Se agregaron elementos de prueba para ChromeDriver (crrev.com/c/4459939).
Correcciones de errores
- Headless: Se corrigió una falla en el nuevo modo sin interfaz gráfica ignorando de forma silenciosa las solicitudes de vista previa de impresión basadas en secuencias de comandos (p.ej.,
window.print()), lo que alinea el comportamiento con el modo sin interfaz gráfica anterior (crrev.com/c/4436313, error: 4385). - Capacidades: Se corrigió un error de uso después de movimiento en las capacidades de ChromeDriver (crrev.com/c/4462094, error: 4243).
- DevTools: Se quitó un
DCHECKenDevToolsClientImpl::SendCommandInternalpara evitar fallas cuando se interrumpe la conexión de las Herramientas para desarrolladores, ya que esto no es un incumplimiento de la invariante (crrev.com/c/4370486, error: 4385).
Cambios internos y refactorizaciones
- BiDi: Se actualizó la dependencia de BiDi Mapper (crrev.com/c/4418727).
- Se corrigieron varias advertencias de punteros colgantes durante la ejecución de pruebas de unidades administrando correctamente las referencias no propias y la destrucción local en
WebViewImply en las pruebas del registrador de rendimiento (crrev.com/c/4374824, crrev.com/c/4368179). - Se migró la base de código para usar la nueva API de
base::Valuev2, lo que reemplazó métodos obsoletos comoValue::SetPath(),Value::SetStringPath()ybase::ListValue(crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520). - Se reemplazaron todos los usos de
base::GUIDporbase::Uuidpara alinearse con el cambio de nombre de la biblioteca base principal (crrev.com/c/4455083). - Se realizaron varias limpiezas de código, como acortar el código, usar operaciones monádicas para
expected, quitar código inactivo y corregir incumplimientos de estilo (crrev.com/c/4475368, crrev.com/c/4464199). - Se actualizaron las pruebas que involucran marcos delimitados para usar el atributo
configen lugar del atributosrcobsoleto (crrev.com/c/4382231). - Se quitó el uso ineficaz de
ShadowDOMV0(crrev.com/c/4388302). - Se revirtió la adición de una marca para una corrección de PDF de Skia (
SK_IGNORE_PDF_EOF_NEWLINE_FIX) para permitir el rebaselining (crrev.com/c/4401451). - Se actualizó el propietario de la secuencia de comandos de prueba de ChromeDriver y se realizaron ajustes para generar el JSON de configuración exclusivamente para pinpoint (crrev.com/c/4437492, crrev.com/c/4298554).
- Se agregó un include faltante (
<cstring>) parastd::strlenenweb_view_impl.ccpara corregir un problema de compilación de IWYU (crrev.com/c/4376772). - Se quitó un archivo de prueba sin usar (
orientation_test.html) (crrev.com/c/4335668).
ChromeDriver 113.0.5672.63
Es compatible con la versión 113 de Chrome.
- Se resolvió el problema 4205: Mismos IDs de objetos en Classic y BiDi [Pri-1]
- Se resolvió el problema 4302: No se debe suponer que Mapper está en la primera pestaña de ExecuteGetWindowHandles [Pri-1].
- Se resolvió el problema 4356: Chrome 110 no utiliza el valor de preferencia "download.default_directory" [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 113.0.5672.24
Es compatible con la versión 113 de Chrome.
- Se resolvió el problema 4205: Mismos IDs de objetos en Classic y BiDi [Pri-1]
- Se resolvió el problema 4302: No se debe suponer que Mapper está en la primera pestaña de ExecuteGetWindowHandles [Pri-1].
- Se resolvió el problema 4356: Chrome 110 no utiliza el valor de preferencia "download.default_directory" [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 112.0.5615.49
Es compatible con la versión 112 de Chrome.
- Se resolvió el problema 3517: Se habilitó la función de impresión para no headless [Pri-]
- Se resolvió el problema 4419: Sobrecarga grande en Speedometer cuando se usa chromedriver [Pri-3]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 112.0.5615.28
Es compatible con la versión 112 de Chrome.
- Se resolvió el problema 4357: Problema de sesión de Chromedriver versión 110.0.5481.77 con las opciones --headless y --user-data-dir. [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 111.0.5563.64
Es compatible con la versión 111 de Chrome.
- Se resolvió el problema 4216: Ejecutar ChromeDriver con BiDiMapper personalizado [Pri-]
- Se resolvió el problema 4300: El identificador de ventana es interoperable entre Classic y BiDi [Pri-]
- Se resolvió el problema 4325: El control de toJSON en jsonSerialize de call_function.js se desvía del estándar. [Pri-]
- Se resolvió el problema 4330: Se produce un error en DCHECK en DevToolsClientImpl::AddListener [Pri-]
- Se resolvió el problema 4357: Problema de sesión de ChromeDriver con las opciones --headless y --user-data-dir [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 111.0.5563.41
Es compatible con la versión 111 de Chrome.
- Se resolvió el problema 4357: Problema de sesión de ChromeDriver con las opciones --headless y --user-data-dir [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 111.0.5563.19
Es compatible con la versión 111 de Chrome.
- Se resolvió el problema 4216: Ejecutar ChromeDriver con BiDiMapper personalizado [Pri-]
- Se resolvió el problema 4300: El identificador de ventana es interoperable entre Classic y BiDi [Pri-]
- Se resolvió el problema 4325: El control de toJSON en jsonSerialize de call_function.js se desvía del estándar. [Pri-]
- Se resolvió el problema 4330: Se produce un error en DCHECK en DevToolsClientImpl::AddListener [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 110.0.5481.77
Es compatible con la versión 110 de Chrome.
- Se resolvió el problema 4193: No se pudo iniciar una sesión nueva en Android 13 [Pri-]
- Se resolvió el problema 4272: WebSocket debería tratar code=0 como una indicación de FIN [Pri-]
- Se resolvió el problema 4276: Se corrigieron los problemas de conectividad en ChromeDriver [Pri-]
- Se resolvió el problema 4295: ChromeDriver con
"webSocketUrl": truees susceptible a condiciones de carrera [Pri-] - Se resolvió el problema 4297: ChromeDriver Bidi serializa de forma incorrecta [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 110.0.5481.30
Es compatible con la versión 110 de Chrome.
- Se resolvió el problema 4193: No se pudo iniciar una sesión nueva en Android 13 [Pri-]
- Se resolvió el problema 4272: WebSocket debería tratar code=0 como una indicación de FIN [Pri-]
- Se resolvió el problema 4276: Se corrigieron los problemas de conectividad en ChromeDriver [Pri-]
- Se resolvió el problema 4295: ChromeDriver con
"webSocketUrl": truees susceptible a condiciones de carrera [Pri-] - Se resolvió el problema 4297: ChromeDriver Bidi serializa de forma incorrecta [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 109.0.5414.74
Se admite la versión 109 de Chrome
- Se resolvió el problema 4179: La sesión de BiDi debe admitir varias conexiones [Pri-]
- Se resolvió el problema 4203: Mejora la información de créditos [Pri-]
- Se resolvió el problema 4263: Falla en Meta + A [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 109.0.5414.25
Se admite la versión 109 de Chrome
- Se resolvió el problema 4179: La sesión de BiDi debe admitir varias conexiones [Pri-]
- Se resolvió el problema 4203: Mejora la información de créditos [Pri-]
- Se resolvió el problema 4263: Falla en Meta + A [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 108.0.5359.71
Es compatible con la versión 108 de Chrome. Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 108.0.5359.22
Se admite la versión 108 de Chrome
- Se resolvió el problema 4204: Se corrigió la falla de la prueba WPT test_top_level_and_one_child [Pri-]
- Se resolvió el problema 4215: Se cambió el nombre de la compilación chromedriver_mac64_m1 a chromedriver_mac_arm64 [Pri-]
- Se resolvió el problema 4221: Se produce una falla cuando un comando de clic cierra el navegador [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 107.0.5304.62
Es compatible con la versión 107 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 107.0.5304.18
Es compatible con la versión 107 de Chrome.
- Se resolvió el problema 4180: Se prohíbe cualquier control de comandos BiDi hasta que se notifique que se inició BiDiMapper [Pri-]
- Se resolvió el problema 4198: ChromeDriver BiDi no debería suponer que BiDiMapper siempre está en la primera pestaña [Pri-]
- Se resolvió el problema 4207: Error de WebDriver al ejecutar WPT [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 106.0.5249.61
Es compatible con la versión 106 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 106.0.5249.21
Es compatible con la versión 106 de Chrome.
- Se resolvió el problema 4016: Se agregó compatibilidad básica con BiDi a ChromeDriver (basado en Mapper) [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 105.0.5195.52
Es compatible con la versión 105 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 105.0.5195.19
Versión de Chrome compatible
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 104.0.5112.79
Se admite la versión 104 de Chrome
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 104.0.5112.29
Se admite la versión 104 de Chrome
- Se resolvió el problema 4121: A veces, el comando WebDriver falla con el mensaje "unexpected command response" [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 104.0.5112.20
Se admite la versión 104 de Chrome
- Se resolvió el problema 4121: A veces, el comando WebDriver falla con el mensaje "unexpected command response" [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 103.0.5060.134
Se admite la versión 103 de Chrome
- Se resolvió el problema 4048: Se desconectó el fotograma de destino [Pri-]
- Se resolvió el problema 4121: A veces, el comando WebDriver falla con el mensaje "unexpected command response" [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 103.0.5060.53
Se admite la versión 103 de Chrome
- Se resolvió el problema 4048: Se desconectó el fotograma de destino [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 103.0.5060.24
Se admite la versión 103 de Chrome
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 102.0.5005.61
Es compatible con la versión 102 de Chrome.
- Se resolvió el problema 1309282: chromedriver no admite parámetros de configuración con varios valores [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 102.0.5005.27
Es compatible con la versión 102 de Chrome.
- Se resolvió el problema 1309282: chromedriver no admite parámetros de configuración con varios valores [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 101.0.4951.41
Es compatible con la versión 101 de Chrome.
- Se resolvió el problema 4046: Se produjo un error de DCHECK al agregar un marco delimitado vacío [Pri-]
- Se resolvió el problema 4080: No se puede cambiar a un fotograma anidado [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 101.0.4951.15
Es compatible con la versión 101 de Chrome.
- Se resolvió el problema 4046: Se produjo un error de DCHECK al agregar un marco delimitado vacío [Pri-]
- Se resolvió el problema 4080: No se puede cambiar a un fotograma anidado [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 100.0.4896.60
Es compatible con la versión 100 de Chrome.
- Se resolvió el problema 4002: Compatibilidad con Fenced Frames [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 100.0.4896.20
Es compatible con la versión 100 de Chrome.
- Se resolvió el problema 4002: Compatibilidad con Fenced Frames [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 99.0.4844.51
Es compatible con la versión 99 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 99.0.4844.35
Es compatible con la versión 99 de Chrome.
- ¡¡¡SE REVIRTIÓ!!! Se resolvió el problema 2269: No se pueden usar caracteres que no sean BMP (puntos de código superiores a U+FFFF) [Pri-3]
- Se resolvió el problema chromium:1295243: Regresión en sendKeys de ChromeDriver [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 99.0.4844.17
Es compatible con la versión 99 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 98.0.4758.102
Se admite la versión 98 de Chrome.
- Se resolvió el problema 3933: El clic en el borde de la ventana gráfica no es efectivo sin errores [Pri-]
- ¡¡¡SE REVIRTIÓ!!! Se resolvió el problema 2269: No se pueden usar caracteres que no sean BMP (puntos de código superiores a U+FFFF) [Pri-3]
- Se resolvió el problema chromium:1295243: Regresión en sendKeys de ChromeDriver [Pri-1]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 98.0.4758.80
Se admite la versión 98 de Chrome.
- Se resolvió el problema 3933: El clic en el borde de la ventana gráfica no es efectivo sin errores [Pri-]
- Se resolvió el problema 2269: No se pueden usar caracteres que no sean BMP (puntos de código superiores a U+FFFF) [Pri-3]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 98.0.4758.48
Se admite la versión 98 de Chrome.
- Se resolvió el problema 3933: El clic en el borde de la ventana gráfica no es efectivo sin errores [Pri-]
- Se resolvió el problema 2269: No se pueden usar caracteres que no sean BMP (puntos de código superiores a U+FFFF) [Pri-3]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 97.0.4692.71
Es compatible con la versión 97 de Chrome.
- Se resolvió el problema 3878: Mejor control de las coordenadas de elementos fraccionarios para el clic en elementos [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 97.0.4692.36
Es compatible con la versión 97 de Chrome.
- Se resolvió el problema 3878: Mejor control de las coordenadas de elementos fraccionarios para el clic en elementos [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 97.0.4692.20
Es compatible con la versión 97 de Chrome.
- Se resolvió el problema 3878: Mejor control de las coordenadas de elementos fraccionarios para el clic en elementos [Pri-]
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 96.0.4664.45
Es compatible con la versión 96 de Chrome.
- Se resolvió el problema 3445: No se puede acceder a los elementos en un iframe dentro de una raíz de sombra [Pri-3].
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 96.0.4664.35
Es compatible con la versión 96 de Chrome.
- Se resolvió el problema 3445: No se puede acceder a los elementos en un iframe dentro de una raíz de sombra [Pri-3].
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 96.0.4664.18
Es compatible con la versión 96 de Chrome.
- Se resolvió el problema 3445: No se puede acceder a los elementos en un iframe dentro de una raíz de sombra [Pri-3].
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 95.0.4638.69
Es compatible con la versión 95 de Chrome.
- Se resolvió el problema 3857: Se especifica el encabezado Host o el encabezado Origin, y no se incluye en la lista de entidades permitidas ni en localhost [Pri-1]
- Se agregó el argumento
--allowed-origins
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 95.0.4638.54
Es compatible con la versión 95 de Chrome.
- Se resolvió el problema 3857: Se especifica el encabezado Host o el encabezado Origin, y no se incluye en la lista de entidades permitidas ni en localhost [Pri-1]
- Se agregó el argumento
--allowed-origins
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 95.0.4638.17
Es compatible con la versión 95 de Chrome.
- Se resolvió el problema 3857: Se especifica el encabezado Host o el encabezado Origin, y no se incluye en la lista de entidades permitidas ni en localhost [Pri-1]
- Se agregó el argumento
--allowed-origins
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 95.0.4638.10
Es compatible con la versión 95 de Chrome.
- Se resolvió el problema 3857: Se especifica el encabezado Host o el encabezado Origin, y no se incluye en la lista de entidades permitidas ni en localhost [Pri-1]
- Se agregó el argumento
--allowed-origins
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 94.0.4606.113
Es compatible con la versión 94 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 94.0.4606.61
Es compatible con la versión 94 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 94.0.4606.41
Es compatible con la versión 94 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 93.0.4577.63
Es compatible con la versión 93 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 93.0.4577.15
Es compatible con la versión 93 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 92.0.4515.107
Es compatible con la versión 92 de Chrome.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 92.0.4515.43
Es compatible con la versión 92 de Chrome.
- Se resolvió el problema 3389: Validación de host para solicitudes de ChromeDriver
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 91.0.4472.101
Se admite la versión 91 de Chrome.
- Se resolvió el problema 1205107: No se puede obtener el valor del atributo para los campos en la aplicación web.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 91.0.4472.19
Se admite la versión 91 de Chrome.
- Se resolvió el problema 3744: SendKeys() y Click() fallan de forma silenciosa después de la navegación de vínculos
- Se resolvió el problema 3746: El extremo del atributo actualiza los valores de forma incorrecta
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 90.0.4430.24
Es compatible con la versión 90 de Chrome.
- Se resolvió el problema 3708: El método inView de GetElementLocation falla para los elementos en Shadow DOM
- Se resolvió el problema 3721: Se recopila el registro de rendimiento del Service Worker cuando está habilitado
- Se resolvió el problema 3731: AdbImpl::GetPidByName no funciona correctamente en SO Android no estándares, como en OnePlus
- Se resolvió el problema 3733: Falla catastrófica con el dominio en localhost
- Se resolvió el problema 3734: El controlador debería mostrar un error al intentar establecer una cookie en el dominio incorrecto.
- Se resolvió el problema 3743: Se refactorizó la función de llamada y se corrigió el problema de eliminación de elementos
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 89.0.4389.23
Compatible con la versión 89 de Chrome
- Se resolvió el problema 3667: Se agotó el tiempo de espera para recibir un mensaje del renderizador
- Se resolvió el problema 3675: GetElementLocation usa el método inView, que controla de forma incorrecta el valor booleano como array
- Se resolvió el problema 3682: GetElementRegion devuelve un tamaño incorrecto para los elementos que están parcialmente fuera del viewport
- Se resolvió el problema 3690: ChromeDriver falla si las extensiones usan la API de chrome.windows
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 88.0.4324.96
Es compatible con la versión 88 de Chrome.
- Se resolvió el problema 3641: No se carga ni renderiza la página cuando la ventana del navegador no está en primer plano con Chrome Beta v87 y Chromedriver v(87/86)
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 88.0.4324.27
Es compatible con la versión 88 de Chrome.
- Se resolvió el problema 3611: La salida de
getText()en Protractor es diferente de la de<element>.innerText - Se resolvió el problema 3625: Se mejoró la compatibilidad de las capturas de pantalla de elementos
- Se resolvió el problema 3628: Se devolvió una referencia de elemento obsoleta y una URL incorrecta con una URL que tiene otra URL como parte de su ruta.
- Se resolvió el problema 3631: Se agregó compatibilidad con la capacidad
webauthn:extension:largeBlob - Se resolvió el problema 3635: Chromedriver 86:
chromedriver.quit()no parece pasar el evento de descarga correctamente - Se resolvió el problema 3649: La copia del texto seleccionado en el portapapeles no funciona en Windows 10 cuando se usa el modo sin encabezado.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 87.0.4280.88
Compatible con la versión 87 de Chrome
- Se resolvió el problema 3641: No se carga ni renderiza la página cuando la ventana del navegador no está en primer plano con Chrome Beta v87 y Chromedriver v(87/86)
- Se resolvió el problema 3657: Se agotó el tiempo de espera del navegador en segundo plano de la captura de pantalla
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 87.0.4280.20
Compatible con la versión 87 de Chrome
- Se resolvió el problema 2421: Se borraron los canales de reenvío de puertos antiguos en el servidor adb de Android.
- Se resolvió el problema 3474: Se debe actualizar la lista de dispositivos móviles emulados
- Se resolvió el problema 3507: Se implementó "get computed role"
- Se resolvió el problema 3508: Se implementó "get computed label"
- Se resolvió el problema 3584: Se cambió el nombre de la opción de línea de comandos de ChromeDriver --whitelisted-ips
- Se resolvió el problema 3588: Conexión WebSocket bidireccional
- Se resolvió el problema 3594: La navegación se completa de forma prematura si se carga el OOPIF antes que la página principal.
- Se resolvió el problema 3598: Se agregó una opción de línea de comandos para que el puerto de DevTools se reenvíe al socket de webview_devtools_remote
- Se resolvió el problema 3608: debuggerAddress de Chromedriver no admite IPv6
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 86.0.4240.22
Es compatible con la versión 86 de Chrome.
- Se resolvió el problema 3370: Chrome se debe cerrar correctamente, o la cookie no se guardará de forma correcta en el archivo de persistencia de SQLite.
- Se resolvió el problema 3401: Get Element Location JS no ubica el centro visible del elemento
- Se resolvió el problema 3462: En sendKeys, la tecla CMD no funciona en MAC
- Se resolvió el problema 3541: Se mejoró el registro entre el cliente y ChromeDriver
- Se resolvió el problema 3559: Se genera la versión de Chrome cuando ChromeDriver informa que es incompatible
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 85.0.4183.87
Es compatible con la versión 85 de Chrome.
- Se resolvió el problema 3578: Chrome 85 ya no permite la interacción fluida con ventanas cuando se abre un cuadro de diálogo de alerta.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 85.0.4183.83
Es compatible con la versión 85 de Chrome.
- Se resolvió el problema 3577: ChromeDriver 85 no detecta el directorio de Chrome cambiado (C:\Archivos de programa)
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 85.0.4183.38
Es compatible con la versión 85 de Chrome.
- Se resolvió el problema 3214: ChromeDriver78: Sendkeys restablece la selección de texto con contenteditable
- Se resolvió el problema 3376: Se quitó el comando LaunchApp de ChromeDriver
- Se resolvió el problema 3432: A veces,
NavigationTrackerno detecta cuando finaliza la carga de la página - Se resolvió el problema 3481: Nuevo extremo de Print según la especificación de W3C
- Se resolvió el problema 3488: driver.get no arroja un error cuando el proxy está configurado de forma incorrecta
- Se resolvió el problema 3502: Se usa
document.hasFocus()para verificar si el elemento está enfocado. - Se resolvió el problema 3515: selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 84.0.4147.30
Es compatible con la versión 84 de Chrome.
- Se resolvió el problema 3420: Después de cambiar a la ventana de impresión, chromedriver deja de responder.
- Se resolvió el problema 3421: El controlador devuelve texto cirílico sin estilos
- Se resolvió el problema 3422: GetElementText falla con el prototipo 1.6.0.3
- Se resolvió el problema 3434: No se pueden obtener mensajes de "assert" de los registros del "navegador"
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 83.0.4103.39
Compatible con la versión 83 de Chrome
- Se actualizó Chromedriver para que funcione correctamente con prototype.js.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 83.0.4103.14
Compatible con la versión 83 de Chrome
- Se resolvió el problema 1778: Se dejó de usar launchApp de ChromeDriver
- Se resolvió el problema 2520: InitSession puede esperar indefinidamente cuando Chrome no responde
- Se resolvió el problema 3120: Descarga en modo sin interfaz gráfica desde una pestaña nueva
- Se resolvió el problema 3234: Se confirma que se encontró un punto y coma antes de la subcadena
- Se resolvió el problema 3240: ExecuteGetElementRect no verifica el estado devuelto de GET_SIZE
- Se resolvió el problema 3331: El método
get_cookies()devuelve claves de "vencimiento" de tipo doble, pero debería ser int64 en el modo w3c. - Se resolvió el problema 3332: Se registró el tiempo de espera de reintento como grave
- Se resolvió el problema 3339: Chromedriver se cerró de forma inesperada con el código nulo y el indicador SIGTRAP
- Se resolvió el problema 3351: Se mejoró el mensaje de Consideraciones de seguridad
- Se resolvió el problema 3352: Se agregó compatibilidad con SendKeys para los elementos de color
- Se resolvió el problema 3353: La espera de navegación pendiente continúa después de que se destruye el contexto del fotograma
- Se resolvió el problema 3375: Chromedriver v80 se detiene en getPageSource en algunos sitios
- Se resolvió el problema 3383: ChromeDriver 80+ en Windows parece salir o detenerse en ciertos comandos de elementos o clics
- Se resolvió el problema 3399: Se quitó la verificación de wasThrown
ChromeDriver 81.0.4044.138
Compatible con la versión 81 de Chrome
- Se actualizó Chromedriver para que funcione correctamente con prototype.js.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 81.0.4044.69
Compatible con la versión 81 de Chrome
- Se corrigió una falla de Chromedriver en getPageSource en algunos sitios.
- Se corrigió el problema por el que ChromeDriver fallaba en ciertos comandos de clic o elementos.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 81.0.4044.20
Compatible con la versión 81 de Chrome
- Se corrigió el error que se producía al intentar obtener la ubicación de un elemento HTML.
- Los comandos Get y Add Cookie ahora son específicos del frame.
- Se resolvieron algunos problemas que se producen con los sitios que redefinen objetos estándar de JavaScript.
- ChromeDriver seguirá esperando a que se complete la carga después de recibir un mensaje de Target Closed.
- Chromedriver ahora devuelve un código de error compatible con las especificaciones para los tiempos de espera
- Se corrigió el tiempo de respuesta lento inesperado de ChromeDriver en el comando NewSession.
- Ahora se admiten los tiempos de espera definidos por el usuario de más de 10 minutos.
- Se corrigió el problema por el que ChromeDriver no se podía conectar a las Herramientas para desarrolladores debido a una discrepancia entre IPv4 e IPv6.
- Se restableció el orden de búsqueda del objeto binario de Chrome en Linux.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 80.0.3987.106
Es compatible con la versión 80 de Chrome
- Se restableció el orden de búsqueda del objeto binario de Chrome en Linux
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 80.0.3987.16
Es compatible con la versión 80 de Chrome
- Se corrigió el problema por el que se abortaba la carga de la página cuando se usaba un proxy.
- Chromedriver ahora espera a que se cargue el fotograma actual.
- El registro de ChromeDriver incluirá el puerto que usa el controlador.
- Se habilitó SetGeoLocation para el modo w3c.
- Se agregó el texto de alerta faltante para el estado UnexpectedAlertOpen.
- Se mejoró el mensaje cuando se carga la extensión CRX2.
- Se corrigió una posible condición de carrera en ExecuteGetPageSource.
- ChromeDriver agregará la marca --ignore-certificate-errors cuando la capacidad acceptInsecureCerts sea verdadera
- Se actualizaron el mensaje de error y el estado de devolución para el caso en que no exista un contexto de ejecución.
- Se corrigió un problema por el que ChromeDriver podía bloquearse de forma indefinida mientras esperaba la navegación pendiente.
- Se agregó el atributo SameSite a AddCookie y GetCookie.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 79.0.3945.36
Es compatible con la versión 79 de Chrome
Incluye el siguiente cambio con respecto a la versión 79.0.3945.16:
- Se corrigió el cálculo incorrecto de las coordenadas de los elementos.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 79.0.3945.16
Es compatible con la versión 79 de Chrome
- Se corrigió una falla de ChromeDriver causada por una alerta de JavaScript que se activaba durante la ejecución de un comando.
- Se corrigió un error que provocaba que Chromedriver se bloqueara cuando se activaba una alerta mientras se tomaba una captura de pantalla.
- Se quitó --ignore-certificate-errors del comando de inicio de Chrome
- Se cambiaron platform y platformName a windows en Win10
- Se corrigió el error de window.navigator.webdriver no definido cuando se excluye "enable-automation".
- Se corrigió la prueba de WPT "test_not_editable_inputs[hidden]".
- Se corrigió el error "No se puede hacer clic en el elemento" cuando se usa el modo sin interfaz gráfica
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 78.0.3904.105
Compatible con la versión 78 de Chrome
Se incluye el siguiente cambio con respecto a la versión 78.0.3904.70: * Se corrigió el cálculo incorrecto de las coordenadas de los elementos.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 78.0.3904.70
Compatible con la versión 78 de Chrome
Incluye el siguiente cambio con respecto a la versión 78.0.3904.11:
- Se revirtió el cambio para ajustar el tamaño de la captura de pantalla en la pantalla Retina debido a los múltiples problemas informados.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 78.0.3904.11
Compatible con la versión 78 de Chrome
- Se corrigieron varios problemas en la serialización de objetos JavaScript.
- Se corrigió un error en la coincidencia de capacidades para Chrome en Android
- Se implementó la automatización de permisos
- Tamaño fijo de la captura de pantalla en pantallas Retina
- Se corrigió el tiempo de espera de carga de la página en algunos casos.
- Se mejoró la coincidencia de la capacidad de platformName
- Se corrigió el código de error que se devolvía al mover el puntero a las opciones de la lista desplegable.
- Se corrigió un problema que afectaba las descargas en el modo sin interfaz gráfica
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 77.0.3865.40
Es compatible con la versión 77 de Chrome.
Incluye los siguientes cambios con respecto a la versión 77.0.3865.10:
- Se corrigieron dos errores en la serialización y deserialización de objetos JavaScript
- Se corrigió el manejo de platformName: android durante la coincidencia de capacidades
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 77.0.3865.10
Es compatible con la versión 77 de Chrome.
- Se corrigieron varios problemas en la implementación de la API de Actions.
- Se mejoró la ejecución del código JavaScript y el control de resultados
- Se corrigió un error que rechazaba incorrectamente las solicitudes POST con un cuerpo vacío en el modo de OSS.
- Un monitor de navegación más robusto
- Se admite la estrategia de carga de página anticipada.
- Se agregó el comando New Window de la especificación WebDriver de W3C
- Se agregó compatibilidad para guardar descargas de archivos en modo sin encabezado
- Se agregó compatibilidad para cargar extensiones CRX3
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 76.0.3809.126
Es compatible con la versión 76 de Chrome.
Incluye los siguientes cambios con respecto a la versión 76.0.3809.68:
- Se corrigieron dos errores en la serialización y deserialización de objetos JavaScript
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 76.0.3809.68
Es compatible con la versión 76 de Chrome.
Incluye los siguientes cambios con respecto a la versión 76.0.3809.25:
- Se corrigió un error en la detección de referencias circulares en objetos de JavaScript
- Se corrigió un error que provocaba que ChromeDriver fallara cuando se producían ciertos tipos de errores de JavaScript.
- Se corrigió un error que impedía que la API de Actions interactuara con elementos dentro de los Shadow DOM.
- Se corrigió un error en el seguimiento del estado de las teclas modificadoras entre los comandos de la API de acciones.
- Se corrigió un error en el seguimiento de las ubicaciones del puntero entre los comandos de la API de Actions.
- Se guarda el error "Cannot call non W3C standard command while in W3C mode" en el archivo de registro cuando se produce.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 76.0.3809.25
Es compatible con la versión 76 de Chrome.
Se incluyen los siguientes cambios en comparación con la versión 76.0.3809.12:
- Se corrigió un error que rechazaba incorrectamente las solicitudes POST con un cuerpo vacío en el modo de OSS.
- Se agregaron nuevos extremos para recuperar el registro de Chrome.
- Se agregó un extremo para el comando Is Displayed en el modo W3C
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 76.0.3809.12
Es compatible con la versión 76 de Chrome.
- Implementación finalizada de la API de Actions
- Se mejoró el cumplimiento de las especificaciones del control de tiempo de espera de la secuencia de comandos
- Se mejoró la serialización de los resultados del comando Execute Script
- Se corrigieron problemas relacionados con el desplazamiento de un elemento para que se vea.
- Se agregó el control de la tecla Cancel definida en la especificación de WebDriver
- Se corrigió el procesamiento de la respuesta de error de alerta no controlada
- Se corrigió el procesamiento del elemento
<details>. - Se actualizó la opción excludeSwitches para permitir guiones iniciales opcionales en los nombres de los parámetros de configuración.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 75.0.3770.140
Es compatible con la versión 75 de Chrome.
Incluye los siguientes cambios con respecto a la versión 75.0.3770.90:
- Se corrigió un error que provocaba que ChromeDriver fallara cuando se producían algunos tipos de errores de JavaScript.
- Se corrigió un error relacionado con la conservación del estado de la tecla modificadora entre acciones.
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 75.0.3770.90
Es compatible con la versión 75 de Chrome.
Incluye los siguientes cambios con respecto a la versión 75.0.3770.8:
- Se corrigió un error que rechazaba incorrectamente las solicitudes POST con un cuerpo vacío en el modo de OSS.
- Se agregaron extremos nuevos para recuperar el registro de Chrome
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 75.0.3770.8
Es compatible con la versión 75 de Chrome.
El cambio más notable es que ChromeDriver ahora se ejecuta de forma predeterminada en el modo compatible con el estándar W3C. Otros cambios incluyen lo siguiente:
- Se corrigió un error que provocaba que el evento de desenfoque se activara dos veces durante el borrado de elementos.
- Se cambió el nombre de la capacidad loggingPrefs a goog:loggingPrefs, según lo requiere el estándar de W3C.
- Se corrigió el manejo de errores en el modo W3C.
- Se corrigió el manejo de la creación de cookies sin un punto inicial en el nombre de dominio.
- Permite valores nulos para el tiempo de espera de la secuencia de comandos
- Se corrigió el comando Send Keys del elemento para la entrada de archivos con el atributo "multiple".
- Se corrigió el comando Get Active Element para que muestre el error "no such element" cuando no existe ningún elemento activo.
- Se corrigió la navegación a una URL con formato incorrecto para devolver el error "argumento no válido".
- Se corrigió el código de estado HTTP cuando se recibe un ID de sesión no válido
- Se corrigió la respuesta de error cuando falta un parámetro de entrada o tiene un formato incorrecto
- Se corrigió el comando Ejecutar secuencia de comandos para controlar los comentarios de JavaScript orientados a líneas
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 74.0.3729.6
Es compatible con la versión 74 de Chrome.
- Se corrigió un error que generaba un archivo debug.log inesperado en Windows.
- Se corrigió el clic del mouse y la acción de arrastrar y soltar dentro del documento SVG
- Se agregó el encabezado cache-control en las respuestas de ChromeDriver
- Se corrigió el tipo de error que se produce cuando un elemento diferente intercepta el clic.
- Se corrigió un error que provocaba que ChromeDriver fallara en dispositivos Linux sin /dev/shm
- Se corrigieron algunos tipos de eventos de doble clic.
- Se corrigió el comando Get Sessions
- Se corrigió la verificación de errores en el comando Switch To Frame
- Se corrigió el comando Get Page Source
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 73.0.3683.68
Compatible con la versión 73 de Chrome
- Se corrigió un error que generaba un archivo debug.log inesperado en Windows.
- Se corrigió el código de error que devolvía el comando Execute Script en algunos casos.
- Se agregó el encabezado cache-control en las respuestas de ChromeDriver
- Se hizo que el servidor HTTP mantenga la conexión activa de forma predeterminada
- Se corrigió el comando Close Window para que controle correctamente las instrucciones del usuario.
- Se corrigió el código de error que se devolvía al enviar teclas a un elemento inhabilitado
- Se mejoró el cumplimiento de las especificaciones del control de valores de tiempo de espera
- Se mejoró el cumplimiento de la especificación del comando Add Cookie.
- Aumento de la longitud de la cola de escucha del servidor HTTP
- Se corrigió el comando Is Element Displayed en el shadow DOM v0.
- Se agregó una advertencia sobre el cambio de comportamiento del comando Element Clear en el archivo de registro.
- Se corrigió el comando Execute Script para convertir correctamente document.all al formato JSON.
- Se mejoró el manejo de referencias de elementos incorrectas
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 2.46
Compatible con Chrome 71 a 73
- Se corrigió el código de error que devolvía el comando Execute Script en algunos casos.
- Se hizo que el servidor HTTP mantenga la conexión activa de forma predeterminada
- Se corrigió el comando Close Window para que controle correctamente las instrucciones del usuario.
- Se corrigió el código de error que se devolvía al enviar teclas a un elemento inhabilitado
- Se mejoró el cumplimiento de las especificaciones del control de valores de tiempo de espera
- Se mejoró el cumplimiento de las especificaciones del comando Add Cookie
- Se mejoró el cumplimiento de las especificaciones del comando Switch to Frame
- Aumento de la longitud de la cola de escucha del servidor HTTP
- Se corrigió el comando Is Element Displayed en el DOM de Shadow v0.
- Comando Fixed Element Double Click
- Se agregó una advertencia sobre el cambio de comportamiento del comando Element Clear en el archivo de registro.
- Se corrigió el comando Execute Script para convertir correctamente document.all al formato JSON.
- Se mejoró el manejo de referencias de elementos incorrectas
Para obtener más detalles, consulta las notas de la versión.
ChromeDriver 2.45
Compatible con Chrome 70-72
- Fixed New Session no cumple con las especificaciones
- Se corrigió el problema por el que ChromeDriver no debería iniciar Chrome si las versiones de Chrome y ChromeDriver son incompatibles
- Se corrigió el error por el que el comando Find Element devolvía un código de error incorrecto cuando se usaba un localizador no válido.
- Se corrigió el problema por el que algunos códigos de estado de ChromeDriver eran incorrectos.
- Se corrigió el error de compilación en JS dentro de WebViewImpl::DispatchTouchEventsForMouseEvents
- Los comandos de tamaño de ventana fijo deben controlar las instrucciones del usuario
- Se corrigió el problema por el que ChromeDriver no iniciaba Chrome correctamente con la opción de Chrome "user-data-dir=".
- El comando Fixed Status no cumple con las especificaciones
- Se corrigió la compatibilidad con Add support for strictFileInteractability
ChromeDriver 2.44
Compatible con Chrome v69-71
- Se corrigió WindowMaximize en Mac
- Se corrigió el error "Alerta abierta incorrecta" para la llamada de identificador de ventana
- Fixed Element Send Keys debería obtener la propiedad "text" en el modo W3C
- Se corrigió el caso especial de XML en el que Is Element Enabled no se controla según las especificaciones.
- Se corrigió el caso especial de XML de Get Element CSS Value que no se controlaba según la especificación.
- Fixed Set Window Rect debe verificar si hay entradas no válidas
- Se corrigió la compatibilidad con los nuevos modos de unhandledPromptBehavior
ChromeDriver 2.43
Compatible con Chrome v69-71
Entre los cambios, se incluyen los siguientes:
- Se corrigió el análisis de la configuración del proxy que no cumple con los estándares
- Se corrigió el problema de inestabilidad del comando Launch app
- Se corrigió el problema por el que la captura de pantalla del elemento dentro del iframe se tomaba de forma incorrecta.
- Se agregó compatibilidad con el cambio de tamaño de ventanas a través de una conexión remota en ChromeDriver
- Se corrigió el problema por el que no se controlaban los códigos de error en el elemento Clear.
- Se corrigió el problema por el que no se esperaba hasta que el elemento fuera visible
- Se corrigió el error por el que no se implementaba la propiedad Get element
- El cambio a fotograma fijo no cumple con las especificaciones
- Se corrigió el error por el que Execute Async Script no devolvía códigos de error que cumplieran con las especificaciones.
- Se corrigió el problema por el que Execute Script no devolvía códigos de error que cumplieran con las especificaciones.
- Se corrigió el código de error en ExecuteGet que no se ajustaba a las especificaciones.
- El texto de alerta fijo no devuelve códigos de error que cumplan con las especificaciones
- Se corrigió clear() en un elemento input type="date" que simula que el elemento no es editable por el usuario
- Se corrigió el problema por el que Chromedriver obtenía el identificador de ventana de la pestaña que se abría manualmente.
- Se corrigió la opción para permitir agregar o iniciar un nuevo archivo de registro para chromedriver
- Se corrigió el problema por el que New Session no invocaba el modo W3C si la marca estaba en firstMatch.
ChromeDriver 2.42
Compatible con Chrome v68-70
Entre los cambios, se incluyen los siguientes:
- Se corrigió ClickElement en la emulación de dispositivos móviles
- IPs fijas incluidas en la lista blanca con IPv4
- Se corrigió el inicio de ChromeDriver con la marca whitelisted-ips en Mac OS
- Se corrigió SetTimeout para que acepte los formatos anteriores a W3C y los de W3C.
- Se corrigió la captura de pantalla del elemento de toma
- El ChromeDriver corregido también busca archivos binarios de Chrome en una ruta de acceso del sistema
- Se corrigieron los problemas con Maximizar ventana y Pantalla completa.
- Se implementó la función de reproducción de registros. ( aún no funciona para Android ni para el navegador remoto)
- Se corrigió el problema por el que algunos códigos de error no cumplían con el estándar del W3C.
- Se corrigió el problema por el que console.log con varios argumentos no se controlaba correctamente.
- Se corrigió GetElementRect para que permita números de punto flotante doble
- Emulación de toque fija
ChromeDriver 2.41
Compatible con Chrome 67-69
Entre los cambios, se incluyen los siguientes:
- Se corrigió un problema que se producía cuando ChromeDriver se ejecutaba con la opción "whitelisted-ips".
- El puerto de depuración remota se devuelve en las capacidades
- Se implementó la obtención del tamaño de la ventana en Android.
- Se mejoraron los mensajes de error de inicio de Chrome para computadoras
- ChromeDriver falla rápidamente cuando no puede iniciar los archivos binarios de Chrome
- El valor de devolución de Close Window cumple con las especificaciones