Скачиваемые материалы

Более ранние версии Chrome

Для более ранних версий Chrome вот список версий ChromeDriver, которые его поддерживают.

Для получения более подробной информации о выборе правильной версии ChromeDriver см. страницу «Выбор версии» .

ChromeDriver 148

Исправлены ошибки

  • Доступ к DOM : Исправлена ​​ошибка, приводившая к сбою при имитации нажатия кнопки внутри iframe, который сам был вложен в закрытый теневой корень. Ранее используемый JavaScript для поиска идентификатора элемента-владельца фрейма не мог проникнуть через закрытые теневые корни; новая реализация напрямую использует формат fXdYeZ для определения фрейма ( crrev.com/c/7594919 , ошибка: 469831357 ).
  • Безопасность : Усилена проверка аргументов в Chrome для предотвращения потенциальной уязвимости, связанной с внедрением позиционных аргументов ( crrev.com/c/7695604 , ошибка: 494464734 ).
  • Тестирование : Увеличено время ожидания kImplicitWait для тестов FindElement(s)WhileNavigating в commands_unittest при запуске под AddressSanitizer (ASAN). Время ожидания по умолчанию в 3 секунды было недостаточным для того, чтобы цикл повторных попыток обработал все ошибки имитации в условиях накладных расходов ASAN, что приводило к нестабильности ( crrev.com/c/7657276 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Заменены избыточные включения base/functional/callback_forward.h во всех файлах //chrome .cc , что обеспечивает использование callback.h , когда коллбэки действительно используются ( crrev.com/c/7200285 , ошибка: 40318405 ). Перемещен logging::LoggingSettings из base/logging.h в собственный заголовочный файл base/logging/logging_settings.h для повышения эффективности компиляции ( crrev.com/c/7173024 , повторное размещение crrev.com/c/7160150 после отмены crrev.com/c/7170750 ). Устранены различные ошибки IWYU, связанные с base/logging.h ( crrev.com/c/7730403 , ошибка: 499476145 ).
  • Стандарты C++ : Заменены избыточные проверки count(key) с последующим поиском на более эффективный доступ к итератору find(key) ( crrev.com/c/7705392 , crrev.com/c/7693277 , ошибка: 452950815 ). Внедрен ThreadDelegate через конструктор Thread для улучшения инкапсуляции, и добавлена ​​опция Restartable для Thread , чтобы учитывать случаи, когда потоки необходимо перезапускать ( crrev.com/c/7696887 , ошибка: 40881604 ).
  • Безопасность памяти : преобразована #pragma allow_unsafe_buffers действующая на уровне всего файла, в детализированные макросы UNSAFE_TODO() для всего chrome/ ( crrev.com/c/7132241 , ошибка: 409340989 ). Сокращено значение IOBuffer->span().first() до IOBuffer->first() ( crrev.com/c/7159119 ).
  • Зависимости : Внесены изменения crossbench , исправляющие проблемы с обнаружением локально собранных бинарных файлов ChromeDriver на macOS и Android ( crrev.com/c/7673978 ).
  • Тестирование : Схема module в chromedriver_py_tests была повторно включена после внесения исправлений в базовую инфраструктуру сборки и тестирования ( crrev.com/c/7707960 ).

ChromeDriver 147

Исправлены ошибки

  • Тестирование : Добавлен герметичный регрессионный тест для проверки корректной обработки ElementClick по iframe-элементам с наложенными элементами, в частности, в сценариях изоляции сайта. Это гарантирует, что клики не будут ошибочно перенаправляться во встроенный контент вместо видимого наложения ( crrev.com/c/7261984 , Bug: 42321834 , Bug: 42322220 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Переименованы режимы и функции декодирования URL-адресов в соответствии со стилем Google C++, изменено DecodeURLMode на DecodeUrlMode и DecodeURLEscapeSequences() на DecodeUrlEscapeSequences() ( crrev.com/c/7593238 ). Введен url::UrlEscapeDecoder для упрощения использования декодирования URL-адресов во всей кодовой базе ( crrev.com/c/7610180 ). Удалены лишние включения build/branding_buildflags.h из файлов //chrome ( crrev.com/c/7595125 , ошибка: 40318405 ). Удалена логика BUILDFLAG(IS_FUCHSIA) из //chrome , за исключением ChromeDriver ( crrev.com/c/5485913 , ошибка: 41481724 ).
  • Безопасность памяти (расширение памяти) : Устранены маркеры UNSAFE_TODO в утилитах ChromeDriver, они перенесены в безопасные реализации на основе расширения памяти ( crrev.com/c/7562602 , ошибка: 435317390 ).

ChromeDriver 146

Исправлены ошибки

  • Стабильность : Исправлена ​​ошибка ChromeDriver, которая могла произойти во время обработки команды, если окно закрывалось одновременно (например, во время ожидания завершения навигации). Исправление позволяет получить блокировку объекта WebView , чтобы предотвратить его преждевременное удаление ( crrev.com/c/7257074 , ошибка: 468228355 ).
  • Безопасность : Добавлена ​​проверка заголовка Origin для входящих соединений WebSocket на HTTP-сервере ChromeDriver, предотвращающая потенциальный междоменный перехват ( crrev.com/c/7538400 , ошибка: 478783560 ).
  • Тестирование : Переместил testWebviewDetactedDuringClick в нестабильный фильтр, пропуская его во всех запусках, а не только в безголовом режиме ( crrev.com/c/7545378 , ошибка: 481485821 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Переименованы base::DictValue и base::ListValue в их современные эквиваленты ( base::Value::Dict и base::Value::List ) во всем //chrome ( crrev.com/c/7515855 , crrev.com/c/7514475 , ошибка: 478100525 ). Заменены использования base::Contains() на std::ranges::contains() ( crrev.com/c/7461026 , ошибка: 470391351 ). Перенесены std::set и std::unordered_set в base::fixed_flat_set там, где это необходимо ( crrev.com/c/7521991 , ошибка: 473916362 ). Переработаны вызовы base::JSONReader::Read , которые не указывали параметры парсинга ( crrev.com/c/6990988 , crrev.com/c/6980533 , Bug: 446188265 ). Заменены различные вызовы base::JSONWriter::Write() на base::WriteJson() ( crrev.com/c/6969134 , crrev.com/c/6929101 , Bug: 443929217 ). Исправлен порядок #include ( crrev.com/c/7366868 ). Перенесены ссылки на ошибки в комментариях для использования идентификаторов Buganizer вместо идентификаторов Monorail ( crrev.com/c/7528268 , Bug: 321899722 ). Для большей ясности флаги сборки IS_OZONE_* переименованы в SUPPORTS_OZONE_* ( crrev.com/c/7535923 ).
  • Безопасность памяти (спанификация) : Заменено использование небезопасных указателей на base::span в base/strings/utf_string_conversion_utils.cc ( crrev.com/c/7496410 , Bug: 439964610 , Bug: 40284755 ). Спанифицировано больше случаев использования base::File в тестах //chrome ( crrev.com/c/7489592 , Bug: 435317390 ). Заменено memset на агрегатную инициализацию во всех тестах //chrome ( crrev.com/c/6875520 , Bug: 435317390 ). Преобразованы оставшиеся #pragma allow_unsafe_buffers в маркеры UNSAFE_TODO ( crrev.com/c/7132241 , Bug: 409340989 ).
  • DSE Prewarm : Функция DSEPrewarm включена в fieldtrial_testing_config.json для macOS и Windows, поскольку была устранена связанная с этим нестабильность тестов ChromeDriver ( crrev.com/c/7489009 , повторная вставка crrev.com/c/7002185 после отмены crrev.com/c/7452344 ). (Примечание: эта повторная вставка впоследствии была отменена из-за увеличения времени выполнения тестов в Windows ( crrev.com/c/7517985 , ошибка: 478888140 )).
  • Диагностика : Добавлено отслеживание местоположения вызывающего абонента в события трассировки WaitableEvent и ConditionVariable для улучшения отладки ( crrev.com/c/7487755 , ошибка: 476408124 ).

ChromeDriver 145

Новые функции

  • Тестирование : Обновлена ​​тестовая среда run_py_tests.py для приема детерминированных строковых тестов различной длины (например, 53, 101 и 501 символ), нацеленных на элементы input , textarea и contenteditable . Это обеспечивает покрытие регрессионными ошибками, гарантируя, что ни один символ не будет потерян во время длительных операций send_keys ( crrev.com/c/7221410 , ошибка: 428116078 ).
  • Тестирование : Добавлен специальный тест для HTML-элемента <selectlist> ( crrev.com/c/7420729 , ошибка: 342889200 ).

Исправлены ошибки

  • Скриншоты : Изменено масштабирование скриншотов элементов, поскольку спецификация WebDriver не предписывает масштабирование, и это противоречило другим функциям создания скриншотов ( crrev.com/c/7409603 , ошибка: 42323022 ).
  • Тестирование : Исправлены ошибки в testClientHintsDeviceNameIPhoneX и testClientHintsDeviceNameIPad путем обновления ожиданий тестов ChromeDriver в соответствии с недавними корректными значениями (для полей platform, platformVersion, model и mobile), появившимися в DevTools Frontend ( crrev.com/c/7408699 , ошибка: 474179501 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Перенесены различные случаи использования base::Contains() в std::ranges::contains() в //chrome ( crrev.com/c/7411011 , ошибка: 470391351 ), включая необходимые исправления форматирования ( crrev.com/c/7247217 ). Параметры строк перенесены в std::string_view , чтобы избежать ненужного выделения строк при использовании substr() ( crrev.com/c/7350716 ). Удалены избыточные включения <map> из заголовков //chrome ( crrev.com/c/7225838 , ошибка: 40318405 ). Исправлен порядок включения в некоторых файлах ( crrev.com/c/7366868 ). Заменены устаревшие колбэки BodyAsStringCallbackDeprecated в SimpleURLLoader на BodyAsStringCallback , который использует std::optional вместо std::unique_ptr ( crrev.com/c/7210000 , Bug: 40258809 ).
  • Тестирование : Внесены исправления в конфигурацию тестирования поля InfobarPrioritization , включая исправления, предотвращающие сбои в браузерных тестах ChromeDriver при обработке ожидающих информационных панелей, которые не были добавлены в иерархию представлений ( crrev.com/c/7223590 , ошибка: 447176374 ). Внесена фильтрация по стране и локали для функции Glic, которая ранее была отменена из-за несвязанных с этим сбоев тестов ( crrev.com/c/7245749 , повторная вставка crrev.com/c/7148759 после отмены crrev.com/c/7233767 , ошибка: 454431875 ).

ChromeDriver 144

Новые функции

  • Разрешения : Команда SetPermission обновлена ​​в соответствии с последней спецификацией W3C, используя URL текущего фрейма (встроенный источник) в дополнение к источнику верхнего уровня. Это корректно настраивает разрешения, такие как storage-access , которые зависят от встроенного контекста ( crrev.com/c/7106801 , повторная установка crrev.com/c/7093216 после отмены crrev.com/c/7104484 , ошибка: 384959114 ).
  • Тестирование : Добавлены testMetadata (включая имя теста) в полезную нагрузку загрузки теста ChromeDriver для поддержки проверки нестабильности при использовании структурированных идентификаторов тестов ( crrev.com/c/7124354 , ошибка: 456432041 ).

Исправлены ошибки

  • Жизненный цикл цели : Исправлена ​​ошибка, из-за которой ChromeDriver зависал, если родительский фрейм отключался, пока дочерний фрейм ожидал ответа на команду. Теперь ChromeDriver явно транзитивно отключает дочерние фреймы, когда родительский WebViewImpl заблокирован и помечен как отключённый во время обработки команды ( crrev.com/c/7080912 , ошибка: 438436830 ).
  • Управление окнами : Отключено отображение перекрытых окон в фоновом режиме специально для сессий ChromeDriver. Это решает проблемы в WebDriver BiDi, где тесты могли завершаться с ошибкой, если браузер ошибочно определял перекрытое окно и ограничивал его скорость ( crrev.com/c/7128058 , ошибка: 458027819 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Удалены лишние включения base/functional/callback_forward.h во всех файлах //chrome .cc , что обеспечивает использование callback.h , когда коллбэки действительно используются ( crrev.com/c/7200285 , ошибка: 40318405 ). Перемещен logging::LoggingSettings из base/logging.h в собственный заголовочный base/logging/logging_settings.h для повышения эффективности компиляции ( crrev.com/c/7173024 , повторное размещение crrev.com/c/7160150 после отмены crrev.com/c/7170750 ). Перенесены использования base::HexEncode в более новый base::HexEncodeLower ( crrev.com/c/7103100 , ошибка: 456472080 ).
  • Безопасность памяти (spanification) : Изменены WriteToPipe и WriteToPipeNoBestEffort в модульных тестах PipeBuilder и PipeConnection для приема base::span , что исправляет небезопасное использование буфера ( crrev.com/c/7090293 , ошибка: 455758227 ). Преобразована общефайловая директива #pragma allow_unsafe_buffers в детализированные макросы UNSAFE_TODO() для всего chrome/ ( crrev.com/c/7132241 , ошибка: 409340989 ). Сокращено значение IOBuffer->span().first() до IOBuffer->first() ( crrev.com/c/7159119 ).

ChromeDriver 143

Исправлены ошибки

  • Стабильность : Исправлена ​​ошибка, приводящая к сбою из-за использования освобожденной памяти (Use-After-Free, UAF) в OverrideNetworkConditions . Исходный указатель, сохраненный для последующего применения, освобождался между последовательными вызовами; теперь это обрабатывается корректно ( crrev.com/c/7047422 , ошибка: 42323833 ).
  • Тестирование : Исправлены нестабильные тесты сенсорного ввода Android ChromeDriver за счет использования API WaitForCondition для более надежной синхронизации ( crrev.com/c/6978928 , ошибка: 42321861 ).
  • DSE Prewarm : Функция Prewarm отключена в ChromeDriver по умолчанию с помощью параметра --disable-features=Prewarm , что предотвращает вмешательство предварительно прогретых страниц в выполнение тестов и обнаружение целевых страниц ( crrev.com/c/7007072 , ошибка: 431928370 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Заменен ref_counted.h на scoped_refptr.h в заголовочных файлах //chrome , где используется только интеллектуальный указатель, что повышает эффективность компиляции ( crrev.com/c/7080753 , ошибка: 40245294 ). Методы доступа GURL переведены на их варианты Get* (например, GetSpec() вместо spec() ), чтобы четко указывать на выделение строкового пространства, предотвращая случайное снижение производительности ( crrev.com/c/7002119 , ошибка: 448174617 ).
  • Тестирование : Удалены избыточные шаблоны проверок в файле devtools_client_impl_unittest.cc с помощью ADD_FAILURE() ( crrev.com/c/6998270 ). Добавлен регрессионный тест для crbug.com/413382905 ( crrev.com/c/6879417 ).

ChromeDriver 142

Новые функции

  • Диагностика : Добавлен статус TERMINATION_STATUS_EVICTED_FOR_MEMORY для различения процессов, которые были превентивно завершены браузером (для экономии памяти), от процессов, которые завершились с ошибкой нехватки памяти (OOM). В настоящее время это ведет себя идентично сбою OOM (отображается вкладка с сообщением о нехватке памяти), но закладывает основу для будущей обработки отдельных процессов ( crrev.com/c/6991933 , ошибка: 394092280 ).
  • Диагностика : Добавлена ​​возможность goog:processID в ответ WebDriver, которая возвращает идентификатор основного процесса настольного браузера. Это приводит ChromeDriver в соответствие с moz:processID в Firefox и помогает тестировать API доступности платформы ( crrev.com/c/5825307 , ошибка: 438884256 ).
  • Тестирование : Добавлена ​​поддержка загрузки структурированных идентификаторов тестов в ResultSink для интеграционных тестов Python в ChromeDriver ( crrev.com/c/6916708 , ошибка: 418015486 ).

Исправлены ошибки

  • Диагностика : Изменено поведение ChromeDriver при обычном завершении работы Chrome, чтобы он больше не выдавал запутанное, общее сообщение об ошибке, связанное с использованием user-data-dir . Теперь он явно указывает на завершение работы экземпляра и направляет пользователя к подробным журналам конкретной ошибки, выданной Chrome ( crrev.com/c/6977507 , ошибка: 42323434 ).
  • Инициализация : Обновлена ​​структура инициализации ChromeDriver для обеспечения совместимости с изменениями в Selenium WebDriver версии 4.16.0 ( crrev.com/c/6630600 ).
  • Android : Исправлена ​​ошибка CheckAppInstalled в устаревших версиях Android (старше Android 11), где флаг --user cur не поддерживается менеджером пакетов ( crrev.com/c/6785949 , ошибка: 433885051 ).
  • Тестирование : Исправлена ​​ошибка, из-за которой IgnoreDuplicateNavs некорректно переопределял стандартные переключатели возможностей в ChromeDriver. Эта функция отключена для сессий ChromeDriver, а логика Switches::SetFromSwitches исправлена ​​( crrev.com/c/6949166 , ошибка: 445332809 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Заменены несколько устаревших вызовов base::JSONWriter::Write() на base::WriteJson() , сохранив при этом поведение возврата пустой строки в случае ошибки, если возвращаемое значение не было проверено ( crrev.com/c/6969134 , crrev.com/c/6929101 , Bug: 443929217 ). Требуется явное согласие на использование несовместимых параметров парсинга JSON (например, разрешение комментариев) в base::JSONReader::Read и base::JSONReader::ReadAndReturnValueWithError ( crrev.com/c/6990988 , crrev.com/c/6980533 , Bug: 446188265 ). Удалены директивы #pragma allow_unsafe_buffers , действующие на уровне всего файла, после ручного преобразования в формат span ( crrev.com/c/6778035 , ошибка: 409340989 ). Устранены случаи использования некорректного макроса LazyInstance ( crrev.com/c/6781377 , ошибка: 432815283 ). Включены отсутствующие заголовки для http_response_headers.h через IWYU ( crrev.com/c/6894196 , ошибка: 40216326 ).
  • Безопасность памяти (спанификация) : Автоматически спанифицировал многочисленные указатели в каталоге chrome/ для сборок Linux, добавляя некритические CHECK там, где параметры размера были признаны избыточными ( crrev.com/c/6734592 , ошибка: 431824299 ).
  • Тестирование : Временно отключен testDoesntCrashOnClosingBrowserFromAsyncScript на macOS ( crrev.com/c/6995358 , ошибка: 446461733 ). Исправлены опечатки в названиях тестовых методов, содержащих "Certificates" ( crrev.com/c/6950683 ). Автоматически отформатированы GN-файлы //chrome/test ( crrev.com/c/6789277 , ошибка: 40760278 ).
  • FedCM : В IdentityDialogController добавлена ​​функция ShouldShowAccountsPassiveDialog для синхронной проверки необходимости отображения диалога учетных записей, что исправляет ошибку, связанную с асинхронными проверками и инструментами DevTools ( crrev.com/c/6780413 , Bug: 425801332 ).
  • Предварительный прогрев DSE : Добавлена ​​функция Page.setPrewarmingAllowed в протокол DevTools в качестве временного решения для ручного включения или отключения предварительного прогрева, исправлены соответствующие тесты, чтобы обеспечить их корректное взаимодействие с основной страницей ( crrev.com/c/6847287 , ошибка: 431928370 ). Функция DSEPrewarm включена в fieldtrial_testing_config.json для macOS и Windows после устранения нестабильности ( crrev.com/c/6951835 , ошибка: 431928370 , ошибка: 435621391 ). (Примечание: Команда CDP и включение полевых испытаний были отменены, поскольку представляли собой критические изменения для пользователей WebDriver, раскрывающие неожиданные цели и вызывающие другие проблемы в последующих процессах соответственно ( crrev.com/c/6966133 , crrev.com/c/6966161 , ошибка: 445883308 )).
  • Очистка : Удалены оставшиеся ссылки на неподдерживаемый проект WebLayer в коде Android ( crrev.com/c/6792520 , ошибка: 40272607 ).

ChromeDriver 141

Новые функции

  • Тестирование : Добавлена ​​поддержка флага --enable-per-test-tracing в run_wpt_tests.py , что соответствует поведению run_web_tests.py . Это позволяет получать события трассировки в формате JSON из внутреннего буфера ChromeDriver и сохранять их в каталог результатов тестирования ( crrev.com/c/6820247 , ошибка: 434017035 ).

Исправлены ошибки

  • Диагностика : Предотвращено отображение ChromeDriver собственного внутреннего трассировочного стека при возврате ошибки kTabCrashed . Это позволяет избежать путаницы у пользователей, при этом гарантируя, что трассировочный стек сбоя рендерера останется в журналах ( crrev.com/c/6841669 , ошибка: 395131239 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Заменены потенциально небезопасные вызовы memset стандартной агрегатной инициализацией C++ ( instance = {} ) в chrome/ чтобы избежать обхода конструкторов и обеспечить безопасность памяти ( crrev.com/c/6875520 , ошибка: 435317390 ). Добавлены отсутствующие директивы #include для //base/time/time.h через IWYU ( crrev.com/c/6832689 , ошибка: 40216326 ). Переписаны принудительно используемые небезопасные прагмы буфера ( crrev.com/c/6828538 ).
  • Тестирование : Добавлен регрессионный тест для crbug.com/413382905 ( crrev.com/c/6879417 ).
  • Переходы между представлениями : Исправлена ​​ошибка с переходами между представлениями, исправлена ​​работа, выполненная до разрешения обещания завершения, после того, как ранее сделанный спекулятивный откат, связанный с ошибками тестов ChromeDriver, оказался неверным ( crrev.com/c/6846765 , повторная посадка crrev.com/c/6806850 после отката crrev.com/c/6808537 ).

ChromeDriver 140

Исправлены ошибки

  • Выбор цели : Исправлена ​​ошибка, из-за которой окно инструментов разработчика могло одновременно выбираться в качестве основного окна с главной страницей при запуске Chrome с --auto-open-devtools-for-tabs . ChromeDriver теперь явно исключает цели с префиксом devtools:// при определении основного окна ( crrev.com/c/6769505 , ошибка: 427908560 ).
  • Выбор цели : Предотвращено некорректное вычисление ChromeDriver центральной точки элементов в поле зрения путем игнорирования любых ограничений overflow:hidden , накладываемых предками. Это приводит вычисление в соответствие со спецификацией WebDriver и другими сценариями PerformActions ( crrev.com/c/6735230 , ошибка: 42322257 ).
  • Android : Исправлена ​​ошибка в функции CheckAppInstalled на более старых версиях Android (до Android 11), где не поддерживался флаг --user cur для менеджера пакетов ( crrev.com/c/6785949 , ошибка: 433885051 ).
  • Тестирование : Исправлена ​​нестабильность в наборе тестов chromedriver_py_tests вызванная функцией DSEPrewarm . ChromeDriver теперь отключает запуск предварительного прогрева при подключении клиента CDP, чтобы предотвратить неожиданное количество целевых объектов во время тестов ( crrev.com/c/6764274 , Bug: 423465927 , Bug: 431928370 ).
  • Тестирование : Отменено добавление функции ShouldShowAccountsPassiveDialog в IdentityDialogController (часть FedCM), что привело к регрессии ( crrev.com/c/6780413 , ошибка: 425801332 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Добавлены отсутствующие директивы #include std::vector через `Include What You Use` (IWYU) ( crrev.com/c/6652818 , ошибка: 40216326 ). Удалены избыточные включения ` gurl.h ( crrev.com/c/6578272 ) и <queue> ( crrev.com/c/6570349 , ошибка: 40318405 ) в заголовках //chrome . Исправлена ​​ошибка IWYU для NOTIMPLEMENTED() в //chrome ( crrev.com/c/6655452 , ошибка: 41493641 ).
  • Безопасность памяти (расширение памяти) : Запущен автоматизированный инструмент расширения указателей для сборок Linux, код обновлен для использования расширений, размеры которых известны ( crrev.com/c/6734592 , ошибка: 431824299 ). Удалены директивы #pragma allow_unsafe_buffers для всего файла в chrome/ после завершения миграции ( crrev.com/c/6778035 , ошибка: 409340989 ). Исключены цели chrome/test из предупреждения -Wexit-time-destructors , чтобы разрешить включение предупреждения глобально ( crrev.com/c/6736532 , ошибка: 40031409 , ошибка: 430332953 ). Устранена ошибка, связанная с некорректным использованием LazyInstance в //chrome ( crrev.com/c/6781377 , ошибка: 432815283 ).
  • Исправление : Удален флаг командной строки --debug-bidi-mapper , поскольку переход к запуску BiDi Mapper в скрытом целевом объекте завершен и стабилен ( crrev.com/c/6672011 , ошибка: 408992812 ).
  • Очистка : Удалены оставшиеся ссылки на неподдерживаемый проект WebLayer ( crrev.com/c/6792520 , ошибка: 40272607 ). Автоматически отформатированы GN-файлы //chrome/test для сокращения ссылок на целевые объекты ( crrev.com/c/6789277 , ошибка: 40760278 ).
  • Тестирование : Добавлен приемочный тест для проверки исправления проблемы pointerMove PerformActions ( crrev.com/c/6648646 , ошибка: 42322257 ).
  • Тестирование : Закомментирован сегмент параллельного создания драйвера в тесте testBrowserWithUsedUserDataDir (и отправлено сообщение об ошибке), поскольку он вызывал сбои в macOS, связанные с эксклюзивной блокировкой при использовании chrome-headless-shell ( crrev.com/c/6470455 , Bug: 411407649 , Bug: 380903149 ).
  • Тестирование : Обновлена ​​оболочка run_cwt_chromedriver.py для iOS, чтобы поддерживать аргумент --platform-type ( crrev.com/c/6771517 , ошибка: 427548014 ).
  • ВЛАДЕЛЬЦЫ : Удален nvitkov из файла chrome/test/chromedriver/OWNERS ( crrev.com/c/6771413 ).

ChromeDriver 139

Исправлены ошибки

  • Структура инициализации : Обновлена ​​структура инициализации ChromeDriver для обеспечения совместимости с обновлениями Selenium WebDriver версии 4.16.0 ( crrev.com/c/6630600 ).
  • Анализ аргументов : Объединение нескольких аргументов --js-flags (аналогично обработке --enable-features ) вместо использования только последнего предоставленного. Это повышает удобство использования при передаче сложных флагов V8 ( crrev.com/c/6612042 , ошибка: 421941798 ).

Внутренние изменения и рефакторинг

  • Безопасность памяти (расширение пространства имен) : Заменены устаревшие использования base::MakeStringPiece() на std::string_view в //chrome/test ( crrev.com/c/6628089 , ошибка: 422940464 ). Включен base/strings/string_view_util.h , где используется base::as_string_view() , для подготовки к будущим миграциям пространств имен ( crrev.com/c/6625024 , ошибка: 423048781 ).
  • Стандарты C++ : Улучшено соответствие принципу «Включай то, что используешь» (IWYU) в //chrome путем явного включения <vector> ( crrev.com/c/6652818 ), base/notimplemented.h (и удаления base/notreached.h там, где он не используется) ( crrev.com/c/6655452 , ошибка: 41493641 ), base/strings/string_util.h ( crrev.com/c/6607646 ), base/strings/string_number_conversions.h ( crrev.com/c/6593576 ) и удаления лишних включений base/debug/stack_trace.h ( crrev.com/c/6622838 ).
  • Тестирование : Опция --driver-logging перенесена в run_wpt_tests.py , что позволяет скрипту выводить сообщения ChromeDriver и stderr браузера даже при более низком уровне детализации ( crrev.com/c/6608138 , ошибка: 421262910 ).
  • Тестирование : Включены ранее отключенные интеграционные тесты ChromeDriver: тесты создания скриншотов ( testTakeElementScreenshot* ) ( crrev.com/c/6598797 , ошибка: 42321815 ), тесты закрытия окна с помощью JavaScript ( testCloseWindowUsingJavascript* ) ( crrev.com/c/6598978 , ошибка: 42321150 ) и тесты размера окна headless-shell ( crrev.com/c/6621336 , ошибка: 42323661 ).
  • Тестирование : Исправлена ​​ошибка в скрипте run_wpt_tests.py --stable позволяющая корректно определять и использовать текущую стабильную версию Clank (Android) путем анализа APK-файла, а также обновлен скрипт для загрузки соответствующей версии ChromeDriver из Chrome for Testing (CfT) во временный каталог вместо засорения папки checkout ( crrev.com/c/6635694 , ошибка: 402548382 ).
  • Инфраструктура сборки : Удалена ненужная зависимость сборки от write_build_config.py путем запрета использования манифестов для целей android_resources() , поскольку слияние манифестов и именование пакетов R.java теперь обрабатываются специализированными атрибутами ( crrev.com/c/6625266 , ошибка: 413331591 ).
  • FedCM : Исправлен флаг функции конфигурации Finch, связанный с FedCM ( crrev.com/c/6614137 , ошибка: 421959289 ).

ChromeDriver 138

Новые функции

  • Управление функциями отображения : Обновлено поведение ChromeDriver для сегментов области просмотра в соответствии с недавним решением рабочей группы CSS: теперь он последовательно возвращает массив с одним сегментом, когда складное устройство используется в плоском виде, или для всех нескладных устройств. Это соответствует поведению медиа-запросов и снижает риски идентификации по отпечатку ( crrev.com/c/6469455 , ошибка: 414430842 ).
  • Настройки и локальное состояние (Android) : Добавлена ​​поддержка возможностей localState и prefs при запуске ChromeDriver на устройствах Android. Это зависит от ADB и требует пользовательского флага user-data-dir ; в настоящее время состояние инициализируется с помощью шаблонов по умолчанию ( crrev.com/c/6397155 , ошибка: 406427226 ).

Исправлены ошибки

  • Стабильность : Исправлена ​​ошибка ChromeDriver, приводившая к сбою в macOS при закрытии диалогового окна «Первый запуск» (FRE) с помощью кнопки «Продолжить». Сбой происходил из-за переопределения состояния ошибки kTargetDetached и попытки доступа к недопустимому WebView ( crrev.com/c/6538867 , ошибка: 410599467 ).
  • Тестирование производительности : Исправлена ​​ошибка crossbench для ботов, работающих с Windows, которые ошибочно пытались найти бинарный файл ChromeDriver, используя устаревший путь ../Release_x64 при передаче параметра --browser=release_x64 , из-за чего происходила загрузка более старого бинарного файла вместо использования локальной сборки ( crrev.com/c/6502134 ).

Внутренние изменения и рефакторинг

  • Безопасность памяти (spanification) : Заменены непроверяемые указатели в WebSocket::OnReadDuringHandshake и WebSocket::OnReadDuringOpen на base::span , что устраняет предупреждения unsafe-buffer-usage ( crrev.com/c/6557346 , ошибка: 354307328 ). Удалены ненужные директивы #pragma allow_unsafe_buffers в chrome/test/chromedriver , которые больше не требовались после других миграций ( crrev.com/c/6503154 , ошибка: 414858406 ).
  • Стандарты C++ : Удалены лишние директивы #include "url/gurl.h" и #include <queue> в заголовках chrome/ , добавлены предварительные объявления там, где это необходимо для улучшения времени компиляции ( crrev.com/c/6578272 , crrev.com/c/6570349 , ошибка: 40318405 ).
  • Миграция API : Перенесены RSAPrivateKey на crypto::PrivateKey и SHA256HashString на crypto::Sha256 , что позволило устранить устаревшую обработку ошибок, поскольку новые API для генерации ключей являются безошибочными ( crrev.com/c/6490294 , ошибка: 372283556 ).
  • Тестирование : Добавлен атрибут OwnContributionEstimate к командам автоматизации Compute Pressure API (как в реализации CDP, так и в реализации testdriver) ( crrev.com/c/6373001 , ошибка: 402033762 ).
  • Тестирование : Исправлены интеграционные тесты, проверяющие ClearDisplayFeatures в ботах непрерывной интеграции (CFT), путем упрощения утверждений для проверки того, что сегменты области просмотра очищаются до размера области просмотра по умолчанию ( crrev.com/c/6535067 , ошибка: 417195296 ).
  • Тестирование : Увеличены тайм-ауты для тестов WebDriver с защищенной аудиторией, чтобы устранить нестабильность в работе медленных ботов CI ( crrev.com/c/6494277 ).

ChromeDriver 137

Новые функции

  • Управление функциями дисплея : добавлены команды ChromeDriver для эмуляции и очистки функций дисплея, реализующие требования автоматизации для API сегментов области просмотра (CSS и JS). Это позволяет разработчикам программно тестировать сценарии складывания или откидывания на устройствах с двумя экранами или складных устройствах ( crrev.com/c/6368674 , ошибка: 40137084 ).
  • BiDi : Обновлен ChromeDriver, чтобы по умолчанию запускать BiDi Mapper в скрытой целевой вкладке. Это предотвращает вмешательство страницы data:, маппера в выполнение тестов и видимость. Для отладки маппера клиенты могут передать флаг --debug-bidi-mapper для запуска его в видимой вкладке ( crrev.com/c/6441064 , повторная посадка crrev.com/c/6433672 после отмены crrev.com/c/6439633 , ошибка: 402339952 ).

Исправлены ошибки

  • BiDi : Предотвращено некорректное закрытие ChromeDriver всей сессии браузера при обработке команд BiDi (например, browsingContext.close ), если он терял из виду цели, созданные другими сессиями CDP или BiDi. Теперь он явно синхронизирует вкладки верхнего уровня, прежде чем принять решение о завершении работы браузера ( crrev.com/c/6440293 , ошибка: 42323838 ).
  • BiDi : Приведено в соответствие со спецификацией BiDi в исходном коде WebDriver путем обеспечения того, чтобы ChromeDriver удалял возможность goog:channel если она передается как пустая строка, обрабатывая ее идентично отсутствующему каналу ( crrev.com/c/6438865 , ошибка: 409282307 ).
  • Ввод : Исправлена ​​проблема, из-за которой события касания и указателя не работали или вели себя некорректно, путем обновления ChromeDriver для поддержки дробных (с плавающей запятой) координат x и y в командах перемещения указателя ( crrev.com/c/6440834 , ошибка: 409684333 ).
  • Выбор цели : Предотвращено проникновение в список целей верхнего уровня PDF-файлов, открытых в гостевых представлениях (когда функция PdfOopif отключена), через iframe, созданные вне процесса (OOPIF). Логика фильтрации была расширена для корректного исключения этих целей с префиксом chrome-extension:// ( crrev.com/c/6383500 , ошибка: 396611138 ).

Внутренние изменения и рефакторинг

  • Стандарты C++ : Внесено повторное изменение для использования std::string_view для имен файлов в событиях LogMessage и трассировки, что устраняет проблемы с обработкой строк, завершающихся нулевым символом, которые привели к предыдущим отменам ( crrev.com/c/6430129 , повторное внесение изменений в crrev.com/c/6395097 , повторное внесение изменений в crrev.com/c/6387020 после отмены изменений в crrev.com/c/6383699 ).
  • Стандарты C++ : Модернизированы вызовы Environment::GetVar в //chrome для использования возвращаемого API std::optional вместо внешних параметров ( crrev.com/c/6417343 , ошибка: 400758498 ).
  • Стандарты C++ : Вспомогательные функции обработки событий, специфичные для Windows, были вынесены из win_util.h в отдельный заголовочный файл windows_handle_util.h , чтобы избежать проблем с циклической зависимостью ( crrev.com/c/6418805 , ошибка: 406023316 ).
  • Тестирование : Добавлен обработчик домена Browser , специфичный для Android, и реализован API Browser.getWindowForTarget для поддержки тестов создания окон в Android ( crrev.com/c/6427605 , ошибка: 404932444 ).
  • Тестирование : Исправлена ​​нестабильность в тестах macOS, вызванная слишком длительной инициализацией расширений ( crrev.com/c/6423229 , ошибка: 407804497 ).
  • Тестирование : Временно отключено параллельное создание user-data-dir в testBrowserWithUsedUserDataDir при запуске с chrome-headless-shell , поскольку это конфликтовало с эксклюзивной блокировкой в ​​macOS ( crrev.com/c/6470455 , Bug: 411407649 , Bug: 380903149 ).
  • Расширения : Обновлены тесты Chrome, чтобы они проходили успешно при включенной пробной версии поля ExtensionManifestV2Unsupported . Это фундаментальный шаг, хотя сама пробная версия остается отключенной до обновления в других репозиториях ( crrev.com/c/6415997 , ошибка: 367395349 ). (Примечание: Предыдущая попытка включить эту пробную версию через конфигурацию была отменена crrev.com/c/6397497, отменив crrev.com/c/6358257 ).
  • Зависимости : Вручную выполнена откатная замена зависимости catapult и обновлены соответствующие файлы pydeps и ссылки devil_util ( crrev.com/c/6480814 , crrev.com/c/6466865 , повторное добавление crrev.com/c/6406098 после отмены crrev.com/c/6448910 , ошибка: 397459590 ).

ChromeDriver 136

Новые функции

  • Browser lifecycle : Added a Chrome-specific capability quitGracefully that forces ChromeDriver to attempt to stop the browser gracefully (using Browser.close or SIGTERM) instead of the default SIGKILL . This gives debuggers like rr time to dump their recordings before the process terminates ( crrev.com/c/6322538 , relanding crrev.com/c/6269180 after a brief revert crrev.com/c/6320536 , Bug: 339644807 ).
  • Testing : Plumbed the run_wpt_tests.py --wrapper argument by generating a temporary wrapper script that prefixes the browser binary with the debugger (eg, rr ) and its arguments. This works around ChromeDriver's inability to substitute the binary directly when args are processed as switches ( crrev.com/c/6271108 , Bug: 339644807 ).
  • Testing : Enabled translation by pref in TranslateEnabledTest to support a testing environment where ChromeDriver manages the browser process and bypasses the new --remote-debugging-port restriction when --user-data-dir is implicit ( crrev.com/c/6354089 , Bug: 327797500 ).
  • DevTools : Added support for the DevTools multi-instance feature to open a new tab in another window on Android ( crrev.com/c/6352169 , Bug: 401269942 , Bug: 382183406 ).

Исправлены ошибки

  • Target selection : Fixed an issue where PDF out-of-process iframes (OOPIFs) opened in guest views were not being filtered out from the top-level targets list when the PdfOopif feature was disabled. The filter was expanded to include the chrome-extension prefix, which resolves the bug and includes coverage for MV3 Chrome extensions creating tabs ( crrev.com/c/6383500 , Bug: 396611138 ).
  • Target selection : Fixed a regression that caused the getWindowHandles() command to fail with a connection refused status when targeting packaged Chrome Apps ( crrev.com/c/6317161 , Bug: 396622746 ).

Internal changes and refactors

ChromeDriver 135

Новые функции

  • BiDi : Updated the BiDi Mapper to inherit ChromeDriver permissions when --enable-unsafe-extension-debugging is specified. This enables WebDriver BiDi clients to effectively test extensions that require permissions typically held by the WebDriver client ( crrev.com/c/6288627 , Bug: 393500934 ).

Исправлены ошибки

  • Testing : Re-enabled and updated expectations for several WDSpec tests that were previously marked as failing. This restores spec conformance coverage for passing tests ( crrev.com/c/6310420 ).

Internal changes and refactors

  • Cleanup : Removed all traces of Lacros (including IS_CHROMEOS_LACROS and related test data) from chrome/test/ since Lacros is being deprecated, standardizing on IS_CHROMEOS ( crrev.com/c/6284446 , Bug: 354842935 ).
  • Cleanup : Removed all traces of the md5sum utility following its replacement with devil_util , cleaning up legacy build dependencies ( crrev.com/c/6309939 , Bug: 397452007 ).
  • C++ standards : Removed the chrome:: namespace from ResultCode and IsNormalResultCode() , moving them to the global namespace, and removed obsolete ChromeOS startup imports ( crrev.com/c/6196899 , Bug: 41050580 ).
  • Memory safety : Simplified a std::lower_bound call in ChromeDriver by leveraging std::ranges::lower_bound ( crrev.com/c/6223172 , Bug: 392116519 ). Suppressed unsafe_libc_call warnings for initially identified non-compliant files in preparation for future enforcement ( crrev.com/c/6187925 , Bug: 390223051 ). Marked the return value of std::to_array as constexpr to improve safety and compile-time evaluation ( crrev.com/c/6298909 ).

ChromeDriver 134

Новые функции

  • Bounce Tracking Mitigations (DIPS) : Relanded ChromeDriver support for Bounce Tracking Mitigations, utilizing the RunBounceTrackingMitigations command. The integration test was restructured to use distinct pages, ensuring stateful bounces are correctly recorded before the command executes. This feature supports the nav-tracking-mitigations specification and is implemented in //chrome ( crrev.com/c/4935955 , Bug: 1474656 ). (Note: Originally added in crrev.com/c/4873672 and later reverted).
  • BiDi : Updated ChromeDriver to use standard WebDriver BiDi extension properties with the goog: prefix, aligning with upstream chromium-bidi changes. The legacy channel property is no longer allowed ( crrev.com/c/6179410 ).
  • Windows : Added a version resource to the chromedriver.exe binary on Windows ( crrev.com/c/6114586 , Bug: 385300323 ).

Исправлены ошибки

  • MPArch/Targets : Fixed a regression where Chrome Extension targets ( chrome-extension:// ) were being incorrectly discovered and attached to during primary target determination on ChromeOS, which caused subsequent commands (like navigation) to fail. Extension targets are now properly skipped during this initial phase ( crrev.com/c/6183202 , Bug: 385241097 ).
  • MPArch/Targets : Fixed another regression where tab targets for Extension background_page s were not being properly filtered out from top-level web views when extension target support was disabled ( crrev.com/c/6160774 , Bug: 385731198 ).
  • MPArch/Navigation : Fixed an issue where a tab could momentarily have no active page attached during an MPArch activation, causing ChromeDriver to incorrectly see it as an error state. ChromeDriver now waits for the tab to acquire a new page and complete its navigation before resolving the state ( crrev.com/c/6177606 ).
  • Log Processing : Fixed a crash ( DCHECK failure in base::Value() ) caused by improper truncation of log strings containing multibyte characters. The logic was updated to use UnicodeString boundary detection instead of simple std::string length checks, ensuring valid code points ( crrev.com/c/6210809 , Bug: 367752739 ).
  • Testing : Migrated most prerendering-related WPTs (except for a few with known API issues) from content_shell to headless_shell , as the recent MPArch refactor allows ChromeDriver to run them correctly ( crrev.com/c/6168830 , Bug: 42323502 , Bug: 366257368 ).

Internal changes and refactors

ChromeDriver 133

Новые функции

  • Architecture : Refactored ChromeDriver to support Multiple Page Architecture (MPArch) and tab targets. WebViewImpl now connects to tab targets via AutoAttach . Commands that previously held a page now look for the active page under a tab. This change enables introspecting Extension background pages, which can now be targeted via the enable_extension_targets capability (by default, extension targets are skipped) ( crrev.com/c/5961156 , Bug: 379767670 , Bug: 42323502 ). Fixed a regression where chrome-extension:// URL pages were incorrectly included as extension targets; selection is reverted to just type=background_page ( crrev.com/c/6093588 , Bug: 383141569 ). Moved enableExtensionTargets to Chrome Options instead of a top-level capability ( crrev.com/c/6093032 ).
  • Classic : Re-established support for multi-key element references. This undocumented feature, often used to create references compatible with both W3C and non-W3C modes, is now officially supported and covered by integration tests ( crrev.com/c/6063257 , Bug: 379584343 ).

Исправлены ошибки

  • Stability : Prevented ChromeDriver from blocking indefinitely when handling the browsingContext.close command. By using a different mechanism to determine if the browser needs to be closed, ChromeDriver can now properly handle beforeunload prompts without stalling ( crrev.com/c/6080431 , Bug: 42323838 , Bug: 379049702 ).
  • Navigation : Fixed a bug where a dummy page with the URL about:blank?test would cause a stall. The heuristic meant to identify an unresponsive new window ( baseURL==about:blank and documentURL!=about:blank ) now correctly handles these query-string URLs as a special case ( crrev.com/c/6038039 , Bug: 377410086 ).
  • Navigation : Added logic to retry commands that fail with an AbortedByNavigation error. ChromeDriver will now attempt the command several times before giving up with a standard Timeout error ( crrev.com/c/6012427 , Bug: 42323825 ).
  • Diagnostics : Forwarded the kTargetCrashed error directly through NavigationTracker . If a target crashes during navigation detection, this specific error is now surfaced to the user rather than a generic timeout, improving diagnostics ( crrev.com/c/6032612 , Bug: 377410086 ).
  • Android : Fixed tab target lookups in chrome_android_impl.cc ( crrev.com/c/6110492 , Bug: 384781876 ).
  • Testing : Fixed flakiness in several window-sizing tests on win11-arm64 (eg, clicking on obscured elements). The tests now query the inner window size repeatedly after a resize operation until it correctly registers a positive height, accounting for slow window repaints ( crrev.com/c/6012658 , Bug: 378470046 ).
  • Testing : Fixed multiple flakes in integration tests by mapping generic Python connection errors to WebSocketConnectionClosedException , simplifying error handling ( crrev.com/c/6054134 ), avoiding race conditions by using SendCommand instead of PostCommand where immediate side effects are expected ( crrev.com/c/6054137 ), and replacing reliance on immediate effects of ExecuteScript with more reliable navigation detection mechanisms ( crrev.com/c/6063040 , Bug: 42323825 ).
  • Testing : Reverted the removal of the FedCmIdpSigninStatus feature flag, as its removal caused breakages ( crrev.com/c/6082405 , reverting crrev.com/c/6078693 , Bug: 384866916 , Bug: 381211734 ).
  • Tools : Added support for the Print command in the log_replay script ( crrev.com/c/6010809 , Bug: 378451938 ).

Internal changes and refactors

ChromeDriver 132

Новые функции

  • Testing : Added support for the repeat and retry-limit command-line parameters to ChromeDriver integration tests, mapping them to the standard isolated-script-test-repeat and isolated-script-test-launcher-retry-limit arguments ( crrev.com/c/5938195 , Bug: 374681919 ). For tests executed locally (non-CI), the default retry-limit has been changed to 0 ( crrev.com/c/5953326 , Bug: 374681919 ).
  • WebSockets : Implemented WebSocketConnection and related classes in EmbeddedTestServer , allowing WebSocket-related tests to migrate away from SpawnedTestServer . This includes framing according to the protocol and simplified handler registration ( crrev.com/c/5849732 , Bug: 40812029 ).

Исправлены ошибки

  • Stability : Fixed a ChromeDriver crash that could occur if a click command caused the browser to close, by properly handling the kTargetDetached error state introduced in earlier refactors ( crrev.com/c/5934524 , Bug: 42323264 ).
  • Stability : Fixed an intermittent crash in the testClickNavigateRemoteToLocal integration test on Mac ARM64 by resolving a race condition ( crrev.com/c/5975526 , Bug: 375971185 ).
  • Navigation : Fixed the GoBack and GoForward commands, which previously failed if Page.getNavigationHistory was called while the document was transitioning away from an active state (indicating an ongoing navigation). ChromeDriver now correctly retries the command in this scenario ( crrev.com/c/6011739 , Bug: 378433873 ).
  • Script execution : Ensured that scripts which trigger a navigation or close a window correctly return a standard ScriptTimeout error if the browser side doesn't guarantee a result, prompting the user to avoid ambiguous test structures ( crrev.com/c/5934265 , Bug: 372883701 ).
  • Script execution : Fixed an issue where the log replay functionality failed with an "unexpected command response" error ( crrev.com/c/5961142 , Bug: 42323342 ).
  • Error codes : Corrected ChromeDriver's error handling to no longer forcefully wrap all exceptions with a "code" property into a generic "javascript error". This ensures standard errors like "stale element reference" (from call_function.js ) and "invalid element state" (from the Selenium Atoms CLEAR function) are accurately propagated to the user ( crrev.com/c/5937893 , Bug: 42323409 ). Improved error handling in GetElementTagName to correctly interpret missing tag name information as "object is not an Element" ( crrev.com/c/5929087 ).
  • BiDi : Fixed an issue where BiDi sessions failed to initialize when a custom user profile was used. The custom profile's loaded page could prevent the BiDiMapper from starting; ChromeDriver now ensures the first tab always loads data:, to provide a clean slate for the mapper ( crrev.com/c/5960656 , Bug: 366886096 ).
  • Incognito mode : Fixed a bug preventing ChromeDriver from creating new tabs while operating in Incognito mode ( crrev.com/c/5952980 , Bug: 42323352 ).
  • Testing : Fixed flakiness in the testScriptNavigateRemoteToLocal integration test (which was failing at an 8.33% rate) and added C++ integration tests to reproduce and verify the fix for the race condition ( crrev.com/c/6010867 , Bug: 378387680 ).
  • Testing : Re-enabled numerous previously flaky integration tests on Mac ( testWindowMinimize ) and Windows ( ChromeDownloadDirTest.testFileDownloadAfterTab , InvalidCertificateTest.* ), and globally ( testShadowDomFindElement , element screenshot tests). Temporarily moved flaky css/css-scrollbars/ WPT tests back to content shell from headless shell ( 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 ).

Internal changes and refactors

  • BiDi : Bumped the chromium-bidi mapper dependency to incorporate the latest upstream fixes and protocol updates ( crrev.com/c/5953339 , crrev.com/c/5865478 , Bug: 4226 ). (Note: A mapper bump was briefly reverted due to WPT failures and subsequently relanded ( crrev.com/c/5961113 )).
  • Architecture : Minimized the usage of the thread-local session object across ChromeDriver to prevent state-sharing bugs between tests and simplify explicit session handling ( crrev.com/c/5978486 , Bug: 42323555 ). Refactored C++ integration tests to use a shared test fixture ( crrev.com/c/5971474 , Bug: 42323555 ).
  • Cleanup : Removed deprecated workarounds specific to the "old headless" mode, as the legacy chrome-headless-shell code is no longer present in Chrome ( crrev.com/c/5961602 , Bug: 42323387 ).
  • Cleanup : Removed the unused java_tests.txt file, a remnant of the previously evicted ChromeDriver acceptance tests ( crrev.com/c/5970994 , Bug: 357737793 ).
  • Testing : Added a C++ integration test to verify that ChromeDriver doesn't erroneously create parallel sessions with the same user-data-dir or bleed URLs between sessions, which could cause flakiness ( crrev.com/c/5961137 , Bug: 375312517 ).
  • Testing : Ensured that temporary ChromeDriver instances spun up by integration tests are shut down as quickly as possible to free resources ( crrev.com/c/5997970 , Bug: 375974725 ).

ChromeDriver 131

Новые функции

Исправлены ошибки

Internal changes and refactors

  • Memory safety (spanification) : Replaced unsafe pointer usage with base::span in net::HttpUtil ( crrev.com/c/5854420 ), and migrated base::File::WriteAtCurrentPos() to its span-based equivalent ( crrev.com/c/5818972 ). Rewrote map pointer values (eg, in std::map , std::unordered_map ) to raw_ptr ( crrev.com/c/5867189 , Bug: 329428315 ).
  • C++ standards : Replaced Abseil attribute macros ( ABSL_ATTRIBUTE_* ) with standard base/ macros ( crrev.com/c/5852373 ). Avoided unintended copies by replacing pass-by-value strings/vectors with std::string_view or const references where appropriate, and removed stray const qualifiers from std::string_view arguments ( crrev.com/c/5914620 , crrev.com/c/5906184 , Bug: 369952985 ).
  • Infrastructure : Configured Fuchsia to use ChromeDriver to control web-engine ( crrev.com/c/5867896 , Bug: 40935291 ).
  • Testing : Migrated a fenced frames WebAuthn test from the legacy content shell runner to headless Chrome with ChromeDriver, as the legacy runner will soon drop support for the WebAuthn testdriver API ( crrev.com/c/5920770 , Bug: 372169469 ).

ChromeDriver 130

Новые функции

Internal changes and refactors

  • C++ standards : Resolved "rule-of-five" issues in various classes. Because the Chrome style plugin insists on out-of-line destructors without also enforcing out-of-line move constructors, the compiler was implicitly deleting move operators and silently falling back to copies. These missing declarations have been added ( crrev.com/c/5846757 , Bug: 364788123 ).
  • Testing : Cleaned up the wptrunner test results summary by replacing the hardcoded chrome string with the actual product used and hiding the verbose command artifact from the summary output ( crrev.com/c/5825633 , Bug: 41494889 ).
  • Testing : Fixed massive test failures in ChromeDriver integration tests on macOS 15 (Mac15) by doubling specific timeouts, as tests on this OS required significantly more time than on Mac14. Four virtual sensor tests were also added to the ignore list due to flakiness ( crrev.com/c/5817455 , Bug: 354939744 ).
  • Testing : Disabled the flaky ChromeDriverSiteIsolation.testClickNavigateLocalToLocal test on Mac ( crrev.com/c/5806894 , Bug: 361521805 ) and the flaky ChromeDriverTest.testClickElement*ObscuredByScrollBar tests on Windows 11 ( crrev.com/c/5804083 , Bug: 360058651 ).
  • Testing : Removed the ChromeDriver acceptance tests (which downloaded older Chrome versions to test against the current ChromeDriver) due to several infrastructure issues. They may be re-added later on CI with autoroll ( crrev.com/c/5812142 , Bug: 357737793 ).

ChromeDriver 129

Новые функции

  • BiDi : Updated the ChromeDriver session initialization helper to send a session.new command to the BiDi Mapper, allowing the mapper to directly handle capabilities. This is the first step toward removing MapperOptions ( crrev.com/c/5741432 , Bug: 356371297 ). (Note: A related change crrev.com/c/5754093 providing the processed unhandledPromptBehavior was reverted crrev.com/c/5755744 due to a drop in test coverage).
  • Compute Pressure : Added new extension commands for virtual pressure source management, implementing the Automation section of the Compute Pressure specification. These commands are parsed and forwarded to the CDP layer ( crrev.com/c/5666583 , Bug: 347031400 ).
  • Extensions MV2 : Updated tests exercising MV2 behavior to use the ScopedTestMV2Enabler as part of the ongoing Extension Manifest V2 Deprecation field trial ( crrev.com/c/5685054 , Bug: 339061151 ).

Исправлены ошибки

  • Classic serialization : Tracked seen objects when serializing a Set in WebDriver Classic script execution results, preventing infinite loops and tolerating overrides of Array.prototype.includes ( crrev.com/c/5765833 , Bug: 357472850 ). (Note: This was subsequently reverted crrev.com/c/5773175 due to a WPT regression).

Internal changes and refactors

ChromeDriver 128

Новые функции

  • Capabilities : Allowed the use of a dictionary for the unhandledPromptBehavior capability, aligning with standard capability structures, though it is not yet fully respected by the Mapper ( crrev.com/c/5692204 , crrev.com/c/5682934 , Bug: 42323841 ).
  • Startup : Added the --ignore-explicit-port command-line argument to ChromeDriver. This temporary workaround forces ChromeDriver to ignore any explicitly provided port and instead find and bind to a free port, resolving TCP port races during web platform test execution (intended to be removed after M132) ( crrev.com/c/5724574 , crrev.com/c/5703976 , Bug: 42323836 ).

Исправлены ошибки

  • Sensors : Fixed the ExecuteUpdateVirtualSensor command to use SendCommand() instead of SendCommandAndGetResult() , as the setSensorOverrideReadings CDP command doesn't return a value ( crrev.com/c/5703589 ).
  • FedCM : Fixed a race condition in FedCM ChromeDriver tests by no longer asserting that NoSuchDialog is returned when a dialog is actually expected, preventing failures if the dialog appears too quickly ( crrev.com/c/5713515 , Bug: 346530330 ).
  • Testing : Re-enabled WebAuthn virtual authenticator tests on Mac after the underlying issue (crbug.com/40233722) was fixed ( crrev.com/c/5635806 , Bug: 329130177 ).
  • Error Messages : Fixed a typo in the error message for the execute/async command ( crrev.com/c/5697913 ).

Internal changes and refactors

ChromeDriver 127

Исправлены ошибки

  • Stability : Fixed a ChromeDriver crash that occurred when a target.detachFromTarget command (or target.detachedFromTarget event) was received while the DevTools client was actively processing other commands, preventing the premature release of the WebView and DevToolsClient objects ( crrev.com/c/5527584 , Bug: 339773537 ).
  • Stability : Fixed an issue where the Switch To Window command could incorrectly return an "unknown error" if a web view detached during the command execution; it now correctly ignores the "web view not found" internal error, leading to a standard "no such window" response if the target window indeed closed ( crrev.com/c/5583730 , Bug: 338616700 ).
  • Stability : Ensured ChromeDriver tolerates target detachment while updating the internal WebView list. If a target detaches during the update, ChromeDriver will now retry instead of returning a non-standard error, reducing flakiness in environments where windows are rapidly created and destroyed ( crrev.com/c/5565103 , Bug: 338616700 , Bug: 4771 ).
  • Navigation : Added logic to ChromeDriver to wait for a navigation detected by the remote end while searching for elements. This prevents ChromeDriver from returning a non-standard error or crashing with a DCHECK when a navigation coincides with an element finding operation ( crrev.com/c/5563113 , reverting crrev.com/c/5563420 , relanding crrev.com/c/5562089 , Bug: 4771 ).
  • BiDi : Fixed a race condition between ChromeDriver and BiDiMapper during session creation. ChromeDriver now waits for the browsingContext.getTree command to return a non-empty list before concluding the NewSession command, ensuring the newly created default tab is properly registered ( crrev.com/c/5575497 , Bug: 341048786 , Bug: 1503101 ).
  • BiDi : Fixed an issue where the focus remained in the BiDiMapper background tab after session creation instead of the active user tab by explicitly granting focus to the first user tab ( crrev.com/c/5594070 , Bug: 341048786 , Bug: 1503101 ).
  • BiDi : Stopped ChromeDriver from attempting to attach a Target when handling BiDi commands (like browsingContext.close ) to prevent CDP commands from stalling indefinitely if a user prompt is open, delegating the handling entirely to the already-connected BiDi layer ( crrev.com/c/5541915 , reverting crrev.com/c/5539818 , relanding crrev.com/c/5522393 , Bug: 4758 ).
  • FedCM : Fixed the fedcm-loginhint.https.html WPT test failure where a dialog was incorrectly marked as closed; the state is now only updated if the selectAccount operation actually succeeds ( crrev.com/c/5398379 , Bug: 331237776 ).
  • Testing : Fixed a DCHECK failure during JSON parsing when a character hit exactly the kExtendedASCIIStart boundary ( crrev.com/c/5565276 , Bug: 40284755 ).
  • Testing : Fixed the scrollend-event-fires-to-iframe-window.html WPT test by using the iframe element as the scroll origin and rounding pointer move inputs to whole numbers, preventing ChromeDriver errors with fractional touch positions ( crrev.com/c/5570150 , Bug: 340956654 ).
  • Testing : Improved diagnostics in ChromeDriver integration tests by printing the attempted paths when run_py_tests.py fails to locate the browser binary ( crrev.com/c/5604204 , Bug: 4781 ).

Internal changes and refactors

ChromeDriver 126

Новые функции

  • BiDi : Updated ChromeDriver to supply the --disable-background-timer-throttling switch when launching the browser for a WebDriver BiDi session, preventing background tabs from being throttled ( crrev.com/c/5515013 , Bug: 4762 ).
  • BiDi : Added support for the BiDi Mapper to send debug messages ( sendDebugMessage ) when verbose logging is required. ChromeDriver marks these events as bidi messages for parsing, though BidiTracker currently ignores them ( crrev.com/c/5465782 , Bug: 4753 ).
  • Classic : Implemented auto-acceptance of any beforeunload dialogs (alerts), adhering to the WebDriver standard which dictates they must never be shown in a Classic session ( crrev.com/c/5517510 , Bug: 4757 ).

Исправлены ошибки

  • Classic : Removed the redundant maximum attempt limitation in the element retrieval logic. Retrieval is now bounded only by the implicit timeout, preventing scenarios where the operation could fail prematurely and incorrectly return a non-standard NoSuchExecutionContext error ( crrev.com/c/5478668 , Bug: 4379 ).
  • Classic : Fixed a regression that caused ChromeDriver to respond with a javascript error instead of an invalid selector error when a retrieval request used an invalid location strategy ( crrev.com/c/5490662 , Bug: 4743 ).
  • Classic : Ensured window commands on Android (Maximize, Minimize, Fullscreen) return the standard compliant unsupported operation error instead of proceeding, as these actions are not supported by the Android browser ( crrev.com/c/5490224 , Bug: 4689 ).
  • Classic : Fixed ChromeDriver to never return the kChromeNotReachable internal error code; it now properly returns the standard kSessionNotCreated error when the HTTP client cannot connect to the browser ( crrev.com/c/5476390 , Bug: 4379 ).
  • Classic : Fixed ChromeDriver to never return the non-standard kNoSuchExecutionContext error when executing window commands ( crrev.com/c/5483606 , Bug: 4379 ).
  • Classic : Removed the unused and unsupported kForbidden error code from the list of supported error codes ( crrev.com/c/5476927 , Bug: 4379 ).
  • BiDi : Updated ChromeDriver to prompt the user before closing the dedicated Mapper tab, aligning with upstream chromium-bidi changes ( crrev.com/c/5508600 , Bug: 4761 ).

Internal changes and refactors

ChromeDriver 125

Новые функции

  • Device Posture : Added ChromeDriver commands for device posture management, supporting the Automation section of the Device Posture specification. This allows overriding the hardware-set device posture and removing the override via extension commands ( crrev.com/c/5437993 , Bug: 330376761 ).

Исправлены ошибки

  • BiDi : Changed the intermediate storage of the incoming BiDi command id from a Double to base::Value . This ensures the id is echoed back precisely in the response without an unexpected trailing decimal point or fractional part after JSON serialization ( crrev.com/c/5444225 , Bug: 4676 ).
  • FedCM : Relanded the change to enable CORS in the ID assertion endpoint after IDPs were ready ( crrev.com/c/5440132 , reverting crrev.com/c/5381316 , relanding crrev.com/c/5370086 , Bug: 40284123 ).
  • FedCM : Fixed a bug where a dialog was improperly marked as closed by ensuring it is only marked as closed if the selectAccount command succeeds. This resolves test failures when selectAccount is called without an expected account chooser ( crrev.com/c/5398379 , Bug: 331237776 ). Avoided calling fedcm_get_and_select_first_account when an account chooser is not expected to prevent triggering this bug ( crrev.com/c/5398800 ).
  • Testing : Fixed a failure in the popover-light-dismiss.html WPT test by combining action sequences and using the main frame's document as the origin for the pointerUp action, preventing ChromeDriver from incorrectly sending concurrent pointerUp events across frames ( crrev.com/c/5402096 , Bug: 325981758 ).
  • Testing : Fixed wptrunner to correctly forward stderr output (including browser logs written when using --enable-chrome-logs ) to the stderr artifact instead of crash_log , and moved harness errors (which contain the browser stack trace) to crash_log ( crrev.com/c/5437023 , Bug: 41494889 ).
  • Testing : Fixed wptrunner to route browser logs to the correct test artifact by grouping output by the ChromeDriver process, preventing interleaved and orphaned logs during parallel test execution ( crrev.com/c/5320681 , Bug: 41494889 ).

Internal changes and refactors

ChromeDriver 124

Новые функции

  • BiDi : Added a build step to minify the BiDiMapper script before embedding it into ChromeDriver, as the source mapper is now downloaded unminified from CIPD ( crrev.com/c/5310075 , Bug: 4226 ).
  • WebAuthn : Added the SetCredentialProperties command, allowing clients to update the backup flags for a WebAuthn credential ( crrev.com/c/5296389 , Bug: 40945430 ).
  • WebAuthn : Exposed WebAuthn backup flags through WebDriver by adding defaultBackupEligibility and defaultBackupState to the "Add Virtual Authenticator" command, and backupEligibility and backupState to the "Add Credential" command ( crrev.com/c/5297117 , Bug: 40945430 ).
  • Testing : Added support for the --failfast command-line argument to ChromeDriver Python integration tests, stopping the test run on the first error to assist with debugging ( crrev.com/c/5374546 ).
  • Testing : Added content-shell support for the SetRPHRegistrationMode webdriver command via testdriver-vendor.js APIs ( crrev.com/c/5205730 , Bug: 1359103 ).

Исправлены ошибки

  • Stability : Moved the timeout expiration check inside the poll-and-wait loop body in ChromeImpl::SetWindowBounds . This fixes an issue where, under high load, the timeout could expire before the first loop iteration occurred ( crrev.com/c/5366899 , Bug: 4642 ).
  • Performance : Minimized wait time in ChromeImpl::SetWindowBounds by only applying an exponential backoff wait if the window bounds have not yet reached the desired state, reducing WPT setup latency ( crrev.com/c/5366457 , Bug: 4642 ).
  • Startup : Updated ChromeDriver to use --user-data-dir instead of --data-path when specifying the data directory for content_shell , aligning with how it reads the active DevTools port ( crrev.com/c/5226609 , Bug: 1295373 ).

Internal changes and refactors

ChromeDriver 123

Новые функции

  • FedCM : Show modal dialogs for single account button flows, including adding support for modal views in the automation interface ( crrev.com/c/5231438 , Bug: 1518356 ).
  • FedCM : Implemented ChromeDriver support for opening links within FedCM dialogs, treating them as buttons for automation simplicity ( crrev.com/c/5225543 , Bug: 1513520 ).
  • Sensors : Modified WebDriver virtual sensor commands to read Euler angles (alpha-beta-gamma) instead of quaternions, complying with recent orientation-sensor spec updates. Internal CDP and services layers still use quaternions via a conversion step ( crrev.com/c/5229177 , Bug: 1506995 , Bug: 1520912 , Bug: 1520919 ).

Исправлены ошибки

  • Classic : Fixed an issue where returning a node from a different frame via a script incorrectly resulted in a StaleElementReference error; it now correctly returns a JavaScriptError to comply with the WebDriver standard ( crrev.com/c/5222746 , Bug: 4668 ).
  • Testing : Fixed an overscroll events test that was failing on Chrome/ChromeDriver because the touch drag was extending outside the window boundaries; the drag is now properly constrained ( crrev.com/c/5297676 , Bug: 40832230 ).
  • Testing : Fixed open-close.https.html MIDI tests to not construct promises unnecessarily, avoiding unhandled promise rejections that caused ChromeDriver to fail the test ( crrev.com/c/5239869 , Bug: 1499775 ).
  • Testing : Corrected the permission set in wpt_internal/system-wake-lock/idlharness* tests where test_driver.set_permission(...) was incorrectly passing false instead of null or a WindowProxy , confusing ChromeDriver ( crrev.com/c/5271087 , Bug: 40287920 ).

Internal changes and refactors

ChromeDriver 122

Исправлены ошибки

  • BiDi : Updated deep node serialization to include loaderId , allowing ChromeDriver and the BiDi Mapper to properly reference and dereference nodes without excessive round trips ( crrev.com/c/5116240 , Bug: 1420968 ).
  • Capabilities : Updated ChromeDriver to pass the acceptInsecureCerts capability to the BiDi Mapper immediately on start, preventing race conditions where the capability might be applied too late ( crrev.com/c/5125711 , Bug: 4643 ).
  • Classic : Re-architected element reference generation to use a <frame_id>.<loader_id>.<backend_node_id> format; this allows ChromeDriver to definitively distinguish between valid, unknown, and stale element references across frame navigations and DOM updates ( crrev.com/c/5094519 , Bug: 4379 ).
  • Classic : Fixed an issue where the window/handles command could fail with a "no such window" error if a newly created target closed itself (eg, in a race condition) before ChromeDriver could attach to it ( crrev.com/c/5147409 , Bug: 1506833 ).
  • FedCM : Added an internal event listener to notify when a FedCM dialog is closed, preventing the dialogtype command from returning stale data if the dialog was closed externally (eg, via AbortController.abort ) ( crrev.com/c/5067504 , Bug: 1506292 ).
  • FedCM : Removed the vendor prefix from the ClickDialogButton command as it has now been approved in the FedCM specification ( crrev.com/c/5092527 , Bug: 1499341 ).

Internal changes and refactors

  • BiDi : Bumped the BiDi Mapper dependency to the latest version ( crrev.com/c/5205452 , Bug: 4226 ).
  • Reduced ChromeDriver and Chrome DevTools Protocol (CDP) traffic by removing redundant Page.enable calls sent from every DevToolsEventListener , as DevToolsClientImpl already handles this per target ( crrev.com/c/5088789 , Bug: 4600 ).
  • Changed all Wptrunner builders for content_shell to experimental status since running tests in protocol mode is currently not fully supported while ChromeDriver integration is in progress ( crrev.com/c/5225148 , Bug: 1474702 ).
  • Skipped tests that require window.test_driver_internal.get_computed_role on content_shell as it is not yet implemented, preventing TypeError failures ( crrev.com/c/5189678 , Bug: 1517744 ).
  • Relanded the refactor to use platform-independent IS_OZONE_{X11, WAYLAND} flags instead of OZONE_PLATFORM_* ( crrev.com/c/5086329 , Bug: 1500494 ).
  • Bumped the selenium-atoms dependency to the latest revision ( crrev.com/c/5110808 , Bug: 4662 ).
  • Fixed logic in SnapEvents tests when run against the full Chrome binary by rounding pointer move inputs, enforcing the origin parameter for scrolls, and using approximation assertions ( assert_approx_equals ) to handle fractional scroll/offset discrepancies ( crrev.com/c/5097343 ).
  • Added StringPrintfNonConstexpr() helper to distinguish from StringPrintf() when format strings are not compile-time constants ( crrev.com/c/4950568 , Bug: 1371963 ).
  • Ensured chromium::import! rust macro escaping uses an injective function to prevent collisions in generated GN target names ( crrev.com/c/5132119 , Bug: 1512174 ).
  • Cleaned up the ScopedTempDirWithRetry implementation by adding a constructor and early returns in the destructor ( crrev.com/c/5113843 ).

ChromeDriver 121

Новые функции

  • Testing : Added support for running ChromeDriver integrated tests ( chromedriver_py_test ) against chrome-headless-shell in addition to the standard Chrome browser on build bots. This includes the ability to discover the browser binary based on the --browser-name parameter and conditionally run specific test sets ( crrev.com/c/4995189 , crrev.com/c/4989442 , Bug: 4358 ).

Исправлены ошибки

  • Stability : Initialized the default KeyboardLayoutEngine as StubKeyboardLayoutEngine to prevent ChromeDriver crashes caused by a DCHECK hit in KeyboardLayoutEngineManager::SetKeyboardLayoutEngine ( crrev.com/c/5017859 , Bug: 4625 ).
  • Stability : Fixed a flakiness issue where ChromeDriver could crash if the session thread requested to close a connection after the client had already requested to close the same connection ( crrev.com/c/4994636 , Bug: 4606 ).
  • Resource Management : Fixed resource leaks in ChromeDriver integration tests ( RemoteBrowserTest ) by ensuring the browser process is terminated even if an exception is thrown by a ChromeDriver command ( crrev.com/c/5009554 , Bug: 4614 ).
  • Resource Management : Implemented logic in ChromeDriver integration tests to detect and terminate any browser processes abandoned by the ChromeDriver process ( crrev.com/c/5014093 , Bug: 4617 ).
  • Startup : Fixed an issue where chrome-headless-shell would return an empty target list, preventing session creation, by appending the data:, argument to the browser command line when the browser name is chrome-headless-shell ( crrev.com/c/5010392 , crrev.com/c/5009535 , Bug: 4615 , Bug: 4358 ).
  • FedCM : Added a new event to notify when a FedCM dialog is closed, ensuring dialogtype and other commands don't return stale data if the dialog was closed externally (eg, via AbortController.abort ) ( crrev.com/c/5067504 , Bug: 1506292 ).
  • Testing : Fixed and re-enabled all ChromeDriver integration tests that were previously disabled for chrome-headless-shell on Windows ( crrev.com/c/5027594 , Bug: 4358 ).
  • Testing : Weakened overly strict assertions in testElementRegionTest to align with the WebDriver standard, resolving flakiness caused by browser rendering peculiarities ( crrev.com/c/5017865 , Bug: 4526 ).

Internal changes and refactors

ChromeDriver 120

Новые функции

  • BiDi : Added support for session.new and session.end commands, allowing users to create and terminate sessions directly via BiDi commands ( crrev.com/c/4941941 , Bug: 4496 ).
  • BiDi : Added support for the session.status PureBiDi command, enabling users to establish a WebSocket connection not bound to any session and retrieve the session status ( crrev.com/c/4938596 , Bug: 4496 ). (Relanded after a previous revert in crrev.com/c/4922097 )
  • BiDi : Bumped the BiDi Mapper dependency and aligned with the new, simplified Mapper running process ( crrev.com/c/4952609 , Bug: 4226 ).
  • Sensors : Implemented virtual sensor commands in browser_protocol.pdl and the CDP layer (Emulation domain), adding support for the Automation section of the Generic Sensor spec ( crrev.com/c/4770864 , Bug: 1278377 ).
  • Sensors : Added ChromeDriver extension commands for virtual sensor management, translating WebDriver parameters into the new CDP calls ( crrev.com/c/4770866 , Bug: 1278377 ).
  • Sensors : Added a content_shell code path for virtual sensors manipulation via testdriver.js , bypassing ChromeDriver entirely for web tests ( crrev.com/c/4770865 , Bug: 1278377 ).
  • Tracking Mitigations : Added ChromeDriver support for Bounce Tracking Mitigations (DIPS), enabling automation of the nav-tracking-mitigations spec ( crrev.com/c/4873672 , Bug: 1474656 ). (Note: This was temporarily reverted due to test failures on Mac in crrev.com/c/4938394 )

Исправлены ошибки

  • Startup : Added Headless Shell discovery to ChromeDriver, allowing it to search for the chrome-headless-shell binary if requested via capabilities and no explicit path is provided ( crrev.com/c/4987262 , Bug: 4358 ). (Relanded after a previous revert in crrev.com/c/4984449 )
  • WebSockets : Implemented partial support for the WebSocket Closing Handshake, ensuring ChromeDriver responds with a CLOSE frame when one is received from the remote end ( crrev.com/c/4931500 , Bug: 4499 ).
  • Permissions : Exposed options.disclaim_responsibility as a build flag to allow vendor builds (like Microsoft Teams) to turn it off, preventing macOS permission prompts from stalling test automation ( crrev.com/c/4929495 , Bug: 1223643 ).
  • C++ standard compliance : Fixed undefined behavior (UB) caught by UBSan when casting an out-of-range double to an int by adding range checks ( crrev.com/c/4980055 , Bug: 1394755 ).
  • FedCM : Removed support for the old header syntax, ensuring compliance with the standard login-status-http syntax ( crrev.com/c/4957073 , Bug: 1381501 ).

Internal changes and refactors

ChromeDriver 119

Новые функции

  • BiDi : Implemented support for resolving weak local object references returned by the remote end during remote function calls ( crrev.com/c/4886760 , Bug: 4536 ).
  • FedCM : Added the vendor-prefixed confirmidpsignin command to support the IDP Sign-In Status API origin trial ( crrev.com/c/4811725 , Bug: 1451884 ).

Исправлены ошибки

  • Mobile emulation : Fixed an issue where predefined devices without Client Hints (eg, older configurations) were broken by populating them with sensible default values ( crrev.com/c/4887254 , Bug: 4550 ).
  • Classic : Fixed serialization of Map and Set objects; they are now correctly serialized as Object rather than Collection since they lack a length property ( crrev.com/c/4881378 , Bug: 4031 ).
  • Classic : Reinstated the logic to always download and use the latest compatible version of ChromeDriver during tests, falling back to specific versions only when compatibility issues arise ( crrev.com/c/4779613 , reverting crrev.com/c/4778973 ).
  • FedCM : Standardized the browser automation commands by renaming Signin to Login ( confirmidplogin ) to align with the latest FedCM specification discussions ( crrev.com/c/4901302 , Bug: 1451884 ).
  • Testing : Fixed FedCM tests that failed when third-party cookies were disabled by explicitly enabling the IDP Sign-In Status API during test execution ( crrev.com/c/4889802 , Bug: 1484833 ).
  • Testing : Replaced the invalid URL placeholder ~NOTFOUND with ^NOTFOUND in test runners to comply with upcoming Chromium URL standard enforcement changes ( crrev.com/c/4845589 , Bug: 1416013 ).

Internal changes and refactors

  • BiDi : Updated the BiDi Mapper dependency to version 0.4.27, bringing in the latest fixes and features ( crrev.com/c/4862031 , crrev.com/c/4890322 ).
  • Replaced multiple pointer/length APIs in //url with std::string_view for improved safety and convenience ( crrev.com/c/4897456 ).
  • Transitioned the generateWebDriverValue utility to use the deep serialization option ( serializationOptions.serialization: deep ) natively provided by the BiDi protocol ( crrev.com/c/4889644 ).
  • Added integration tests to verify that searching under a stale element reference correctly returns a "stale element reference" error ( crrev.com/c/4886793 , Bug: 4440 ).
  • Improved code style formatting in call_function.js ( crrev.com/c/4882511 , Bug: 4031 ).
  • Enhanced user feedback by explicitly informing users when they connect via WebSockets that pipes are supported and recommended for better reliability and security ( crrev.com/c/4882626 , Bug: 3480 ).
  • Updated WPT suite configuration to archive results.html for webdriver_tests_suite tests, providing a better UI for viewing results ( crrev.com/c/4873223 ).
  • Fixed DevTools integration with WebView by marking WebView WebContents and setting their DevTools type to popup_page instead of other ( crrev.com/c/4842093 ).
  • Renamed the WPT build target chrome_wpt to chrome_wpt_tests for consistency and removed the redundant webdriver_wpt_tests target ( crrev.com/c/4847474 , Bug: 1474702 ).
  • Migrated run_py_tests.py from the deprecated optparse library to argparse ( crrev.com/c/4849411 , Bug: 4557 ).

ChromeDriver 118

Новые функции

  • Integration Testing : Introduced C++ integration tests for ChromeDriver, allowing testing of specific classes against real CDP traffic, filling the gap between unit tests and Python integration tests ( crrev.com/c/4707855 , Bug: 4528 ).
  • Crossbench : Updated the crossbench dependency with numerous improvements including new power benchmark stories, better platform and device support, enhanced debugging, and various fixes ( crrev.com/c/4803743 ).

Исправлены ошибки

  • Capabilities : Fixed an issue where debuggerAddress was missing from returned capabilities in default configurations; it is now correctly returned to support Selenium's CDP-based BiDi communication ( crrev.com/c/4789068 , Bug: 4533 ).
  • Capabilities : Ensured ChromeDriver returns standard platformName values (eg, 'linux', 'windows', 'mac') as required by the WebDriver specification ( crrev.com/c/4797735 , Bug: 4548 ).

Internal changes and refactors

  • Migrated code in MockSocket to prefer base::span<> over raw pointers for improved safety ( crrev.com/c/4832086 ).
  • Removed deprecated uses of base::raw_ptr and base::raw_ref in favor of their unqualified forms raw_ptr and raw_ref via automated cleanup ( crrev.com/c/4773481 ).
  • Temporarily reverted a change that always used the latest ChromeDriver, as it caused crashes on Windows stable/beta channels ( crrev.com/c/4778973 , reverting crrev.com/c/4777430 ).
  • Adjusted WPT (Web Platform Tests) configurations, including suppressing debug-only failures in pointer_touch.py and implementing browser-side focus verification for fenced frames ( crrev.com/c/4844810 , crrev.com/c/4572517 ).
  • Added missing #include <vector> to client_hints.h for IWYU compliance ( crrev.com/c/4767547 ).
  • Migrated Apple-specific base types ( ScopedTypeRef , ScopedCFTypeRef , scoped_nsautorelease_pool ) into the base::apple:: namespace, leaving temporary forwarding headers for Crashpad ( crrev.com/c/4799213 , crrev.com/c/4790744 , crrev.com/c/4790741 , crrev.com/c/4784010 ).

ChromeDriver 117

Новые функции

Исправлены ошибки

  • Stability : Fixed a null pointer access that caused ChromeDriver to crash, which in turn resulted in ConnectionRefused errors during test runs ( crrev.com/c/4675633 , Bug: 1457101 ).
  • Navigation : Fixed an issue where Chrome's NoSuchExecutionContext and NoSuchWindow errors during navigation were not handled uniformly; both are now properly mapped to retry the operation ( crrev.com/c/4667156 , Bug: 4459 ).
  • Mobile emulation : Corrected the inference logic for clientHints.mobile ; it is now correctly inferred from the userAgent on Android and defaults to false on other platforms, fixing an issue where tablets incorrectly reported as mobile ( crrev.com/c/4649348 , Bug: 4243 ).
  • Session creation : Updated session creation to correctly return the standard SessionNotCreated error code upon failure, strictly complying with the W3C WebDriver specification ( crrev.com/c/4638223 , Bug: 4379 ). Note: This change was subsequently reverted as some specific code paths require different error codes ( crrev.com/c/4651188 ).

Internal changes and refactors

  • Eliminated the manual ChromeDriver release process scripts, as ChromeDriver is now fully integrated into the Chrome release process and available via the Chrome for Testing infrastructure ( crrev.com/c/4520687 , Bug: 4142 ).
  • Migrated WPT (Web Platform Tests) infrastructure to use the official wptrunner harness instead of the bespoke run_webdriver_tests.py , significantly improving execution speed and reliability, and ensuring ChromeDriver respawns between tests to isolate crashes ( crrev.com/c/4723147 , crrev.com/c/4676070 , crrev.com/c/4639168 ).
  • Extensively refactored ChromeLauncher and related classes to support the transition to pipes, loosening coupling with DevToolsHttpClient and moving WebSocket logic into dedicated branches ( crrev.com/c/4632801 , crrev.com/c/4674345 ).
  • Renamed the misleading BrowserInfo.is_headless field to BrowserInfo.is_headless_shell for clarity ( crrev.com/c/4650452 , Bug: 4358 ).
  • Replaced various deprecated base::Value methods with the modern base::Value::Dict equivalents (eg, FindDouble() , Set() , size() ) across the codebase ( crrev.com/c/4258936 , crrev.com/c/4336805 , crrev.com/c/4461067 ). 112.0.5603.0, 113.0.5653.0, 114.0.5733.0
  • Removed the use of [w]ctype.h in favor of safer base string utilities and implemented new facilities for base::expected ( crrev.com/c/4749459 , crrev.com/c/4755226 ).
  • Implemented get_fedcm_dialog_title and select_fedcm_account automation commands in TestDriver for FedCM WPTs ( crrev.com/c/4618303 ).
  • Updated BiDi mapper build scripts to function correctly regardless of the current working directory ( crrev.com/c/4670550 ).
  • Converted /chrome/test/chromedriver files to use ARC (Automatic Reference Counting) in macOS builds, adding necessary boilerplate ( crrev.com/c/4663602 ).
  • Attempted to disable pipe communication by default via an automated rubber-stamper commit, but the change only touched configuration without altering the core pipes-by-default behavior introduced earlier ( crrev.com/c/4683947 ).

ChromeDriver 116

Новые функции

  • FedCM : Added a new capability allowing clients to check if ChromeDriver supports FedCM commands without needing to execute them and catch errors ( crrev.com/c/4624924 , Bug: 1356159 ).
  • Testing : Enabled test window reuse for testharness tests run via ChromeDriver in wptrunner to evaluate its impact on performance and flakiness ( crrev.com/c/4515180 , Bug: 1394572 ).

Исправлены ошибки

  • C++ standard compliance : Fixed undefined behavior caused by incorrectly using scoped enumerations (enum class) directly in format strings, addressing new Clang compiler warnings ( crrev.com/c/4628112 , Bug: 1456289 ).
  • FedCM : Addressed a potential cause of test flakiness by fixing an edge case that prevented setdelayenabled from working correctly ( crrev.com/c/4606064 , Bug: 1453412 ).

Internal changes and refactors

  • BiDi : Bumped the BiDi Mapper dependency and updated the build script to pull the latest revision from 'main' by default ( crrev.com/c/4615087 , crrev.com/c/4615791 , Bug: 4226 ).
  • Transitioned ChromeDriver to open and write all files using UTF-8 encoding explicitly ( crrev.com/c/4614522 ).
  • Refactored ChromeImpl to eliminate its dependency on DevToolsHttpClient and reduced the usage of SyncWebSocketFactory and BrowserInfo in preparation for communicating over pipes instead of WebSockets ( crrev.com/c/4571690 , crrev.com/c/4571199 , Bug: 3480 ).
  • Removed the deprecated "default mode" for fenced frames and updated associated tests to enable the new feature flag, continuing the migration to FLEDGE auctions ( crrev.com/c/4558645 ).
  • Improved FedCM tests by replacing generic WaitForCondition assertions with assertTrue to clearly indicate when timeouts occur ( crrev.com/c/4590211 ).
  • Marked known flaky dangling raw_ptr warnings in linux-rel unittests ( crrev.com/c/4598070 ).
  • Updated OWNERS file for the BiDi mapper ( crrev.com/c/4614518 ).

ChromeDriver 115

Новые функции

  • Mobile emulation : Implemented support for User-Agent Client Hints in mobile emulation, allowing ChromeDriver to parse client hints from capabilities and presets and pass them to Chrome ( crrev.com/c/4498667 , crrev.com/c/4466129 , Bug: 4243 ).
  • Mobile emulation : Updated mobile emulation presets to use the major version of the host browser instead of the ChromeDriver version when replacing the %s format string in the user agent ( crrev.com/c/4502850 , Bug: 4243 ).
  • Setup : Added support for downloading a specific ChromeDriver version for a given channel, improving automation scenarios where ChromeDriver runs on a different platform (like Android/WebView) than the host ( crrev.com/c/4550281 ). 116.0.5791.0

Исправлены ошибки

  • Classic : Fixed an issue where failing to resolve a node would incorrectly return an UnknownError instead of the standard NoSuchElement error ( crrev.com/c/4508952 , Bug: 4440 ).
  • Mobile emulation : Added stricter assertions to mobile emulation presets to enforce that the clientHints.mobile flag must be true if the userAgent string contains 'Mobile' ( crrev.com/c/4507142 , Bug: 4243 ).
  • Mobile emulation : Migrated DeviceMetrics overrides to use the Emulation.setDeviceMetricsOverride CDP command instead of the deprecated Page domain equivalent ( crrev.com/c/4502614 , Bug: 4243 ).

Internal changes and refactors

ChromeDriver 114

Новые функции

  • Classic : Passed MobileDevice information to MobileEmulationOverrideManager to lay the groundwork for future Client Hints and UserAgent overrides ( crrev.com/c/4447524 ).
  • Testing : Added test fixtures for ChromeDriver ( crrev.com/c/4459939 ).

Исправлены ошибки

  • Headless : Fixed a crash in the new headless mode by quietly ignoring scripted print preview requests (eg, window.print() ), aligning behavior with the old headless mode ( crrev.com/c/4436313 , Bug: 4385 ).
  • Capabilities : Fixed a use-after-move bug in ChromeDriver capabilities ( crrev.com/c/4462094 , Bug: 4243 ).
  • DevTools : Removed a DCHECK in DevToolsClientImpl::SendCommandInternal to prevent crashes when the DevTools connection breaks, as this is not an invariant violation ( crrev.com/c/4370486 , Bug: 4385 ).

Internal changes and refactors

ChromeDriver 113.0.5672.63

Supports Chrome version 113

  • Resolved issue 4205: Same object ids in Classic and BiDi [Pri-1]
  • Resolved issue 4302: Don't assume that Mapper is in the first tab in ExecuteGetWindowHandles [Pri-1]
  • Resolved issue 4356: Chrome 110 not utilizing pref value "download.default_directory" [Pri-1]

For more details, see the release notes .

ChromeDriver 113.0.5672.24

Supports Chrome version 113

  • Resolved issue 4205: Same object ids in Classic and BiDi [Pri-1]
  • Resolved issue 4302: Don't assume that Mapper is in the first tab in ExecuteGetWindowHandles [Pri-1]
  • Resolved issue 4356: Chrome 110 not utilizing pref value "download.default_directory" [Pri-1]

For more details, see the release notes .

ChromeDriver 112.0.5615.49

Supports Chrome version 112

  • Resolved issue 3517: Enable print feature for non-headless [Pri-]
  • Resolved issue 4419: Large overhead on Speedometer when using chromedriver [Pri-3]

For more details, see the release notes .

ChromeDriver 112.0.5615.28

Supports Chrome version 112

  • Resolved issue 4357: Chromedriver version 110.0.5481.77 session issue with --headless and --user-data-dir options. [Pri-1]

For more details, see the release notes .

ChromeDriver 111.0.5563.64

Supports Chrome version 111

  • Resolved issue 4216: Run ChromeDriver with custom BiDiMapper [Pri-]
  • Resolved issue 4300: Window handle is interoperable between Classic and BiDi [Pri-]
  • Resolved issue 4325: Handling of toJSON in jsonSerialize of call_function.js deviates from the standard. [Pri-]
  • Resolved issue 4330: DCHECK fails at DevToolsClientImpl::AddListener [Pri-]
  • Resolved issue 4357: ChromeDriver session issue with --headless and --user-data-dir options [Pri-1]

For more details, see the release notes .

ChromeDriver 111.0.5563.41

Supports Chrome version 111

  • Resolved issue 4357: ChromeDriver session issue with --headless and --user-data-dir options [Pri-1]

For more details, see the release notes .

ChromeDriver 111.0.5563.19

Supports Chrome version 111

  • Resolved issue 4216: Run ChromeDriver with custom BiDiMapper [Pri-]
  • Resolved issue 4300: Window handle is interoperable between Classic and BiDi [Pri-]
  • Resolved issue 4325: Handling of toJSON in jsonSerialize of call_function.js deviates from the standard. [Pri-]
  • Resolved issue 4330: DCHECK fails at DevToolsClientImpl::AddListener [Pri-]

For more details, see the release notes .

ChromeDriver 110.0.5481.77

Supports Chrome version 110

  • Resolved issue 4193: Failed to start new session on Android 13 [Pri-]
  • Resolved issue 4272: WebSocket should treat code=0 as an indication of FIN [Pri-]
  • Resolved issue 4276: Fix connectivity issues in ChromeDriver [Pri-]
  • Resolved issue 4295: ChromeDriver with "webSocketUrl": true is racy [Pri-]
  • Resolved issue 4297: ChromeDriver Bidi serializes incorrectly [Pri-]

For more details, see the release notes .

ChromeDriver 110.0.5481.30

Supports Chrome version 110

  • Resolved issue 4193: Failed to start new session on Android 13 [Pri-]
  • Resolved issue 4272: WebSocket should treat code=0 as an indication of FIN [Pri-]
  • Resolved issue 4276: Fix connectivity issues in ChromeDriver [Pri-]
  • Resolved issue 4295: ChromeDriver with "webSocketUrl": true is racy [Pri-]
  • Resolved issue 4297: ChromeDriver Bidi serializes incorrectly [Pri-]

For more details, see the release notes .

ChromeDriver 109.0.5414.74

Supports Chrome version 109

  • Resolved issue 4179: BiDi session must support multiple connections [Pri-]
  • Resolved issue 4203: Improve credits information [Pri-]
  • Resolved issue 4263: Crash on Meta+A [Pri-]

For more details, see the release notes .

ChromeDriver 109.0.5414.25

Supports Chrome version 109

  • Resolved issue 4179: BiDi session must support multiple connections [Pri-]
  • Resolved issue 4203: Improve credits information [Pri-]
  • Resolved issue 4263: Crash on Meta+A [Pri-]

For more details, see the release notes .

ChromeDriver 108.0.5359.71

Supports Chrome version 108 For more details, see the release notes .

ChromeDriver 108.0.5359.22

Supports Chrome version 108

  • Resolved issue 4204: Fix the failing WPT test_top_level_and_one_child [Pri-]
  • Resolved issue 4215: Rename chromedriver_mac64_m1 build to chromedriver_mac_arm64 [Pri-]
  • Resolved issue 4221: Crash when a click command closes the browser [Pri-]

For more details, see the release notes .

ChromeDriver 107.0.5304.62

Supports Chrome version 107

For more details, see the release notes .

ChromeDriver 107.0.5304.18

Supports Chrome version 107

  • Resolved issue 4180: Prohibit any BiDi commands handling until notified that BiDiMapper has started [Pri-]
  • Resolved issue 4198: ChromeDriver BiDi should not assume that BiDiMapper is always in the first tab [Pri-]
  • Resolved issue 4207: WebDriver error when running WPT [Pri-1]

For more details, see the release notes .

ChromeDriver 106.0.5249.61

Supports Chrome version 106

For more details, see the release notes .

ChromeDriver 106.0.5249.21

Supports Chrome version 106

  • Resolved issue 4016: Add basic BiDi support to ChromeDriver (Mapper based) [Pri-1]

For more details, see the release notes .

ChromeDriver 105.0.5195.52

Supports Chrome version 105

For more details, see the release notes .

ChromeDriver 105.0.5195.19

Supports Chrome version

For more details, see the release notes .

ChromeDriver 104.0.5112.79

Supports Chrome version 104

For more details, see the release notes .

ChromeDriver 104.0.5112.29

Supports Chrome version 104

  • Resolved issue 4121: WebDriver command sometimes fails with "unexpected command response" [Pri-1]

For more details, see the release notes .

ChromeDriver 104.0.5112.20

Supports Chrome version 104

  • Resolved issue 4121: WebDriver command sometimes fails with "unexpected command response" [Pri-1]

For more details, see the release notes .

ChromeDriver 103.0.5060.134

Supports Chrome version 103

  • Resolved issue 4048: target frame detached [Pri-]
  • Resolved issue 4121: WebDriver command sometimes fails with "unexpected command response" [Pri-1]

For more details, see the release notes .

ChromeDriver 103.0.5060.53

Supports Chrome version 103

  • Resolved issue 4048: target frame detached [Pri-]

For more details, see the release notes .

ChromeDriver 103.0.5060.24

Supports Chrome version 103

For more details, see the release notes .

ChromeDriver 102.0.5005.61

Supports Chrome version 102

  • Resolved issue 1309282: chromedriver doesn't support multivalued switches [Pri-1]

For more details, see the release notes .

ChromeDriver 102.0.5005.27

Supports Chrome version 102

  • Resolved issue 1309282: chromedriver doesn't support multivalued switches [Pri-1]

For more details, see the release notes .

ChromeDriver 101.0.4951.41

Supports Chrome version 101

  • Resolved issue 4046: DCHECK hit when appending empty fenced frame [Pri-]
  • Resolved issue 4080: Switching to nested frame fails [Pri-]

For more details, see the release notes .

ChromeDriver 101.0.4951.15

Supports Chrome version 101

  • Resolved issue 4046: DCHECK hit when appending empty fenced frame [Pri-]
  • Resolved issue 4080: Switching to nested frame fails [Pri-]

For more details, see the release notes .

ChromeDriver 100.0.4896.60

Supports Chrome version 100

  • Resolved issue 4002: Support Fenced Frames [Pri-]

For more details, see the release notes .

ChromeDriver 100.0.4896.20

Supports Chrome version 100

  • Resolved issue 4002: Support Fenced Frames [Pri-]

For more details, see the release notes .

ChromeDriver 99.0.4844.51

Supports Chrome version 99

For more details, see the release notes .

ChromeDriver 99.0.4844.35

Supports Chrome version 99

  • REVERTED!!! Resolved issue 2269: Impossible to use non-BMP characters (code points above U+FFFF) [Pri-3]
  • Resolved issue chromium:1295243: Regression in ChromeDriver sendKeys [Pri-1]

For more details, see the release notes .

ChromeDriver 99.0.4844.17

Supports Chrome version 99

For more details, see the release notes .

ChromeDriver 98.0.4758.102

Supports Chrome version 98

  • Resolved issue 3933: Click at edge of viewport is ineffective without error [Pri-]
  • REVERTED!!! Resolved issue 2269: Impossible to use non-BMP characters (code points above U+FFFF) [Pri-3]
  • Resolved issue chromium:1295243: Regression in ChromeDriver sendKeys [Pri-1]

For more details, see the release notes .

ChromeDriver 98.0.4758.80

Supports Chrome version 98

  • Resolved issue 3933: Click at edge of viewport is ineffective without error [Pri-]
  • Resolved issue 2269: Impossible to use non-BMP characters (code points above U+FFFF) [Pri-3]

For more details, see the release notes .

ChromeDriver 98.0.4758.48

Supports Chrome version 98

  • Resolved issue 3933: Click at edge of viewport is ineffective without error [Pri-]
  • Resolved issue 2269: Impossible to use non-BMP characters (code points above U+FFFF) [Pri-3]

For more details, see the release notes .

ChromeDriver 97.0.4692.71

Supports Chrome version 97

  • Resolved issue 3878: Better handling of fractional element coordinates for element click [Pri-]

For more details, see the release notes .

ChromeDriver 97.0.4692.36

Supports Chrome version 97

  • Resolved issue 3878: Better handling of fractional element coordinates for element click [Pri-]

For more details, see the release notes .

ChromeDriver 97.0.4692.20

Supports Chrome version 97

  • Resolved issue 3878: Better handling of fractional element coordinates for element click [Pri-]

For more details, see the release notes .

ChromeDriver 96.0.4664.45

Supports Chrome version 96

  • Resolved issue 3445: Impossible to access elements in iframe inside a shadow root [Pri-3]

For more details, see the release notes .

ChromeDriver 96.0.4664.35

Supports Chrome version 96

  • Resolved issue 3445: Impossible to access elements in iframe inside a shadow root [Pri-3]

For more details, see the release notes .

ChromeDriver 96.0.4664.18

Supports Chrome version 96

  • Resolved issue 3445: Impossible to access elements in iframe inside a shadow root [Pri-3]

For more details, see the release notes .

ChromeDriver 95.0.4638.69

Supports Chrome version 95

  • Resolved issue 3857: Host header or origin header is specified and is not whitelisted or localhost [Pri-1]
  • Added --allowed-origins argument

For more details, see the release notes .

ChromeDriver 95.0.4638.54

Supports Chrome version 95

  • Resolved issue 3857: Host header or origin header is specified and is not whitelisted or localhost [Pri-1]
  • Added --allowed-origins argument

For more details, see the release notes .

ChromeDriver 95.0.4638.17

Supports Chrome version 95

  • Resolved issue 3857: Host header or origin header is specified and is not whitelisted or localhost [Pri-1]
  • Added --allowed-origins argument

For more details, see the release notes .

ChromeDriver 95.0.4638.10

Supports Chrome version 95

  • Resolved issue 3857: Host header or origin header is specified and is not whitelisted or localhost [Pri-1]
  • Added --allowed-origins argument

For more details, see the release notes .

ChromeDriver 94.0.4606.113

Supports Chrome version 94

For more details, see the release notes .

ChromeDriver 94.0.4606.61

Supports Chrome version 94

For more details, see the release notes .

ChromeDriver 94.0.4606.41

Supports Chrome version 94

For more details, see the release notes .

ChromeDriver 93.0.4577.63

Supports Chrome version 93

For more details, see the release notes .

ChromeDriver 93.0.4577.15

Supports Chrome version 93

For more details, see the release notes .

ChromeDriver 92.0.4515.107

Supports Chrome version 92

For more details, see the release notes .

ChromeDriver 92.0.4515.43

Supports Chrome version 92

  • Resolved issue 3389: Host validation for ChromeDriver requests

For more details, see the release notes .

ChromeDriver 91.0.4472.101

Supports Chrome version 91

  • Resolved issue 1205107: Unable to get attribute value for fields on the web application.

For more details, see the release notes .

ChromeDriver 91.0.4472.19

Supports Chrome version 91

  • Resolved issue 3744: SendKeys() and Click() silently fail after link navigation
  • Resolved issue 3746: attribute endpoint incorrectly updates values

For more details, see the release notes .

ChromeDriver 90.0.4430.24

Supports Chrome version 90

  • Resolved issue 3708: GetElementLocation's inView fails for elements in shadow DOM
  • Resolved issue 3721: Collect performance log for service worker when enabled
  • Resolved issue 3731: AdbImpl::GetPidByName doesn't work correctly on non-standard Android OS's like on OnePlus
  • Resolved issue 3733: Catastrophic failure with domain on localhost
  • Resolved issue 3734: Driver should Error Attempting to set Cookie on Wrong Domain
  • Resolved issue 3743: Refactor call function and fix remove element issue

For more details, see the release notes .

ChromeDriver 89.0.4389.23

Supports Chrome version 89

  • Resolved issue 3667: Timed out receiving a message from renderer
  • Resolved issue 3675: GetElementLocation uses inView method which mishandles boolean as array
  • Resolved issue 3682: GetElementRegion returns incorrect size for elements which are partially out of viewport
  • Resolved issue 3690: ChromeDriver fails if extensions use chrome.windows API

For more details, see the release notes .

ChromeDriver 88.0.4324.96

Supports Chrome version 88

  • Resolved issue 3641: Page not getting loaded/rendered when browser window is not in focus with Chrome Beta v87 and chromedriver v(87/86)

For more details, see the release notes .

ChromeDriver 88.0.4324.27

Supports Chrome version 88

  • Resolved issue 3611: getText() output in protractor different from <element>.innerText
  • Resolved issue 3625: Improve element screenshot compatibility
  • Resolved issue 3628: Stale Element Reference and wrong URL reported back with URL having another URL as part of its path
  • Resolved issue 3631: Add support for the webauthn:extension:largeBlob capability
  • Resolved issue 3635: Chromedriver 86 - chromedriver.quit() doesn't seem to pass unload event properly
  • Resolved issue 3649: Copying selected text to clipboard doesn't work on Windows 10 when using headless mode

For more details, see the release notes .

ChromeDriver 87.0.4280.88

Supports Chrome version 87

  • Resolved issue 3641: Page not getting loaded/rendered when browser window is not in focus with Chrome Beta v87 and chromedriver v(87/86)
  • Resolved issue 3657: Screenshot background browser timed out

For more details, see the release notes .

ChromeDriver 87.0.4280.20

Supports Chrome version 87

  • Resolved issue 2421: Delete old port-forwarding channels on android adb-server
  • Resolved issue 3474: Emulated mobile device list needs updating
  • Resolved issue 3507: Implement "get computed role"
  • Resolved issue 3508: Implement "get computed label"
  • Resolved issue 3584: Rename ChromeDriver command line option --whitelisted-ips
  • Resolved issue 3588: Bidi WebSocket connection
  • Resolved issue 3594: Navigation completes prematurely if OOPIF loads before main page
  • Resolved issue 3598: A command line option for devtools port to be forwarded to webview_devtools_remote socket
  • Resolved issue 3608: Chromedriver debuggerAddress doesn't support ipv6

For more details, see the release notes .

ChromeDriver 86.0.4240.22

Supports Chrome version 86

  • Resolved issue 3370: Shut down Chrome gracefully or cookie will not be correctly saved to SQLite persistence file
  • Resolved issue 3401: Get Element Location JS doesn't locate the visible center of the element
  • Resolved issue 3462: For sendKeys, CMD key don't work for MAC
  • Resolved issue 3541: Improve log between Client and ChromeDriver
  • Resolved issue 3559: Output Chrome version when ChromeDriver reports incompatible

For more details, see the release notes .

ChromeDriver 85.0.4183.87

Supports Chrome version 85

  • Resolved issue 3578: Chrome 85 no longer allows graceful interaction with windows when an alert dialog is open

For more details, see the release notes .

ChromeDriver 85.0.4183.83

Supports Chrome version 85

  • Resolved issue 3577: ChromeDriver 85 doesn't detect changed Chrome directory (C:\Program Files)

For more details, see the release notes .

ChromeDriver 85.0.4183.38

Supports Chrome version 85

  • Resolved issue 3214: ChromeDriver78: Sendkeys resets text selection with contenteditable
  • Resolved issue 3376: Remove LaunchApp command from ChromeDriver
  • Resolved issue 3432: Sometimes NavigationTracker fails to detect when the page has finished loading
  • Resolved issue 3481: New Print endpoint according to w3c spec
  • Resolved issue 3488: driver.get doesn't throw error when proxy is wrong configured
  • Resolved issue 3502: Use document.hasFocus() to check if element is focused
  • Resolved issue 3515: selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message

For more details, see the release notes .

ChromeDriver 84.0.4147.30

Supports Chrome version 84

  • Resolved issue 3420: after switching to the print window, the chromedriver stops responding
  • Resolved issue 3421: Driver returns Cyrillic text without styles
  • Resolved issue 3422: GetElementText breaks with prototype 1.6.0.3
  • Resolved issue 3434: Cannot get 'assert' messages from the 'browser' logs

For more details, see the release notes .

ChromeDriver 83.0.4103.39

Supports Chrome version 83

  • Updated Chromedriver to work correctly with prototype.js.

For more details, see the release notes .

ChromeDriver 83.0.4103.14

Supports Chrome version 83

  • Resolved issue 1778: Deprecate launchApp from ChromeDriver
  • Resolved issue 2520: InitSession can wait forever when Chrome is unresponsive
  • Resolved issue 3120: Headless mode download from new tab
  • Resolved issue 3234: Confirm semicolon found before substring
  • Resolved issue 3240: ExecuteGetElementRect doesn't check returned status from GET_SIZE
  • Resolved issue 3331: The get_cookies() method is returning 'expiry' keys of type double, but should be int64 in w3c mode
  • Resolved issue 3332: Retry timeout logged as severe
  • Resolved issue 3339: Chromedriver exited unexpectedly with code null, signal SIGTRAP
  • Resolved issue 3351: Improve Security Considerations message
  • Resolved issue 3352: Support SendKeys for color elements
  • Resolved issue 3353: Wait for Pending Navigation continues after frame context destroyed
  • Resolved issue 3375: Chromedriver v80 stalls on getPageSource on some sites
  • Resolved issue 3383: ChromeDriver 80+ on Windows seems to exit or stall on certain element or click commands
  • Resolved issue 3399: Remove wasThrown check

ChromeDriver 81.0.4044.138

Supports Chrome version 81

  • Updated Chromedriver to work correctly with prototype.js.

For more details, see the release notes .

ChromeDriver 81.0.4044.69

Supports Chrome version 81

  • Fixed: Chromedriver crashes on getPageSource on some sites.
    • Fixed: ChromeDriver crashes on certain element or click commands.

For more details, see the release notes .

ChromeDriver 81.0.4044.20

Supports Chrome version 81

  • Fixed error when attempting to get location of html element.
    • Get and Add Cookie commands are now frame specific.
    • Resolved some issues that occur with sites that redefine standard Javascript objects.
    • ChromeDriver will continue to wait for loading to complete after receiving a Target Closed message.
    • Chromedriver now returns spec compliant error code for timeouts
    • Fixed: ChromeDriver Unexpected Slow response time on NewSession Command.
    • User-defined timeouts of over 10 minutes are now supported.
    • Fixed: ChromeDriver unable to connect to DevTools due to IPv4 vs IPv6 mismatch.
    • Restored search order for Chrome binary on Linux.

For more details, see the release notes .

ChromeDriver 80.0.3987.106

Supports Chrome version 80

  • Restored search order for Chrome binary on Linux

For more details, see the release notes .

ChromeDriver 80.0.3987.16

Supports Chrome version 80

  • Fixed Load page was aborted when using a proxy.
  • Chromedriver now waits for Current frame to load.
  • ChromeDriver log will include the port used by the driver.
  • Enabled SetGeoLocation for w3c mode.
  • Added missing Alert text for UnexpectedAlertOpen status.
  • Improved message when CRX2 Extension is loaded.
  • Fixed a potential race condition in ExecuteGetPageSource.
  • ChromeDriver will add --ignore-certificate-errors flag when acceptInsecureCerts capability is true
  • Updated the error message and return status for no such execution context
  • Fixed: ChromeDriver may block indefinitely while waiting for pending navigation.
  • Added SameSite attribute to AddCookie and GetCookie.

For more details, see the release notes .

ChromeDriver 79.0.3945.36

Supports Chrome version 79

Includes the following change over version 79.0.3945.16:

  • Fixed incorrect calculation of element coordinates

For more details, see the release notes .

ChromeDriver 79.0.3945.16

Supports Chrome version 79

  • Fixed ChromeDriver crash caused by javascript alert fired during command execution
    • Fixed a bug causing Chromedriver to lock when an alert is fired while taking a screenshot
    • Removed --ignore-certificate-errors from Chrome launch command
    • Changed platform and platformName to windows on Win10
    • Fixed undefined window.navigator.webdriver when "enable-automation" is excluded
  • Fixed WPT test "test_not_editable_inputs[hidden]"
    • Fixed "Element is not clickable" when using headless mode

For more details, see the release notes .

ChromeDriver 78.0.3904.105

Supports Chrome version 78

Includes the following change over version 78.0.3904.70: * Fixed incorrect calculation of element coordinates

For more details, see the release notes .

ChromeDriver 78.0.3904.70

Supports Chrome version 78

Includes the following change over version 78.0.3904.11:

  • Reverted the change to adjust screeshot size on retina display, due to multiple issues reported

For more details, see the release notes .

ChromeDriver 78.0.3904.11

Supports Chrome version 78

  • Fixed several issues in JavaScript object serialization
    • Fixed a bug in capability matching for Chrome on Android
    • Implemented permissions automation
    • Fixed screenshot size on retina display
  • Fixed page load timeout in some scenarios
    • Improved platformName capability matching
    • Fixed error code returned while moving pointer to drop-down list options
    • Fixed an issue affecting download in headless mode

For more details, see the release notes .

ChromeDriver 77.0.3865.40

Supports Chrome version 77

Includes the following changes over version 77.0.3865.10:

  • Fixed two bugs in serializing and deserializing JavaScript objects
  • Fixed handling of platformName: android while matching capabilities

For more details, see the release notes .

ChromeDriver 77.0.3865.10

Supports Chrome version 77

  • Fixed several issues in the implementation of Actions API
    • Improved JavaScript code execution and result handling
    • Fixed a bug that incorrectly rejected POST requests with empty body in OSS mode
  • A more robust navigation tracker
  • Support eager page load strategy
    • Added New Window command from W3C WebDriver spec
  • Support to save file downloads in headless mode
  • Added support for loading CRX3 extensions

For more details, see the release notes .

ChromeDriver 76.0.3809.126

Supports Chrome version 76

Includes the following changes over version 76.0.3809.68:

  • Fixed two bugs in serializing and deserializing JavaScript objects

For more details, see the release notes .

ChromeDriver 76.0.3809.68

Supports Chrome version 76

Includes the following changes over version 76.0.3809.25:

  • Fixed a bug in detecting circular reference in JavaScript objects
  • Fixed a bug that causes ChromeDriver to crash when certain types of JavaScript errors occur
  • Fixed a bug that prevents actions API to interact with elements inside shadow DOMs
    • Fixed a bug in keeping track of modifier key state between actions API commands
    • Fixed a bug in keeping track of pointer locations between actions API commands
    • Save "Cannot call non W3C standard command while in W3C mode" error to log file when it occurs

For more details, see the release notes .

ChromeDriver 76.0.3809.25

Supports Chrome version 76

Includes the following changes over version 76.0.3809.12:

  • Fixed a bug that incorrectly rejected POST requests with empty body in OSS mode
  • Added new endpoints for retrieving Chrome log
    • Added endpoint for Is Displayed command in W3C mode

For more details, see the release notes .

ChromeDriver 76.0.3809.12

Supports Chrome version 76

  • Finished implementation of Actions API
    • Improved spec compliance of script timeout handling
    • Improved serialization of results from Execute Script command
    • Fixed issues in scrolling element into view
    • Added handling of Cancel key defined in WebDriver spec
    • Fixed processing of unhandled alert error response
    • Fixed processing of <details> element
    • Updated excludeSwitches option to allow optional leading dashes in switch names

For more details, see the release notes .

ChromeDriver 75.0.3770.140

Supports Chrome version 75

Includes the following changes over version 75.0.3770.90:

  • Fixed a bug that caused ChromeDriver to crash when some types of JavaScript error occurs
  • Fixed a bug in preserving modifier key state between actions

For more details, see the release notes .

ChromeDriver 75.0.3770.90

Supports Chrome version 75

Includes the following changes over version 75.0.3770.8:

  • Fixed a bug that incorrectly rejected POST requests with empty body in OSS mode
  • Added new endpoints for retrieving Chrome log

For more details, see the release notes .

ChromeDriver 75.0.3770.8

Supports Chrome version 75

The most noticeable change is ChromeDriver now runs in W3C standard compliant mode by default . Other changes include:

  • Fixed a bug that caused blur event to be raised twice during element clear
  • Renamed capability loggingPrefs to goog:loggingPrefs, as required by W3C standard
  • Fixed error handling in W3C mode
    • Correct handling of creating cookies without leading dot in the domain name
    • Allows null for script timeout
    • Fixed Element Send Keys command to file input with 'multiple' attribute
    • Fixed Get Active Element command to return "no such element" error when no active element exists
    • Fixed navigation to malformed URL to return "invalid argument" error
    • Fixed HTTP status code when invalid session id is received
    • Fixed error response when input parameter is missing or malformed
    • Fixed Execute Script command to handle line-oriented JavaScript comment

For more details, see the release notes .

ChromeDriver 74.0.3729.6

Supports Chrome version 74

  • Fixed a bug that generated unexpected debug.log file on Windows
  • Fixed mouse clicking and drag / drop inside SVG document
  • Added cache-control header in responses from ChromeDriver
  • Fixed the type of error when click is intercepted by a different element
  • Fixed a bug that caused ChromeDriver to fail on Linux devices without /dev/shm
  • Fixed some types of double click events
  • Fixed Get Sessions command
  • Fixed error checking in Switch To Frame command
  • Fixed Get Page Source command

For more details, see the release notes .

ChromeDriver 73.0.3683.68

Supports Chrome version 73

  • Fixed a bug that generated unexpected debug.log file on Windows
  • Fixed error code returned from Execute Script command in some scenarios
  • Added cache-control header in responses from ChromeDriver
  • Made the HTTP server keep connection alive by default
  • Fixed Close Window command to correctly handle user prompts
  • Fixed error code returned while sending keys to disabled element
  • Improved spec compliance of timeout value handling
  • Improved spec compliance of Add Cookie command
    • Increased HTTP server listening queue length
  • Fixed Is Element Displayed command in v0 shadow DOM
    • Added warning about Element Clear command behavior change in log file
  • Fixed Execute Script command to correctly convert document.all into JSON format
  • Improved handling of bad element reference

For more details, see the release notes .

ChromeDriver 2.46

Supports Chrome v71-73

  • Fixed error code returned from Execute Script command in some scenarios
  • Made the HTTP server keep connection alive by default
  • Fixed Close Window command to correctly handle user prompts
  • Fixed error code returned while sending keys to disabled element
  • Improved spec compliance of timeout value handling
  • Improved spec compliance of Add Cookie command
  • Improved spec compliance of Switch to Frame command
  • Increased HTTP server listening queue length
  • Fixed Is Element Displayed command in v0 shadow DOM
  • Fixed Element Double Click command
  • Added warning about Element Clear command behavior change in log file
  • Fixed Execute Script command to correctly convert document.all into JSON format
  • Improved handling of bad element reference

For more details, see the release notes .

ChromeDriver 2.45

Supports Chrome v70-72

  • Fixed New Session is not spec compliant
  • Fixed ChromeDriver shouldn't launch Chrome if Chrome and ChromeDriver versions are incompatible
  • Fixed Find Element command returns wrong error code when an invalid locator is used
  • Fixed Some ChromeDriver status codes are wrong
  • Fixed Compile error in JS inside of WebViewImpl::DispatchTouchEventsForMouseEvents
  • Fixed Window size commands should handle user prompts
  • Fixed ChromeDriver doesn't start Chrome correctly with Chrome option "user-data-dir="
  • Fixed Status command is not spec compliant
  • Fixed Add support for strictFileInteractability

ChromeDriver 2.44

Supports Chrome v69-71

  • Fixed WindowMaximize on Mac
  • Fixed Incorrect 'alert open error' for window handle call
  • Fixed Element Send Keys should get "text" property in W3C mode
  • Fixed XML special case of Is Element Enabled is not handled as per spec
  • Fixed XML special case of Get Element CSS Value is not handled as per spec
  • Fixed Set Window Rect needs to check for invalid input
  • Fixed Support new unhandledPromptBehavior modes

ChromeDriver 2.43

Supports Chrome v69-71

Changes include:

  • Fixed Parsing of proxy configuration is not standard compliant
  • Fixed Launch app command is flaky
  • Fixed Screenshot of element inside iFrame is taken incorrectly
  • Added ChromeDriver supports window resizing over a remote connection
  • Fixed Error codes are not handled in Clear element
  • Fixed Not waiting until element is visible
  • Fixed Get element property is not implemented
  • Fixed Switch to Frame is not spec compliant
  • Fixed Execute Async Script doesn't return spec compliant error codes
  • Fixed Execute Script doesn't return spec compliant error codes
  • Fixed Error code in ExecuteGet is not conformant with spec
  • Fixed Send Alert Text is not returning spec compliant error codes
  • Fixed clear() on an input type="date" pretends element is not user-editable
  • Fixed Chromedriver gets window handle for the tab which is opened manually
  • Fixed Allow append or start a new log file for chromedriver
  • Fixed New Session doesn't invoke w3c mode if flag is in firstMatch

ChromeDriver 2.42

Supports Chrome v68-70

Changes include:

  • Fixed ClickEelement in Mobile emulation
  • Fixed whitelisted IPs with IPv4
  • Fixed starting ChromeDriver with whitelisted-ips flag on Mac OS
  • Fixed SetTimeout to accept both pre-W3C and W3C formats
  • Fixed take element screenshot
  • Fixed ChromeDriver is looking for Chrome binaries in a system PATH as well
  • Fixed Maximize window and Full Screen
  • Implemented log-replay feature. ( doesn't work for Android and Remote Browser yet )
  • Fixed some error codes were not compliant to W3C standard
  • Fixed console.log with multiple arguments not handled properly
  • Fixed GetElementRect should allow doubles
  • Fixed touch emulation

ChromeDriver 2.41

Supports Chrome v67-69

Changes include:

  • Fixed issue when ChromeDriver runs with "whitelisted-ips" option
  • Remote Debugging Port is returned in capabilities
  • Implemented getting window size on Android
  • Desktop Chrome launch error messages are improved
  • ChromeDriver fails fast when unable to start Chrome binaries
  • Close Window return value conforms with spec