下载内容

早期 Chrome 版本

对于较低版本的 Chrome,以下是支持它的 ChromeDriver 版本。

如需详细了解如何选择合适的 ChromeDriver 版本,请参阅版本选择页面。

ChromeDriver 148

问题修复

  • DOM 访问:修复了在模拟点击 iframe 内的按钮时发生的崩溃问题,该 iframe 本身嵌套在已关闭的影子根中。之前用于查找所有者框架元素 ID 的 JavaScript 无法穿透封闭的影子根;新实现直接使用 f.X.d.Y.e.Z 格式来解析框架 (crrev.com/c/7594919Bug: 469831357)。
  • 安全性:加强了 Chrome 实参清理,以防止涉及位置实参注入的潜在漏洞 (crrev.com/c/7695604Bug: 494464734)。
  • 测试:增加了在 AddressSanitizer (ASAN) 下运行时 commands_unittestFindElement(s)WhileNavigating 测试的 kImplicitWait 超时时间。默认的 3 秒超时时间不足以让重试循环在 ASAN 开销下消耗所有模拟错误,从而导致不稳定性 (crrev.com/c/7657276)。

内部更改和重构

ChromeDriver 147

问题修复

  • 测试:添加了一项封闭的回归测试,以验证 ElementClick 是否正确处理了具有叠加层元素的跨源 iframe 中的点击,尤其是在网站隔离方案中。这样可确保点击不会错误地路由到嵌入式内容,而是路由到可见的叠加层(crrev.com/c/7261984Bug: 42321834Bug: 42322220)。

内部更改和重构

  • C++ 标准:重命名了网址解码模式和函数,以遵循 Google C++ 样式指南,将 DecodeURLMode 更改为 DecodeUrlMode,并将 DecodeURLEscapeSequences() 更改为 DecodeUrlEscapeSequences() (crrev.com/c/7593238)。引入了 url::UrlEscapeDecoder,以简化整个代码库中网址解码的使用 (crrev.com/c/7610180)。从 //chrome 文件中移除了多余的 build/branding_buildflags.h include(crrev.com/c/7595125Bug: 40318405)。从 //chrome 中移除了 BUILDFLAG(IS_FUCHSIA) 逻辑,ChromeDriver 中除外(crrev.com/c/5485913Bug: 41481724)。
  • 内存安全(spanification):解决了 ChromeDriver 实用程序中的 UNSAFE_TODO 标记,将其迁移到安全的基于 span 的实现(crrev.com/c/7562602Bug: 435317390)。

ChromeDriver 146

问题修复

  • 稳定性:修复了在处理命令时如果窗口同时关闭(例如,在等待导航完成时)可能发生的 ChromeDriver 崩溃问题。此修复方案会获取 WebView 对象的锁,以防止该对象被过早处置(crrev.com/c/7257074错误: 468228355)。
  • 安全性:为传入的 WebSocket 连接添加了针对 ChromeDriver HTTP 服务器的 Origin 标头检查,以防止潜在的跨源劫持(crrev.com/c/7538400Bug:478783560)。
  • 测试:将 testWebviewDetactedDuringClick 移至不稳定的过滤条件,在所有运行中跳过该测试,而不仅仅是在无头模式下跳过(crrev.com/c/7545378Bug: 481485821)。

内部更改和重构

ChromeDriver 145

新功能

  • 测试:更新了 run_py_tests.py 测试框架,以接受针对 inputtextareacontenteditable 元素的不同长度(例如 53、101 和 501 个字符)的确定性字符串测试。这提供了回归覆盖范围,可确保在长时间的 send_keys 操作期间不会丢弃任何字符(crrev.com/c/7221410Bug: 428116078)。
  • 测试:针对 HTML <selectlist> 元素添加了特定测试(crrev.com/c/7420729Bug:342889200)。

问题修复

  • 屏幕截图:还原了元素屏幕截图的缩放,因为 WebDriver 规范未规定缩放,并且它与其他屏幕截图功能不一致(crrev.com/c/7409603Bug:42323022)。
  • 测试:通过更新 ChromeDriver 测试预期值,使其与 开发者工具 前端(crrev.com/c/7408699错误: 474179501)中引入的最新正确值(针对 platform、platformVersion、model 和 mobile 字段)相匹配,修复了 testClientHintsDeviceNameIPhoneXtestClientHintsDeviceNameIPad 中的失败问题。

内部更改和重构

ChromeDriver 144

新功能

  • 权限:更新了 SetPermission 命令,使其符合最新的 W3C 规范,除了顶级源之外,还使用当前框架的网址(嵌入源)。这会正确配置依赖于嵌入式上下文的权限(例如 storage-access)(crrev.com/c/7106801、在还原 crrev.com/c/7104484 后重新着陆 crrev.com/c/7093216Bug: 384959114)。
  • 测试:向 ChromeDriver 测试上传载荷添加了 testMetadata(包括测试名称),以在使用结构化测试 ID 时支持不稳定性认可器 (crrev.com/c/7124354Bug: 456432041)。

问题修复

  • 目标生命周期:修复了以下错误:如果子框架在等待命令响应时父框架分离,ChromeDriver 会停滞。ChromeDriver 现在会在命令处理期间,当父 WebViewImpl 被锁定并标记为已分离时,明确地以传递方式分离后代框架(crrev.com/c/7080912Bug: 438436830)。
  • 窗口管理:专门针对 ChromeDriver 会话停用了被遮挡窗口的后台处理。此更改解决了 WebDriver BiDi 中的问题,即如果浏览器错误地认为某个窗口被遮挡并对其进行节流,测试可能会失败(crrev.com/c/7128058Bug: 458027819)。

内部更改和重构

ChromeDriver 143

问题修复

  • 稳定性:修复了 OverrideNetworkConditions 中的释放后再使用 (UAF) 崩溃问题。为后续应用保存的原始指针会在连续调用之间释放;现在已得到妥善管理 (crrev.com/c/7047422Bug: 42323833)。
  • 测试:利用 WaitForCondition API 实现更可靠的同步,修复了 Android ChromeDriver 触控测试中出现的间歇性问题 (crrev.com/c/6978928Bug: 42321861)。
  • DSE 预热:通过 --disable-features=Prewarm 开关默认停用了 ChromeDriver 中的 Prewarm 功能,防止预热的网页干扰测试作业和目标发现(crrev.com/c/7007072Bug: 431928370)。

内部更改和重构

  • C++ 标准:在仅使用智能指针的 //chrome 标头中,将 ref_counted.h 替换为 scoped_refptr.h,从而提高编译效率(crrev.com/c/7080753Bug: 40245294)。将 GURL 访问器迁移到其 Get* 变体(例如,GetSpec() 而不是 spec()),以清晰指示字符串分配,防止意外的性能损失(crrev.com/c/7002119Bug: 448174617)。
  • 测试:使用 ADD_FAILURE() 移除了 devtools_client_impl_unittest.cc 中的冗余检查模式 (crrev.com/c/6998270)。为 crbug.com/413382905 添加了回归测试 (crrev.com/c/6879417)。

ChromeDriver 142

新功能

  • 诊断:添加了 TERMINATION_STATUS_EVICTED_FOR_MEMORY 状态,以便区分浏览器主动终止(以节省内存)的进程与因内存不足 (OOM) 错误而崩溃的进程。目前,此行为与 OOM 崩溃(显示悲伤标签页)完全相同,但为未来的不同处理方式奠定了基础(crrev.com/c/6991933Bug: 394092280)。
  • 诊断:向 WebDriver 响应添加了 goog:processID 功能,该功能可返回桌面浏览器的主要进程 ID。这使 ChromeDriver 与 Firefox 的 moz:processID 保持一致,并有助于测试平台无障碍 API (crrev.com/c/5825307Bug: 438884256)。
  • 测试:为 ChromeDriver 的 Python 集成测试添加了对结构化测试 ID 上传到 ResultSink 的支持(crrev.com/c/6916708Bug: 418015486)。

问题修复

  • 诊断:修改了 ChromeDriver 在正常 Chrome 退出时的行为,使其不再发出与 user-data-dir 使用相关的令人困惑的通用错误消息。现在,它明确指出实例已终止,并引导用户查看 Chrome 抛出的特定错误的详细日志(crrev.com/c/6977507Bug: 42323434)。
  • 初始化:更新了 ChromeDriver 的初始化结构,以保持与 Selenium WebDriver v4.16.0 更改的兼容性 (crrev.com/c/6630600)。
  • Android:修复了旧版 Android(低于 Android 11)上 CheckAppInstalled 的问题,其中软件包管理器不支持 --user cur 标志 (crrev.com/c/6785949, Bug: 433885051)。
  • 测试:修复了 IgnoreDuplicateNavs 错误地覆盖 ChromeDriver 中的默认功能开关的 bug。已针对 ChromeDriver 会话停用该功能,并修正了 Switches::SetFromSwitches 逻辑(crrev.com/c/6949166Bug: 445332809)。

内部更改和重构

ChromeDriver 141

新功能

  • 测试:向 run_wpt_tests.py 添加了对 --enable-per-test-tracing 标志的支持,使其行为与 run_web_tests.py 保持一致。此功能可从内部 ChromeDriver 缓冲区检索 JSON 跟踪事件,并将其保存到测试结果目录中 (crrev.com/c/6820247Bug: 434017035)。

问题修复

  • 诊断:阻止 ChromeDriver 在返回 kTabCrashed 错误时打印其自己的内部堆栈轨迹。这样可以避免用户感到困惑,同时仍能确保渲染器崩溃堆栈轨迹保留在日志中(crrev.com/c/6841669Bug: 395131239)。

内部更改和重构

ChromeDriver 140

问题修复

  • 目标选择:修复了以下问题:当 Chrome 启动时,开发者工具窗口可能会与主页面竞争,以被选为主要窗口(使用 --auto-open-devtools-for-tabs 启动 Chrome 时)。ChromeDriver 现在在确定主窗口时会明确排除以 devtools:// 为前缀的目标(crrev.com/c/6769505Bug:427908560)。
  • 目标选择:通过忽略祖先元素施加的任何 overflow:hidden 剪裁,防止 ChromeDriver 错误地计算元素的视图内中心点。这使计算与 WebDriver 规范和其他 PerformActions 场景保持一致(crrev.com/c/6735230Bug: 42322257)。
  • Android:修复了旧版 Android(Android 11 之前)上软件包管理器的 --user cur 标志不受支持的 CheckAppInstalled 函数(crrev.com/c/6785949Bug: 433885051)。
  • 测试:修复了 DSEPrewarm 功能导致的 chromedriver_py_tests 测试套件不稳定问题。ChromeDriver 现在会在 CDP 客户端附加到进程时停用预热触发器,以防止测试期间出现意外的目标数量(crrev.com/c/6764274Bug: 423465927Bug: 431928370)。
  • 测试:还原了向 IdentityDialogController(FedCM 的一部分)添加 ShouldShowAccountsPassiveDialog 函数的操作,该操作导致了回归(crrev.com/c/6780413Bug: 425801332)。

内部更改和重构

ChromeDriver 139

问题修复

  • 初始化结构:更新了 ChromeDriver 初始化结构,以保持与 Selenium WebDriver v4.16.0 更新 (crrev.com/c/6630600) 的兼容性。
  • 实参解析:合并了多个 --js-flags 实参(与 --enable-features 的处理方式类似),而不是仅采用提供的最后一个实参。这有助于在传递复杂的 V8 标志时提高易用性(crrev.com/c/6612042Bug: 421941798)。

内部更改和重构

ChromeDriver 138

新功能

  • 显示功能管理:更新了视口细分受众群的 ChromeDriver 行为,以符合 CSS 工作组最近的决议:现在,当可折叠设备平放时或对于所有不可折叠设备,它都会始终返回包含单个细分受众群的数组。这与媒体查询行为相匹配,并降低了指纹识别风险(crrev.com/c/6469455Bug: 414430842)。
  • 偏好设置和本地状态 (Android):在针对 Android 设备运行 ChromeDriver 时,添加了对 localStateprefs 功能的支持。此功能依赖于 ADB,需要自定义 user-data-dir 标志;目前,它会使用默认模板初始化状态(crrev.com/c/6397155Bug: 406427226)。

问题修复

  • 稳定性:修复了以下问题:在 macOS 上,当用户通过“继续”按钮关闭首次运行体验 (FRE) 对话框时,ChromeDriver 会发生崩溃。崩溃是由覆盖 kTargetDetached 错误状态并尝试访问无效的 WebView 导致的(crrev.com/c/6538867Bug: 410599467)。
  • 性能测试:修复了 Windows pinpoint bot 上的 crossbench 测试运行程序,该运行程序在传递 --browser=release_x64 时错误地尝试使用过时的 ../Release_x64 路径来定位 ChromeDriver 二进制文件,导致其回退到下载旧的二进制文件,而不是使用本地 build (crrev.com/c/6502134)。

内部更改和重构

  • 内存安全(跨度化):将 WebSocket::OnReadDuringHandshakeWebSocket::OnReadDuringOpen 中的未检查指针替换为 base::span,从而解决 unsafe-buffer-usage 警告(crrev.com/c/6557346Bug: 354307328)。移除了 chrome/test/chromedriver 中在其他迁移后不再需要的 #pragma allow_unsafe_buffers pragma(crrev.com/c/6503154Bug: 414858406)。
  • C++ 标准:移除了 chrome/ 标头中多余的 #include "url/gurl.h"#include <queue> 指令,并在适当的位置添加了前向声明,以缩短编译时间(crrev.com/c/6578272crrev.com/c/6570349Bug: 40318405)。
  • API 迁移:将 RSAPrivateKey 迁移到 crypto::PrivateKey,并将 SHA256HashString 迁移到 crypto::Sha256,清理了过时的错误处理情形,因为新的密钥生成 API 是可靠的 (crrev.com/c/6490294, Bug: 372283556)。
  • 测试:向计算压力 API 自动化命令(包括 CDP 和 testdriver 实现)添加了 OwnContributionEstimate 属性(crrev.com/c/6373001Bug: 402033762)。
  • 测试:通过简化断言来检查视口段是否已清除回默认视口大小,修复了在持续集成 (CFT) 机器人上验证 ClearDisplayFeatures 的集成测试(crrev.com/c/6535067Bug: 417195296)。
  • 测试:增加了 Protected Audience WebDriver 测试的超时时间,以解决较慢的 CI 机器人上的不稳定问题 (crrev.com/c/6494277)。

ChromeDriver 137

新功能

  • 显示功能管理:添加了 ChromeDriver 命令来模拟和清除显示功能,从而实现 Viewport Segments API(CSS 和 JS)的自动化要求。这使开发者能够在双屏或可折叠设备上以编程方式测试折叠或铰链场景 (crrev.com/c/6368674Bug: 40137084)。
  • BiDi:更新了 ChromeDriver,使其默认在隐藏目标中运行 BiDi Mapper。这样可防止映射器的 data:, 页面干扰测试作业和可见性。如需调试映射器,客户端可以传递 --debug-bidi-mapper 标志,以便在可见标签页中运行它(crrev.com/c/6441064,在还原 crrev.com/c/6439633 后重新着陆 crrev.com/c/6433672Bug:402339952)。

问题修复

  • BiDi:如果 ChromeDriver 丢失了由其他 CDP 或 BiDi 会话创建的目标,则在处理 BiDi 命令(例如 browsingContext.close)时,不会再错误地关闭整个浏览器会话。现在,它会在决定终止浏览器之前明确同步顶级标签页(crrev.com/c/6440293Bug: 42323838)。
  • BiDi:与上游 WebDriver BiDi 规范保持一致,确保 ChromeDriver 在 goog:channel 功能以空字符串形式传递时将其移除,并将其视为缺少渠道(crrev.com/c/6438865Bug: 409282307)。
  • 输入:更新了 ChromeDriver 以支持指针移动命令中的小数(浮点)x 和 y 坐标,从而修复了触摸和指针事件失败或行为不正确的问题 (crrev.com/c/6440834Bug: 409684333)。
  • 目标选择:防止在访客视图中打开的 PDF 进程外 iframe (OOPIF)(当 PdfOopif 功能处于停用状态时)渗入到顶级目标列表。扩展了过滤逻辑,以正确排除这些以 chrome-extension:// 为前缀的目标(crrev.com/c/6383500Bug: 396611138)。

内部更改和重构

ChromeDriver 136

新功能

  • 浏览器生命周期:添加了 Chrome 特有的功能 quitGracefully,该功能可强制 ChromeDriver 尝试以正常方式(使用 Browser.close 或 SIGTERM)停止浏览器,而不是使用默认的 SIGKILL。这使 rr 等调试器有时间在进程终止之前转储其记录(crrev.com/c/6322538,在短暂还原 crrev.com/c/6320536 后重新着陆 crrev.com/c/6269180Bug: 339644807)。
  • 测试:通过生成一个临时封装容器脚本来传递 run_wpt_tests.py --wrapper 实参,该脚本会为浏览器二进制文件添加调试器(例如 rr)及其实参。此方法可解决 ChromeDriver 在将 args 作为开关处理时无法直接替换二进制文件的问题 (crrev.com/c/6271108Bug: 339644807)。
  • 测试:通过 TranslateEnabledTest 中的偏好设置启用翻译,以支持 ChromeDriver 管理浏览器进程并在 --user-data-dir 为隐式时绕过新的 --remote-debugging-port 限制的测试环境(crrev.com/c/6354089Bug: 327797500)。
  • DevTools:添加了对开发者工具多实例功能的支持,以便在 Android 上的另一个窗口中打开新标签页(crrev.com/c/6352169Bug: 401269942Bug: 382183406)。

问题修复

  • 目标选择:修复了以下问题:当 PdfOopif 功能处于停用状态时,在访客视图中打开的 PDF 进程外 iframe (OOPIF) 未从顶级目标列表过滤掉。扩展了过滤器,使其包含 chrome-extension 前缀,从而解决了该 bug,并涵盖了创建标签页的 MV3 Chrome 扩展程序(crrev.com/c/6383500Bug: 396611138)。
  • 目标选择:修复了以下回归问题:在以打包的 Chrome 应用为目标时,getWindowHandles() 命令会因状态为 connection refused 而失败(crrev.com/c/6317161Bug:396622746)。

内部更改和重构

ChromeDriver 135

新功能

  • BiDi:更新了 BiDi Mapper,以便在指定 --enable-unsafe-extension-debugging 时继承 ChromeDriver 权限。这样一来,WebDriver BiDi 客户端就可以有效地测试需要 WebDriver 客户端通常拥有的权限的扩展程序 (crrev.com/c/6288627Bug: 393500934)。

问题修复

  • 测试:重新启用了之前标记为失败的多个 WDSpec 测试,并更新了预期结果。这会恢复通过测试的规范一致性覆盖率 (crrev.com/c/6310420)。

内部更改和重构

  • 清理:由于 Lacros 即将弃用,因此从 chrome/test/ 中移除了 Lacros 的所有痕迹(包括 IS_CHROMEOS_LACROS 和相关测试数据),并标准化为 IS_CHROMEOScrrev.com/c/6284446Bug: 354842935)。
  • 清理:在 md5sum 实用程序被 devil_util 取代后,移除了该实用程序的所有痕迹,清理了旧版 build 依赖项(crrev.com/c/6309939Bug: 397452007)。
  • C++ 标准:从 ResultCodeIsNormalResultCode() 中移除了 chrome:: 命名空间,将其移至全局命名空间,并移除了过时的 ChromeOS 启动导入 (crrev.com/c/6196899, Bug: 41050580)。
  • 内存安全:通过利用 std::ranges::lower_bound 简化了 ChromeDriver 中的 std::lower_bound 调用(crrev.com/c/6223172Bug: 392116519)。抑制了最初识别出的不合规文件的 unsafe_libc_call 警告,为未来的强制执行做好准备 (crrev.com/c/6187925Bug: 390223051)。将 std::to_array 的返回值标记为 constexpr,以提高安全性和编译时评估 (crrev.com/c/6298909)。

ChromeDriver 134

新功能

  • 跳出跟踪缓解措施 (DIPS):重新实现了 ChromeDriver 对跳出跟踪缓解措施的支持,利用了 RunBounceTrackingMitigations 命令。重构了集成测试,以使用不同的网页,确保在执行命令之前正确记录有状态的跳出。此功能支持 nav-tracking-mitigations 规范,并在 //chrome 中实现(crrev.com/c/4935955Bug: 1474656)。(注意:最初在 crrev.com/c/4873672 中添加,后来被还原)。
  • BiDi:更新了 ChromeDriver,以使用带有 goog: 前缀的标准 WebDriver BiDi 扩展属性,与上游 chromium-bidi 更改保持一致。不再允许使用旧版 channel 属性 (crrev.com/c/6179410)。
  • Windows:向 Windows 上的 chromedriver.exe 二进制文件添加了版本资源(crrev.com/c/6114586Bug: 385300323)。

问题修复

内部更改和重构

ChromeDriver 133

新功能

  • 架构:重构了 ChromeDriver 以支持多页面架构 (MPArch) 和标签页目标。WebViewImpl 现在通过 AutoAttach 连接到平板电脑目标平台。之前用于保存网页的命令现在会查找标签页下的有效网页。此变更可用于检查扩展程序后台网页,现在可以通过 enable_extension_targets 功能来定位这些网页(默认情况下,系统会跳过扩展程序目标)(crrev.com/c/5961156Bug: 379767670Bug: 42323502)。修复了 chrome-extension:// 网址页面被错误地纳入扩展目标平台的回归问题;选择已恢复为仅限 type=background_page (crrev.com/c/6093588错误: 383141569)。将 enableExtensionTargets 移至 Chrome 选项,而不是顶级功能 (crrev.com/c/6093032)。
  • 经典:重新建立对多键元素引用的支持。此未记录的功能通常用于创建与 W3C 和非 W3C 模式兼容的引用,现在已获得正式支持,并纳入了集成测试范围 (crrev.com/c/6063257Bug:379584343)。

问题修复

  • 稳定性:修复了 ChromeDriver 在处理 browsingContext.close 命令时无限期阻塞的问题。通过使用不同的机制来确定浏览器是否需要关闭,ChromeDriver 现在可以正确处理 beforeunload 提示,而不会出现停滞(crrev.com/c/6080431Bug: 42323838Bug: 379049702)。
  • 导航:修复了网址为 about:blank?test 的虚拟网页会导致停滞的 bug。旨在识别无响应的新窗口(baseURL==about:blankdocumentURL!=about:blank)的启发式方法现在可以正确处理这些查询字符串网址(crrev.com/c/6038039Bug: 377410086)。
  • 导航:添加了重试因 AbortedByNavigation 错误而失败的命令的逻辑。ChromeDriver 现在会尝试多次执行命令,然后才会放弃并返回标准的 Timeout 错误(crrev.com/c/6012427Bug: 42323825)。
  • 诊断:直接通过 NavigationTracker 转发了 kTargetCrashed 错误。如果目标在导航检测期间崩溃,系统现在会向用户显示此特定错误,而不是一般性超时,从而改进诊断功能(crrev.com/c/6032612Bug: 377410086)。
  • Android:修复了 chrome_android_impl.cc 中的标签页目标查找问题(crrev.com/c/6110492Bug:384781876)。
  • 测试:修复了 win11-arm64 上多个窗口大小调整测试中的不稳定问题(例如,点击被遮挡的元素)。现在,测试会在调整大小操作后反复查询内部窗口大小,直到正确注册正高度,从而考虑到窗口重绘缓慢的问题(crrev.com/c/6012658Bug: 378470046)。
  • 测试:通过以下方式修复了集成测试中的多个不稳定问题:将通用 Python 连接错误映射到 WebSocketConnectionClosedException,简化错误处理 (crrev.com/c/6054134);在需要立即产生副作用的情况下,使用 SendCommand 而不是 PostCommand 来避免竞态条件 (crrev.com/c/6054137);以及使用更可靠的导航检测机制来取代对 ExecuteScript 立即生效的依赖 (crrev.com/c/6063040Bug: 42323825)。
  • 测试:已恢复移除 FedCmIdpSigninStatus 功能标志,因为移除该标志会导致中断(crrev.com/c/6082405,还原 crrev.com/c/6078693Bug:384866916Bug:381211734)。
  • 工具:在 log_replay 脚本中添加了对 Print 命令的支持(crrev.com/c/6010809Bug:378451938)。

内部更改和重构

ChromeDriver 132

新功能

  • 测试:为 ChromeDriver 集成测试添加了对 repeatretry-limit 命令行参数的支持,并将它们映射到标准 isolated-script-test-repeatisolated-script-test-launcher-retry-limit 实参(crrev.com/c/5938195Bug: 374681919)。对于在本地执行的测试(非 CI),默认 retry-limit 已更改为 0(crrev.com/c/5953326Bug: 374681919)。
  • WebSockets:在 EmbeddedTestServer 中实现了 WebSocketConnection 及相关类,从而允许与 WebSocket 相关的测试从 SpawnedTestServer 迁移。这包括根据协议进行框架设置和简化的处理程序注册(crrev.com/c/5849732Bug: 40812029)。

问题修复

  • 稳定性:通过正确处理之前重构中引入的 kTargetDetached 错误状态,修复了点击命令导致浏览器关闭时可能发生的 ChromeDriver 崩溃问题(crrev.com/c/5934524Bug: 42323264)。
  • 稳定性:通过解决竞态条件,修复了 Mac ARM64 上 testClickNavigateRemoteToLocal 集成测试中出现的间歇性崩溃问题(crrev.com/c/5975526Bug: 375971185)。
  • 导航:修复了 GoBackGoForward 命令。之前,如果文档在从活跃状态转换时(表示正在进行导航)调用 Page.getNavigationHistory,这两个命令会失败。ChromeDriver 现在可以在此场景中正确重试命令(crrev.com/c/6011739Bug: 378433873)。
  • 脚本执行:确保触发导航或关闭窗口的脚本在浏览器端无法保证结果时正确返回标准 ScriptTimeout 错误,从而提示用户避免使用模棱两可的测试结构 (crrev.com/c/5934265Bug: 372883701)。
  • 脚本执行:修复了日志重放功能因“意外的命令响应”错误而失败的问题 (crrev.com/c/5961142Bug: 42323342)。
  • 错误代码:修正了 ChromeDriver 的错误处理机制,使其不再强制将所有带有“code”属性的异常封装为通用的“javascript error”。这样可确保将“过时的元素引用”(来自 call_function.js)和“无效的元素状态”(来自 Selenium Atoms CLEAR 函数)等标准错误准确地传播给用户(crrev.com/c/5937893Bug: 42323409)。改进了 GetElementTagName 中的错误处理,可正确将缺失的标记名称信息解读为“对象不是元素”(crrev.com/c/5929087)。
  • BiDi:修复了使用自定义用户个人资料时 BiDi 会话无法初始化的问题。自定义配置文件的已加载网页可能会阻止 BiDiMapper 启动;ChromeDriver 现在可确保第一个标签页始终加载 data:,,以便为映射器提供一个干净的环境 (crrev.com/c/5960656Bug: 366886096)。
  • 无痕模式:修复了 ChromeDriver 在无痕模式下运行时无法创建新标签页的 bug(crrev.com/c/5952980Bug:42323352)。
  • 测试:修复了 testScriptNavigateRemoteToLocal 集成测试中的不稳定问题(失败率为 8.33%),并添加了 C++ 集成测试来重现和验证针对竞态条件的修复(crrev.com/c/6010867Bug: 378387680)。
  • 测试:重新启用了 Mac (testWindowMinimize) 和 Windows (ChromeDownloadDirTest.testFileDownloadAfterTabInvalidCertificateTest.*) 上之前许多不稳定的集成测试,以及全局测试(testShadowDomFindElement、元素屏幕截图测试)。暂时将不稳定的 css/css-scrollbars/ WPT 测试从无头 shell 移回内容 shell(crrev.com/c/5953708crrev.com/c/5948803crrev.com/c/5941351crrev.com/c/5941098crrev.com/c/5959254Bug: 42323825Bug: 40848017Bug: 40736504Bug: 40176424Bug: 40927590)。

内部更改和重构

  • BiDi:提升了 chromium-bidi 映射器依赖项,以纳入最新的上游修复和协议更新(crrev.com/c/5953339crrev.com/c/5865478Bug: 4226)。(注意:由于 WPT 失败,映射器增幅曾短暂回退,随后又重新登陆 [crrev.com/c/5961113])。
  • 架构:最大限度地减少了 ChromeDriver 中线程本地会话对象的使用,以防止测试之间出现状态共享 bug,并简化显式会话处理 (crrev.com/c/5978486Bug: 42323555)。重构了 C++ 集成测试,以使用共享的测试 fixture(crrev.com/c/5971474Bug: 42323555)。
  • 清理:移除了特定于“旧版无头”模式的已弃用变通方法,因为旧版 chrome-headless-shell 代码已不再存在于 Chrome 中(crrev.com/c/5961602Bug: 42323387)。
  • 清理:移除了未使用的 java_tests.txt 文件,该文件是之前被逐出的 ChromeDriver 接受测试的残留物(crrev.com/c/5970994Bug: 357737793)。
  • 测试:添加了 C++ 集成测试,以验证 ChromeDriver 是否不会错误地创建具有相同 user-data-dir 的并行会话,或在会话之间泄露网址,这可能会导致不稳定 (crrev.com/c/5961137Bug: 375312517)。
  • 测试:确保由集成测试启动的临时 ChromeDriver 实例尽快关闭,以释放资源(crrev.com/c/5997970Bug: 375974725)。

ChromeDriver 131

新功能

问题修复

内部更改和重构

  • 内存安全(spanification):在 net::HttpUtil (crrev.com/c/5854420) 中将不安全的指针使用替换为 base::span,并将 base::File::WriteAtCurrentPos() 迁移到基于 span 的等效项 (crrev.com/c/5818972)。将地图指针值(例如,在 std::mapstd::unordered_map 中)重写为 raw_ptrcrrev.com/c/5867189Bug:329428315)。
  • C++ 标准:将 Abseil 属性宏 (ABSL_ATTRIBUTE_*) 替换为标准 base/ 宏 (crrev.com/c/5852373)。通过以下方式避免了意外复制:在适当的情况下,将按值传递的字符串/向量替换为 std::string_view 或常量引用;从 std::string_view 实参中移除了多余的 const 限定符(crrev.com/c/5914620crrev.com/c/5906184Bug: 369952985)。
  • 基础架构:配置 Fuchsia 以使用 ChromeDriver 控制 web-engine (crrev.com/c/5867896Bug: 40935291)。
  • 测试:将一个受限框架 WebAuthn 测试从旧版内容 shell 运行程序迁移到使用 ChromeDriver 的无头 Chrome,因为旧版运行程序很快将不再支持 WebAuthn testdriver API (crrev.com/c/5920770, Bug: 372169469)。

ChromeDriver 130

新功能

内部更改和重构

  • C++ 标准:解决了各种类中的“五规则”问题。由于 Chrome 样式插件坚持使用非内联析构函数,但并未强制使用非内联移动构造函数,因此编译器隐式删除了移动运算符,并默默地回退到复制。已添加这些缺失的声明 (crrev.com/c/5846757Bug: 364788123)。
  • 测试:通过将硬编码的 chrome 字符串替换为实际使用的产品,并从摘要输出中隐藏详细的 command 制品,清理了 wptrunner 测试结果摘要(crrev.com/c/5825633Bug: 41494889)。
  • 测试:通过将特定超时时间加倍,修复了 macOS 15 (Mac15) 上 ChromeDriver 集成测试中的大量测试失败问题,因为在此操作系统上运行测试所需的时间比在 Mac14 上长得多。由于不稳定,还向忽略列表添加了四项虚拟传感器测试(crrev.com/c/5817455Bug: 354939744)。
  • 测试:在 Mac 上停用了不稳定的 ChromeDriverSiteIsolation.testClickNavigateLocalToLocal 测试(crrev.com/c/5806894Bug: 361521805),并在 Windows 11 上停用了不稳定的 ChromeDriverTest.testClickElement*ObscuredByScrollBar 测试(crrev.com/c/5804083Bug: 360058651)。
  • 测试:由于存在多个基础架构问题,移除了 ChromeDriver 接受测试(该测试会下载旧版 Chrome 以针对当前 ChromeDriver 进行测试)。这些测试可能会在稍后通过自动滚动重新添加到 CI 中(crrev.com/c/5812142Bug: 357737793)。

ChromeDriver 129

新功能

  • BiDi:更新了 ChromeDriver 会话初始化帮助程序,以向 BiDi 映射器发送 session.new 命令,从而允许映射器直接处理功能。这是移除 MapperOptions 的第一步(crrev.com/c/5741432Bug: 356371297)。(注意:一项相关变更 crrev.com/c/5754093 提供了处理后的 unhandledPromptBehavior,但由于测试覆盖率下降,该变更已回滚 crrev.com/c/5755744)。
  • 计算压力:添加了用于虚拟压力源管理的新扩展命令,实现了计算压力规范的自动化部分。这些命令会被解析并转发到 CDP 层 (crrev.com/c/5666583Bug: 347031400)。
  • 扩展程序 MV2:更新了使用 ScopedTestMV2Enabler 的测试,以作为正在进行的扩展程序 Manifest V2 弃用现场试验的一部分 (crrev.com/c/5685054Bug: 339061151)。

问题修复

  • 经典序列化:在 WebDriver 经典脚本执行结果中序列化 Set 时,跟踪已查看的对象,防止无限循环并容忍 Array.prototype.includes 的替换(crrev.com/c/5765833Bug: 357472850)。(注意:此更改随后因 WPT 回归问题而回滚 - crrev.com/c/5773175)。

内部更改和重构

ChromeDriver 128

新功能

  • 功能:允许使用字典来表示 unhandledPromptBehavior 功能,与标准功能结构保持一致,但 Mapper 尚未完全遵循此结构(crrev.com/c/5692204crrev.com/c/5682934Bug: 42323841)。
  • 启动:为 ChromeDriver 添加了 --ignore-explicit-port 命令行实参。此临时解决方法强制 ChromeDriver 忽略任何明确提供的端口,而是查找并绑定到空闲端口,从而解决 Web 平台测试作业期间的 TCP 端口竞争问题(计划在 M132 之后移除)(crrev.com/c/5724574crrev.com/c/5703976Bug: 42323836)。

问题修复

  • 传感器:修复了 ExecuteUpdateVirtualSensor 命令,使其使用 SendCommand() 而不是 SendCommandAndGetResult(),因为 setSensorOverrideReadings CDP 命令不返回值 (crrev.com/c/5703589)。
  • FedCM:修复了 FedCM ChromeDriver 测试中的竞态条件,方法是当实际需要对话框时,不再断言返回 NoSuchDialog,从而防止在对话框显示过快时出现失败(crrev.com/c/5713515Bug: 346530330)。
  • 测试:在修复了底层问题 (crbug.com/40233722) 后,重新在 Mac 上启用了 WebAuthn 虚拟身份验证器测试(crrev.com/c/5635806Bug: 329130177)。
  • 错误消息:修复了 execute/async 命令的错误消息中的拼写错误 (crrev.com/c/5697913)。

内部更改和重构

ChromeDriver 127

问题修复

  • 稳定性:修复了在 DevTools 客户端主动处理其他命令时收到 target.detachFromTarget 命令(或 target.detachedFromTarget 事件)时发生的 ChromeDriver 崩溃问题,防止过早释放 WebViewDevToolsClient 对象 (crrev.com/c/5527584, Bug: 339773537)。
  • 稳定性:修复了以下问题:如果网页视图在 Switch To Window 命令执行期间分离,该命令可能会错误地返回“未知错误”;现在,该命令会正确忽略“找不到网页视图”内部错误,如果目标窗口确实已关闭,则会返回标准的“没有此类窗口”响应 (crrev.com/c/5583730Bug: 338616700)。
  • 稳定性:确保 ChromeDriver 在更新内部 WebView 列表时能够容忍目标分离。如果目标在更新期间分离,ChromeDriver 现在会重试,而不是返回非标准错误,从而减少了快速创建和销毁窗口的环境中的不稳定性(crrev.com/c/5565103Bug: 338616700Bug: 4771)。
  • 导航:在搜索元素时,向 ChromeDriver 添加了相应逻辑,以等待远程端检测到的导航。这样可防止 ChromeDriver 在导航与元素查找操作同时进行时返回非标准错误或因 DCHECK 而崩溃(crrev.com/c/5563113、还原 crrev.com/c/5563420、重新提交 crrev.com/c/5562089Bug: 4771)。
  • BiDi:修复了会话创建期间 ChromeDriver 和 BiDiMapper 之间的竞态条件。ChromeDriver 现在会等待 browsingContext.getTree 命令返回非空列表,然后才结束 NewSession 命令,从而确保新创建的默认标签页已正确注册(crrev.com/c/5575497Bug: 341048786Bug: 1503101)。
  • BiDi:修复了以下问题:在创建会话后,焦点仍停留在 BiDiMapper 后台标签页中,而不是主动授予第一个用户标签页焦点(crrev.com/c/5594070Bug:341048786Bug:1503101)。
  • BiDi:停止了 ChromeDriver 在处理 BiDi 命令(例如 browsingContext.close)时尝试附加目标,以防止 CDP 命令在用户提示打开时无限期停滞,并将处理完全委托给已连接的 BiDi 层 (crrev.com/c/5541915,还原 crrev.com/c/5539818,重新提交 crrev.com/c/5522393Bug: 4758)。
  • FedCM:修复了 fedcm-loginhint.https.html WPT 测试失败的问题,其中对话框被错误地标记为已关闭;现在仅当 selectAccount 操作实际成功时,状态才会更新(crrev.com/c/5398379Bug: 331237776)。
  • 测试:修复了在 JSON 解析期间,当字符正好达到 kExtendedASCIIStart 边界时发生的 DCHECK 失败问题 (crrev.com/c/5565276Bug: 40284755)。
  • 测试:通过使用 iframe 元素作为滚动源并将指针移动输入四舍五入为整数,修复了 scrollend-event-fires-to-iframe-window.html WPT 测试,从而避免了 ChromeDriver 在触摸位置为小数时出现错误(crrev.com/c/5570150Bug: 340956654)。
  • 测试:改进了 ChromeDriver 集成测试中的诊断功能,在 run_py_tests.py 无法找到浏览器二进制文件时打印尝试的路径 (crrev.com/c/5604204, Bug: 4781)。

内部更改和重构

ChromeDriver 126

新功能

  • BiDi:更新了 ChromeDriver,以便在启动浏览器以进行 WebDriver BiDi 会话时提供 --disable-background-timer-throttling 开关,从而防止后台标签页受到限制 (crrev.com/c/5515013Bug: 4762)。
  • BiDi:添加了对 BiDi Mapper 的支持,以便在需要详细日志记录时发送调试消息 (sendDebugMessage)。ChromeDriver 会将这些事件标记为 bidi messages 以供解析,但 BidiTracker 目前会忽略这些事件(crrev.com/c/5465782Bug: 4753)。
  • 经典版:实现了自动接受任何 beforeunload 对话框(提醒),遵循 WebDriver 标准,该标准规定对话框绝不能在经典版会话中显示 (crrev.com/c/5517510Bug: 4757)。

问题修复

  • 经典版:移除了元素检索逻辑中冗余的最大尝试次数限制。检索现在仅受隐式超时限制,从而避免了操作可能过早失败并错误地返回非标准 NoSuchExecutionContext 错误的情况(crrev.com/c/5478668Bug: 4379)。
  • 经典版:修复了以下回归问题:当检索请求使用无效的位置策略时,ChromeDriver 会响应 javascript error 而不是 invalid selector 错误 (crrev.com/c/5490662Bug: 4743)。
  • 传统:确保 Android 上的窗口命令(最大化、最小化、全屏)返回符合标准的 unsupported operation 错误,而不是继续执行,因为 Android 浏览器不支持这些操作(crrev.com/c/5490224Bug: 4689)。
  • 经典版:修复了 ChromeDriver 永远不会返回 kChromeNotReachable 内部错误代码的问题;现在,当 HTTP 客户端无法连接到浏览器时,它会正确返回标准 kSessionNotCreated 错误(crrev.com/c/5476390Bug: 4379)。
  • 经典版:修复了 ChromeDriver 在执行窗口命令时绝不会返回非标准 kNoSuchExecutionContext 错误的问题(crrev.com/c/5483606错误:4379)。
  • 传统版:从受支持的错误代码列表中移除了未使用的不受支持的 kForbidden 错误代码(crrev.com/c/5476927Bug:4379)。
  • BiDi:更新了 ChromeDriver,使其在关闭专用 Mapper 标签页之前提示用户,与上游 chromium-bidi 更改保持一致 (crrev.com/c/5508600Bug: 4761)。

内部更改和重构

ChromeDriver 125

新功能

  • 设备姿态:添加了用于设备姿态管理的 ChromeDriver 命令,支持设备姿态规范的自动化部分。这样便可以通过扩展命令替换硬件设置的设备姿态并移除替换(crrev.com/c/5437993Bug: 330376761)。

问题修复

  • BiDi:将传入的 BiDi 命令 id 的中间存储从 Double 更改为 base::Value。这样可确保在 JSON 序列化后,id 在响应中准确回显,而不会出现意外的尾随小数点或小数部分 (crrev.com/c/5444225Bug: 4676)。
  • FedCM:在 IDP 准备就绪后,重新提交了在 ID 断言端点中启用 CORS 的更改 (crrev.com/c/5440132,还原了 crrev.com/c/5381316,重新提交了 crrev.com/c/5370086Bug: 40284123)。
  • FedCM:修复了对话框被错误标记为已关闭的 bug,方法是确保仅在 selectAccount 命令成功时才将对话框标记为已关闭。这解决了在未显示预期账号选择器的情况下调用 selectAccount 时出现的测试失败问题(crrev.com/c/5398379Bug: 331237776)。避免在不应显示账号选择器时调用 fedcm_get_and_select_first_account,以防止触发此 bug (crrev.com/c/5398800)。
  • 测试:通过以下方式修复了 popover-light-dismiss.html WPT 测试中的失败问题:合并操作序列,并使用主框架的文档作为 pointerUp 操作的源,从而防止 ChromeDriver 错误地跨框架发送并发 pointerUp 事件(crrev.com/c/5402096错误:325981758)。
  • 测试:修复了 wptrunner,以正确地将 stderr 输出(包括使用 --enable-chrome-logs 时写入的浏览器日志)转发到 stderr 制品,而不是 crash_log,并将 harness 错误(包含浏览器堆栈轨迹)移到了 crash_logcrrev.com/c/5437023Bug: 41494889)。
  • 测试:修复了 wptrunner,通过按 ChromeDriver 进程对输出进行分组,将浏览器日志路由到正确的测试制品,从而防止在并行测试作业期间出现交错和孤立的日志(crrev.com/c/5320681Bug:41494889)。

内部更改和重构

ChromeDriver 124

新功能

  • BiDi:添加了一个 build 步骤,用于在将 BiDiMapper 脚本嵌入到 ChromeDriver 之前对其进行缩减,因为源映射器现在从 CIPD 下载时未缩减 (crrev.com/c/5310075Bug: 4226)。
  • WebAuthn:添加了 SetCredentialProperties 命令,允许客户端更新 WebAuthn 凭据的备份标志 (crrev.com/c/5296389Bug: 40945430)。
  • WebAuthn:通过向“添加虚拟身份验证器”命令添加 defaultBackupEligibilitydefaultBackupState,以及向“添加凭据”命令添加 backupEligibilitybackupState,通过 WebDriver 公开 WebAuthn 备份标志 (crrev.com/c/5297117Bug: 40945430)。
  • 测试:为 ChromeDriver Python 集成测试添加了对 --failfast 命令行实参的支持,在出现第一个错误时停止测试运行,以帮助进行调试 (crrev.com/c/5374546)。
  • 测试:通过 testdriver-vendor.js API 为 SetRPHRegistrationMode WebDriver 命令添加了 content-shell 支持(crrev.com/c/5205730Bug: 1359103)。

问题修复

  • 稳定性:将超时过期检查移到了 ChromeImpl::SetWindowBounds 中的轮询和等待循环体内。此问题修复了在高负载情况下,超时可能会在第一次循环迭代发生之前过期的问题(crrev.com/c/5366899Bug: 4642)。
  • 性能:通过仅在窗口边界尚未达到所需状态时应用指数退避算法等待,最大限度地缩短了 ChromeImpl::SetWindowBounds 中的等待时间,从而减少了 WPT 设置延迟时间(crrev.com/c/5366457Bug: 4642)。
  • 启动:更新了 ChromeDriver,使其在为 content_shell 指定数据目录时使用 --user-data-dir 而不是 --data-path,从而与读取有效开发者工具端口的方式保持一致 (crrev.com/c/5226609Bug: 1295373)。

内部更改和重构

ChromeDriver 123

新功能

  • FedCM:针对单账号按钮流程显示模态对话框,包括在自动化接口中添加对模态视图的支持 (crrev.com/c/5231438, Bug: 1518356)。
  • FedCM:实现了 ChromeDriver 对在 FedCM 对话框中打开链接的支持,将其视为按钮以简化自动化操作 (crrev.com/c/5225543, Bug: 1513520)。
  • 传感器:修改了 WebDriver 虚拟传感器命令,以读取欧拉角(alpha-beta-gamma)而非四元数,从而符合最新的方向传感器规范更新。内部 CDP 和服务层仍通过转换步骤使用四元数(crrev.com/c/5229177Bug: 1506995Bug: 1520912Bug: 1520919)。

问题修复

  • 经典版:修复了以下问题:通过脚本从不同框架返回节点时,错误地导致了 StaleElementReference 错误;现在,它会正确返回 JavaScriptError,以符合 WebDriver 标准 (crrev.com/c/5222746Bug: 4668)。
  • 测试:修复了在 Chrome/ChromeDriver 上因触控拖动超出窗口边界而失败的过滚动事件测试;现在拖动已正确受到限制(crrev.com/c/5297676Bug: 40832230)。
  • 测试:修复了 open-close.https.html MIDI 测试,使其不再不必要地构建 promise,从而避免了导致 ChromeDriver 使测试失败的未处理的 promise 拒绝 (crrev.com/c/5239869错误:1499775)。
  • 测试:修正了 wpt_internal/system-wake-lock/idlharness* 测试中的权限集,其中 test_driver.set_permission(...) 错误地传递了 false 而不是 nullWindowProxy,导致 ChromeDriver 混淆(crrev.com/c/5271087Bug: 40287920)。

内部更改和重构

ChromeDriver 122

问题修复

  • BiDi:更新了深层节点序列化以包含 loaderId,从而允许 ChromeDriver 和 BiDi Mapper 正确引用和取消引用节点,而无需进行过多的往返 (crrev.com/c/5116240Bug: 1420968)。
  • 功能:更新了 ChromeDriver,使其在启动时立即将 acceptInsecureCerts 功能传递给 BiDi Mapper,从而防止功能应用过晚而导致竞态条件 (crrev.com/c/5125711Bug: 4643)。
  • 经典版:重新设计了元素引用生成功能,以使用 <frame_id>.<loader_id>.<backend_node_id> 格式;这样一来,ChromeDriver 就可以在框架导航和 DOM 更新过程中明确区分有效、未知和过时的元素引用 (crrev.com/c/5094519Bug: 4379)。
  • 经典版:修复了以下问题:如果新创建的目标在 ChromeDriver 能够附加到它之前自行关闭(例如,在竞态条件中),window/handles 命令可能会因“no such window”错误而失败(crrev.com/c/5147409Bug: 1506833)。
  • FedCM:添加了一个内部事件监听器,用于在 FedCM 对话框关闭时进行通知,从而防止 dialogtype 命令在对话框从外部(例如通过 AbortController.abort)关闭时返回过时的数据(crrev.com/c/5067504Bug: 1506292)。
  • FedCM:移除了 ClickDialogButton 命令中的供应商前缀,因为该命令现已在 FedCM 规范中获得批准(crrev.com/c/5092527Bug: 1499341)。

内部更改和重构

  • BiDi:将 BiDi Mapper 依赖项升级到最新版本 (crrev.com/c/5205452Bug: 4226)。
  • 通过移除从每个 DevToolsEventListener 发送的冗余 Page.enable 调用,减少了 ChromeDriver 和 Chrome DevTools 协议 (CDP) 流量,因为 DevToolsClientImpl 已经按目标处理了此问题(crrev.com/c/5088789Bug: 4600)。
  • 将所有 Wptrunner build 针对 content_shell 的状态更改为实验性,因为在 ChromeDriver 集成正在进行时(crrev.com/c/5225148Bug: 1474702),目前尚不完全支持在协议模式下运行测试。
  • 跳过了需要在 content_shell 上使用 window.test_driver_internal.get_computed_role 的测试,因为该功能尚未实现,从而避免了 TypeError 失败(crrev.com/c/5189678Bug: 1517744)。
  • 重新提交了重构,以使用独立于平台的 IS_OZONE_{X11, WAYLAND} 标志而非 OZONE_PLATFORM_*crrev.com/c/5086329Bug: 1500494)。
  • selenium-atoms 依赖项提升到最新修订版本(crrev.com/c/5110808Bug: 4662)。
  • 修复了在针对完整 Chrome 二进制文件运行时 SnapEvents 测试中的逻辑,方法是舍入指针移动输入、强制执行滚动的 origin 参数,以及使用近似断言 (assert_approx_equals) 来处理小数滚动/偏移差异 (crrev.com/c/5097343)。
  • 添加了 StringPrintfNonConstexpr() 辅助函数,用于在格式字符串不是编译时常量时区分 StringPrintf()crrev.com/c/4950568Bug: 1371963)。
  • 确保 chromium::import! Rust 宏转义使用单射函数,以防止生成的 GN 目标名称发生冲突 (crrev.com/c/5132119, Bug: 1512174)。
  • 通过在析构函数中添加构造函数和提前返回,清理了 ScopedTempDirWithRetry 实现 (crrev.com/c/5113843)。

ChromeDriver 121

新功能

  • 测试:除了构建机器人上的标准 Chrome 浏览器之外,还添加了对针对 chrome-headless-shell 运行 ChromeDriver 集成测试 (chromedriver_py_test) 的支持。这包括根据 --browser-name 参数发现浏览器二进制文件的功能,以及有条件地运行特定测试集的功能(crrev.com/c/4995189crrev.com/c/4989442Bug: 4358)。

问题修复

  • 稳定性:将默认 KeyboardLayoutEngine 初始化为 StubKeyboardLayoutEngine,以防止 ChromeDriver 因 KeyboardLayoutEngineManager::SetKeyboardLayoutEngine 中的 DCHECK 命中而崩溃(crrev.com/c/5017859Bug: 4625)。
  • 稳定性:修复了以下不稳定性问题:如果会话线程在客户端已请求关闭连接后请求关闭连接,ChromeDriver 可能会崩溃 (crrev.com/c/4994636Bug: 4606)。
  • 资源管理:通过确保即使 ChromeDriver 命令抛出异常,浏览器进程也会终止,修复了 ChromeDriver 集成测试中的资源泄漏问题 (RemoteBrowserTest)(crrev.com/c/5009554Bug: 4614)。
  • 资源管理:在 ChromeDriver 集成测试中实现了逻辑,以检测并终止 ChromeDriver 进程放弃的任何浏览器进程 (crrev.com/c/5014093, Bug: 4617)。
  • 启动:修复了当浏览器名称为 chrome-headless-shell 时,通过将 data:, 参数附加到浏览器命令行来解决 chrome-headless-shell 返回空目标列表并阻止会话创建的问题(crrev.com/c/5010392crrev.com/c/5009535Bug: 4615Bug: 4358)。
  • FedCM:新增了一个事件,用于在 FedCM 对话框关闭时进行通知,确保 dialogtype 和其他命令在对话框被外部关闭(例如通过 AbortController.abort 关闭)时不会返回过时的数据(crrev.com/c/5067504Bug: 1506292)。
  • 测试:修复并重新启用了之前因 chrome-headless-shell 而在 Windows 上停用的所有 ChromeDriver 集成测试 (crrev.com/c/5027594错误: 4358)。
  • 测试:在 testElementRegionTest 中放宽了过于严格的断言,以符合 WebDriver 标准,从而解决了由浏览器渲染特性引起的抖动问题(crrev.com/c/5017865Bug: 4526)。

内部更改和重构

ChromeDriver 120

新功能

  • BiDi:添加了对 session.newsession.end 命令的支持,允许用户直接通过 BiDi 命令创建和终止会话 (crrev.com/c/4941941, Bug: 4496)。
  • BiDi:添加了对 session.status PureBiDi 命令的支持,使用户能够建立不绑定到任何会话的 WebSocket 连接并检索会话状态 (crrev.com/c/4938596Bug: 4496)。(在 crrev.com/c/4922097 中之前还原后重新着陆)
  • BiDi:提升了 BiDi Mapper 依赖项,并与新的简化版 Mapper 运行流程保持一致 (crrev.com/c/4952609Bug: 4226)。
  • 传感器:在 browser_protocol.pdl 和 CDP 层(模拟网域)中实现了虚拟传感器命令,为通用传感器规范的自动化部分添加了支持(crrev.com/c/4770864Bug: 1278377)。
  • 传感器:添加了用于虚拟传感器管理的 ChromeDriver 扩展命令,将 WebDriver 参数转换为新的 CDP 调用 (crrev.com/c/4770866Bug: 1278377)。
  • 传感器:添加了通过 testdriver.js 操作虚拟传感器的 content_shell 代码路径,完全绕过 ChromeDriver 进行 Web 测试(crrev.com/c/4770865Bug:1278377)。
  • 跟踪缓解措施:添加了对反弹跟踪缓解措施 (DIPS) 的 ChromeDriver 支持,从而实现了 nav-tracking-mitigations 规范的自动化(crrev.com/c/4873672错误:1474656)。(注意:由于 crrev.com/c/4938394 中 Mac 上的测试失败,此功能暂时被还原)

问题修复

  • 启动:向 ChromeDriver 添加了 Headless Shell 发现功能,使其能够在通过功能请求且未提供明确路径的情况下搜索 chrome-headless-shell 二进制文件 (crrev.com/c/4987262Bug: 4358)。(在 crrev.com/c/4984449 中之前还原后重新着陆)
  • WebSockets:实现了对 WebSocket 关闭握手的局部支持,确保 ChromeDriver 在收到来自远程端的关闭握手时会以 CLOSE 帧进行响应(crrev.com/c/4931500错误: 4499)。
  • 权限:将 options.disclaim_responsibility 作为 build 标志公开,以允许供应商 build(例如 Microsoft Teams)将其关闭,从而防止 macOS 权限提示导致测试自动化停滞(crrev.com/c/4929495错误: 1223643)。
  • C++ 标准合规性:通过添加范围检查,修复了将超出范围的双精度浮点数强制转换为整数时被 UBSan 捕获的未定义行为 (UB)(crrev.com/c/4980055Bug: 1394755)。
  • FedCM:移除了对旧标头语法的支持,确保符合标准 login-status-http 语法(crrev.com/c/4957073Bug: 1381501)。

内部更改和重构

  • 添加了 testReturnFrameElement 集成测试,以验证 ChromeDriver 在将 window.frameElement 视为过时引用方面的行为 (crrev.com/c/4983549Bug: 4477)。
  • 改进了日志记录功能,确保 ChromeDriver 记录其尝试查找浏览器二进制文件的具体路径(crrev.com/c/4976116Bug: 4539)。
  • 重命名了各种 base::Time 函数,使其更具描述性(例如,将 FromDoubleT() 重命名为 FromSecondsSinceUnixEpoch())(crrev.com/c/4956111)。
  • 重构了 net::StringIOBuffer 构造函数和 IOBuffer 实例化,以避免不必要的字符串复制和零长度分配 (crrev.com/c/4938384crrev.com/c/4959174)。
  • 通过在适用的情况下将 base::StrCat 替换为 + 并利用 base::AppendHexEncodedByte() 清理了字符串处理 (crrev.com/c/4963465crrev.com/c/4977165)。
  • 为清楚起见,已在 //chrome* 测试中将 DIR_SOURCE_ROOT 重命名为 DIR_SRC_TEST_DATA_ROOTcrrev.com/c/4916045Bug: 1264897)。
  • 在 Mac build 服务器上停用了不稳定的 PureBidiTest 测试(crrev.com/c/4983555Bug: 1496826)。

ChromeDriver 119

新功能

问题修复

  • 移动设备模拟:修复了以下问题:通过使用合理的默认值填充没有客户端提示的预定义设备(例如,旧配置),导致这些设备出现故障 (crrev.com/c/4887254Bug: 4550)。
  • 经典版:修复了 MapSet 对象的序列化问题;由于这些对象缺少 length 属性,因此现在可以正确序列化为 Object 而不是 Collectioncrrev.com/c/4881378错误: 4031)。
  • 经典版:恢复了在测试期间始终下载并使用最新兼容版 ChromeDriver 的逻辑,仅在出现兼容性问题时回退到特定版本(crrev.com/c/4779613,还原 crrev.com/c/4778973)。
  • FedCM:通过将 Signin 重命名为 Login (confirmidplogin) 来标准化浏览器自动化命令,以符合最新的 FedCM 规范讨论(crrev.com/c/4901302Bug: 1451884)。
  • 测试:修复了在测试作业期间通过显式启用 IDP Sign-In Status API 导致第三方 Cookie 被停用时失败的 FedCM 测试(crrev.com/c/4889802Bug: 1484833)。
  • 测试:在测试运行程序中,将无效的网址占位符 ~NOTFOUND 替换为 ^NOTFOUND,以符合即将实施的 Chromium 网址标准强制执行变更 (crrev.com/c/4845589Bug: 1416013)。

内部更改和重构

  • BiDi:将 BiDi Mapper 依赖项更新为版本 0.4.27,引入了最新的修复和功能 (crrev.com/c/4862031crrev.com/c/4890322)。
  • //url 中的多个指针/长度 API 替换为 std::string_view,以提高安全性和便利性 (crrev.com/c/4897456)。
  • generateWebDriverValue 实用程序过渡为使用 BiDi 协议 (crrev.com/c/4889644) 原生提供的深度序列化选项 (serializationOptions.serialization: deep)。
  • 添加了集成测试,以验证在过时的元素引用下进行搜索是否会正确返回“过时的元素引用”错误 (crrev.com/c/4886793Bug: 4440)。
  • 改进了 call_function.js 中的代码样式格式设置(crrev.com/c/4882511Bug: 4031)。
  • 通过在用户通过 WebSocket 连接时明确告知用户管道受支持且建议使用,从而增强用户反馈,以提高可靠性和安全性 (crrev.com/c/4882626Bug: 3480)。
  • 更新了 WPT 套件配置,以归档 webdriver_tests_suite 测试的 results.html,从而提供更出色的界面来查看结果 (crrev.com/c/4873223)。
  • 通过标记 WebView WebContents 并将其开发者工具类型设置为 popup_page 而不是 other,修复了开发者工具与 WebView 的集成问题 (crrev.com/c/4842093)。
  • 将 WPT build 目标 chrome_wpt 重命名为 chrome_wpt_tests,以保持一致性,并移除了冗余的 webdriver_wpt_tests 目标 (crrev.com/c/4847474, Bug: 1474702)。
  • 已将 run_py_tests.py 从已弃用的 optparse 库迁移到 argparse (crrev.com/c/4849411, Bug: 4557)。

ChromeDriver 118

新功能

  • 集成测试:为 ChromeDriver 引入了 C++ 集成测试,可针对真实的 CDP 流量测试特定类,填补了单元测试和 Python 集成测试之间的空白(crrev.com/c/4707855Bug: 4528)。
  • Crossbench:更新了 crossbench 依赖项,其中包含多项改进,包括新的能耗基准故事、更好的平台和设备支持、增强的调试功能以及各种修复 (crrev.com/c/4803743)。

问题修复

  • 功能:修复了默认配置中返回的功能缺少 debuggerAddress 的问题;现在,系统会正确返回该功能,以支持 Selenium 基于 CDP 的 BiDi 通信 (crrev.com/c/4789068错误: 4533)。
  • 功能:确保 ChromeDriver 按照 WebDriver 规范的要求返回标准 platformName 值(例如,“linux”“windows”“mac”)(crrev.com/c/4797735Bug: 4548)。

内部更改和重构

  • MockSocket 中的迁移代码更改为首选 base::span<> 而不是原始指针,以提高安全性 (crrev.com/c/4832086)。
  • 通过自动清理 (crrev.com/c/4773481),移除了 base::raw_ptrbase::raw_ref 的废弃用法,取而代之的是其非限定形式 raw_ptrraw_ref
  • 暂时还原了一项始终使用最新 ChromeDriver 的更改,因为该更改导致 Windows 稳定版/Beta 版渠道出现崩溃(crrev.com/c/4778973,还原 crrev.com/c/4777430)。
  • 调整了 WPT(Web 平台测试)配置,包括抑制 pointer_touch.py 中的仅调试失败,以及为受限框架实现浏览器端焦点验证 (crrev.com/c/4844810crrev.com/c/4572517)。
  • 为符合 IWYU 标准,向 client_hints.h 添加了缺失的 #include <vector> (crrev.com/c/4767547)。
  • 将特定于 Apple 的基本类型(ScopedTypeRefScopedCFTypeRefscoped_nsautorelease_pool)迁移到 base::apple:: 命名空间,为 Crashpad 留下临时转发标头(crrev.com/c/4799213crrev.com/c/4790744crrev.com/c/4790741crrev.com/c/4784010)。

ChromeDriver 117

新功能

问题修复

  • 稳定性:修复了导致 ChromeDriver 崩溃的 null 指针访问问题,该问题反过来会导致测试运行期间出现 ConnectionRefused 错误(crrev.com/c/4675633Bug: 1457101)。
  • 导航:修复了导航期间 Chrome 的 NoSuchExecutionContextNoSuchWindow 错误未得到统一处理的问题;现在,这两个错误都已正确映射为重试操作 (crrev.com/c/4667156Bug: 4459)。
  • 移动设备模拟:更正了 clientHints.mobile 的推理逻辑;现在,系统会根据 Android 上的 userAgent 正确推理出 clientHints.mobile,并在其他平台上默认设置为 false,从而修复了平板电脑被错误地报告为移动设备的问题 (crrev.com/c/4649348Bug: 4243)。
  • 会话创建:更新了会话创建,以便在失败时正确返回标准 SessionNotCreated 错误代码,严格遵守 W3C WebDriver 规范 (crrev.com/c/4638223Bug: 4379)。注意:此变更随后被回滚,因为某些特定代码路径需要不同的错误代码 (crrev.com/c/4651188)。

内部更改和重构

  • 消除了手动 ChromeDriver 发布流程脚本,因为 ChromeDriver 现在已完全集成到 Chrome 发布流程中,并且可通过 Chrome for Testing 基础架构 (crrev.com/c/4520687, Bug: 4142) 获取。
  • 将 WPT(Web 平台测试)基础架构迁移为使用官方 wptrunner harness 而不是定制的 run_webdriver_tests.py,显著提高了执行速度和可靠性,并确保 ChromeDriver 在测试之间重新生成,以隔离崩溃问题 (crrev.com/c/4723147crrev.com/c/4676070crrev.com/c/4639168)。
  • ChromeLauncher 和相关类进行了广泛的重构,以支持向管道的过渡,放宽与 DevToolsHttpClient 的耦合,并将 WebSocket 逻辑移至专用分支 (crrev.com/c/4632801crrev.com/c/4674345)。
  • 为清楚起见,已将具有误导性的 BrowserInfo.is_headless 字段重命名为 BrowserInfo.is_headless_shellcrrev.com/c/4650452Bug: 4358)。
  • 在整个代码库中,将各种已废弃的 base::Value 方法替换为现代的 base::Value::Dict 等效方法(例如 FindDouble()Set()size())(crrev.com/c/4258936crrev.com/c/4336805crrev.com/c/4461067)。112.0.5603.0、113.0.5653.0、114.0.5733.0
  • 移除了 [w]ctype.h 的使用,改用更安全的基字符串实用程序,并为 base::expected 实现了新功能(crrev.com/c/4749459crrev.com/c/4755226)。
  • TestDriver 中为 FedCM WPT 实现 get_fedcm_dialog_titleselect_fedcm_account 自动化命令 (crrev.com/c/4618303)。
  • 更新了 BiDi 映射器 build 脚本,使其无论当前工作目录如何都能正常运行 (crrev.com/c/4670550)。
  • 在 macOS build 中,将转换后的 /chrome/test/chromedriver 文件用于 ARC(自动引用计数),并添加了必要的样板代码 (crrev.com/c/4663602)。
  • 尝试通过自动批准的提交默认停用管道通信,但相应更改仅触及配置,而未更改之前引入的默认管道行为 (crrev.com/c/4683947)。

ChromeDriver 116

新功能

  • FedCM:添加了一项新功能,允许客户端检查 ChromeDriver 是否支持 FedCM 命令,而无需执行这些命令并捕获错误 (crrev.com/c/4624924Bug: 1356159)。
  • 测试:在 wptrunner 中启用了通过 ChromeDriver 运行的 testharness 测试的测试窗口重用,以评估其对性能和不稳定性的影响(crrev.com/c/4515180Bug: 1394572)。

问题修复

  • C++ 标准合规性:修复了因在格式字符串中直接错误使用作用域枚举 (enum class) 而导致的未定义行为,解决了新的 Clang 编译器警告 (crrev.com/c/4628112Bug: 1456289)。
  • FedCM:修复了导致测试不稳定性的一个潜在原因,即修复了一个阻止 setdelayenabled 正常运行的极端情况(crrev.com/c/4606064Bug: 1453412)。

内部更改和重构

  • BiDi:提升了 BiDi Mapper 依赖项,并更新了 build 脚本,以默认从“main”拉取最新修订版本(crrev.com/c/4615087crrev.com/c/4615791Bug: 4226)。
  • 已将 ChromeDriver 迁移为使用 UTF-8 编码显式打开和写入所有文件 (crrev.com/c/4614522)。
  • 重构了 ChromeImpl 以消除其对 DevToolsHttpClient 的依赖,并减少了 SyncWebSocketFactoryBrowserInfo 的使用,为通过管道而非 WebSocket 进行通信做准备(crrev.com/c/4571690crrev.com/c/4571199Bug: 3480)。
  • 移除了围栏框架的已弃用“默认模式”,并更新了相关测试以启用新的功能标志,继续迁移到 FLEDGE 出价 (crrev.com/c/4558645)。
  • 通过将通用 WaitForCondition 断言替换为 assertTrue 来改进 FedCM 测试,以清晰指示何时发生超时(crrev.com/c/4590211)。
  • linux-rel 单元测试中标记了已知的不稳定的悬空 raw_ptr 警告 (crrev.com/c/4598070)。
  • 更新了 BiDi 映射器的 OWNERS 文件 (crrev.com/c/4614518)。

ChromeDriver 115

新功能

  • 移动设备模拟:在移动设备模拟中实现了对 User-Agent 客户端提示的支持,从而允许 ChromeDriver 从 capability 和预设中解析客户端提示,并将其传递给 Chrome(crrev.com/c/4498667crrev.com/c/4466129Bug: 4243)。
  • 移动设备模拟:更新了移动设备模拟预设,以在替换用户代理中的 %s 格式字符串时使用宿主浏览器的主版本,而不是 ChromeDriver 版本 (crrev.com/c/4502850Bug: 4243)。
  • 设置:添加了对下载给定渠道的特定 ChromeDriver 版本的支持,从而改进了 ChromeDriver 在不同平台(如 Android/WebView)上运行的自动化场景(crrev.com/c/4550281)。116.0.5791.0

问题修复

  • 经典版:修复了以下问题:无法解析节点时,会错误地返回 UnknownError 而不是标准 NoSuchElement 错误(crrev.com/c/4508952bug:4440)。
  • 移动设备模拟:为移动设备模拟预设添加了更严格的断言,以强制执行以下规则:如果 userAgent 字符串包含“Mobile”,则 clientHints.mobile 标志必须为 true (crrev.com/c/4507142, Bug: 4243)。
  • 移动设备模拟:迁移了 DeviceMetrics 替换项,以使用 Emulation.setDeviceMetricsOverride CDP 命令,而不是已废弃的 Page 网域等效项(crrev.com/c/4502614Bug:4243)。

内部更改和重构

ChromeDriver 114

新功能

  • 传统版:将 MobileDevice 信息传递给 MobileEmulationOverrideManager,为未来的客户端提示和 UserAgent 替换奠定基础 (crrev.com/c/4447524)。
  • 测试:为 ChromeDriver 添加了测试装置 (crrev.com/c/4459939)。

问题修复

  • 无头:通过静默忽略脚本化打印预览请求(例如 window.print())修复了新无头模式中的崩溃问题,使行为与旧无头模式保持一致(crrev.com/c/4436313Bug: 4385)。
  • 功能:修复了 ChromeDriver 功能中的 use-after-move bug(crrev.com/c/4462094Bug: 4243)。
  • DevTools:移除了 DevToolsClientImpl::SendCommandInternal 中的 DCHECK,以防止在开发者工具连接中断时发生崩溃,因为这并非不变量违规行为(crrev.com/c/4370486Bug: 4385)。

内部更改和重构

ChromeDriver 113.0.5672.63

支持 Chrome 113 版

  • 解决了问题 4205:经典模式和 BiDi 中的对象 ID 相同 [Pri-1]
  • 解决了问题 4302:不再假设 Mapper 位于 ExecuteGetWindowHandles 的第一个标签页中 [Pri-1]
  • 解决了问题 4356:Chrome 110 未使用偏好设置值“download.default_directory”[Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 113.0.5672.24

支持 Chrome 113 版

  • 解决了问题 4205:经典模式和 BiDi 中的对象 ID 相同 [Pri-1]
  • 解决了问题 4302:不再假设 Mapper 位于 ExecuteGetWindowHandles 的第一个标签页中 [Pri-1]
  • 解决了问题 4356:Chrome 110 未使用偏好设置值“download.default_directory”[Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 112.0.5615.49

支持 Chrome 版本 112

  • 解决了问题 3517:为非无头设备启用了打印功能 [Pri-]
  • 解决了问题 4419:使用 chromedriver 时,Speedometer 的开销过大 [Pri-3]

如需了解详情,请参阅版本说明

ChromeDriver 112.0.5615.28

支持 Chrome 版本 112

  • 解决了问题 4357:Chromedriver 版本 110.0.5481.77 在使用 --headless 和 --user-data-dir 选项时出现的会话问题。[Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 111.0.5563.64

支持 Chrome 111 版

  • 已解决问题 4216:使用自定义 BiDiMapper 运行 ChromeDriver [Pri-]
  • 解决了问题 4300:窗口句柄在传统版和 BiDi 之间可互操作 [Pri-]
  • 解决了问题 4325:call_function.js 的 jsonSerialize 中对 toJSON 的处理与标准不一致。[Pri-]
  • 解决了问题 4330:DCHECK 在 DevToolsClientImpl::AddListener 处失败 [Pri-]
  • 已解决问题 4357:使用 --headless 和 --user-data-dir 选项时 ChromeDriver 会话出现问题 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 111.0.5563.41

支持 Chrome 111 版

  • 已解决问题 4357:使用 --headless 和 --user-data-dir 选项时 ChromeDriver 会话出现问题 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 111.0.5563.19

支持 Chrome 111 版

  • 已解决问题 4216:使用自定义 BiDiMapper 运行 ChromeDriver [Pri-]
  • 解决了问题 4300:窗口句柄在传统版和 BiDi 之间可互操作 [Pri-]
  • 解决了问题 4325:call_function.js 的 jsonSerialize 中对 toJSON 的处理与标准不一致。[Pri-]
  • 解决了问题 4330:DCHECK 在 DevToolsClientImpl::AddListener 处失败 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 110.0.5481.77

支持 Chrome 版本 110

  • 解决了问题 4193:无法在 Android 13 上启动新会话 [Pri-]
  • 解决了问题 4272:WebSocket 应将 code=0 视为 FIN 的指示 [Pri-]
  • 解决了问题 4276:修复了 ChromeDriver 中的连接问题 [Pri-]
  • 已解决问题 4295:带有 "webSocketUrl": true 的 ChromeDriver 存在竞争条件 [Pri-]
  • 已解决问题 4297:ChromeDriver Bidi 序列化不正确 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 110.0.5481.30

支持 Chrome 版本 110

  • 解决了问题 4193:无法在 Android 13 上启动新会话 [Pri-]
  • 解决了问题 4272:WebSocket 应将 code=0 视为 FIN 的指示 [Pri-]
  • 解决了问题 4276:修复了 ChromeDriver 中的连接问题 [Pri-]
  • 已解决问题 4295:带有 "webSocketUrl": true 的 ChromeDriver 存在竞争条件 [Pri-]
  • 已解决问题 4297:ChromeDriver Bidi 序列化不正确 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 109.0.5414.74

支持 Chrome 109 版

  • 解决了问题 4179:BiDi 会话必须支持多个连接 [Pri-]
  • 已解决问题 4203:改进了提供方信息 [Pri-]
  • 解决了问题 4263:Meta+A 上的崩溃 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 109.0.5414.25

支持 Chrome 109 版

  • 解决了问题 4179:BiDi 会话必须支持多个连接 [Pri-]
  • 已解决问题 4203:改进了提供方信息 [Pri-]
  • 解决了问题 4263:Meta+A 上的崩溃 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 108.0.5359.71

支持 Chrome 版本 108 如需了解详情,请参阅版本说明

ChromeDriver 108.0.5359.22

支持 Chrome 108 版

  • 解决了问题 4204:修复了失败的 WPT test_top_level_and_one_child [Pri-]
  • 解决了问题 4215:将 chromedriver_mac64_m1 build 重命名为 chromedriver_mac_arm64 [Pri-]
  • 解决了问题 4221:点击命令关闭浏览器时发生崩溃 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 107.0.5304.62

支持 Chrome 版本 107

如需了解详情,请参阅版本说明

ChromeDriver 107.0.5304.18

支持 Chrome 版本 107

  • 解决了问题 4180:禁止在收到 BiDiMapper 已启动的通知之前处理任何 BiDi 命令 [Pri-]
  • 解决了问题 4198:ChromeDriver BiDi 不应假设 BiDiMapper 始终位于第一个标签页中 [Pri-]
  • 已解决问题 4207:运行 WPT 时出现 WebDriver 错误 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 106.0.5249.61

支持 Chrome 版本 106

如需了解详情,请参阅版本说明

ChromeDriver 106.0.5249.21

支持 Chrome 版本 106

  • 已解决问题 4016:向 ChromeDriver(基于 Mapper)添加了基本的 BiDi 支持 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 105.0.5195.52

支持 Chrome 105 版

如需了解详情,请参阅版本说明

ChromeDriver 105.0.5195.19

支持 Chrome 版本

如需了解详情,请参阅版本说明

ChromeDriver 104.0.5112.79

支持 Chrome 版本 104

如需了解详情,请参阅版本说明

ChromeDriver 104.0.5112.29

支持 Chrome 版本 104

  • 解决了问题 4121:WebDriver 命令有时会因“意外的命令响应”而失败 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 104.0.5112.20

支持 Chrome 版本 104

  • 解决了问题 4121:WebDriver 命令有时会因“意外的命令响应”而失败 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 103.0.5060.134

支持 Chrome 版本 103

  • 解决了问题 4048:目标框架已分离 [Pri-]
  • 解决了问题 4121:WebDriver 命令有时会因“意外的命令响应”而失败 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 103.0.5060.53

支持 Chrome 版本 103

  • 解决了问题 4048:目标框架已分离 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 103.0.5060.24

支持 Chrome 版本 103

如需了解详情,请参阅版本说明

ChromeDriver 102.0.5005.61

支持 Chrome 版本 102

  • 解决了问题 1309282:chromedriver 不支持多值开关 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 102.0.5005.27

支持 Chrome 版本 102

  • 解决了问题 1309282:chromedriver 不支持多值开关 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 101.0.4951.41

支持 Chrome 101 版

  • 解决了问题 4046:附加空围栏框架时命中 DCHECK [Pri-]
  • 解决了问题 4080:切换到嵌套框架失败 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 101.0.4951.15

支持 Chrome 101 版

  • 解决了问题 4046:附加空围栏框架时命中 DCHECK [Pri-]
  • 解决了问题 4080:切换到嵌套框架失败 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 100.0.4896.60

支持 Chrome 版本 100

  • 解决了问题 4002:支持围栏框架 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 100.0.4896.20

支持 Chrome 版本 100

  • 解决了问题 4002:支持围栏框架 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 99.0.4844.51

支持 Chrome 99 版

如需了解详情,请参阅版本说明

ChromeDriver 99.0.4844.35

支持 Chrome 99 版

  • 已恢复!!!解决了问题 2269:无法使用非 BMP 字符(代码点高于 U+FFFF)[Pri-3]
  • 解决了问题 chromium:1295243:ChromeDriver sendKeys 中的回归 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 99.0.4844.17

支持 Chrome 99 版

如需了解详情,请参阅版本说明

ChromeDriver 98.0.4758.102

支持 Chrome 98 版

  • 解决了问题 3933:点击视口边缘无效,且没有错误 [Pri-]
  • 已恢复!!!解决了问题 2269:无法使用非 BMP 字符(代码点高于 U+FFFF)[Pri-3]
  • 解决了问题 chromium:1295243:ChromeDriver sendKeys 中的回归 [Pri-1]

如需了解详情,请参阅版本说明

ChromeDriver 98.0.4758.80

支持 Chrome 98 版

  • 解决了问题 3933:点击视口边缘无效,但没有错误 [Pri-]
  • 解决了问题 2269:无法使用非 BMP 字符(代码点高于 U+FFFF)[Pri-3]

如需了解详情,请参阅版本说明

ChromeDriver 98.0.4758.48

支持 Chrome 98 版

  • 解决了问题 3933:点击视口边缘无效,但没有错误 [Pri-]
  • 解决了问题 2269:无法使用非 BMP 字符(代码点高于 U+FFFF)[Pri-3]

如需了解详情,请参阅版本说明

ChromeDriver 97.0.4692.71

支持 Chrome 版本 97

  • 解决了问题 3878:更好地处理了元素点击的分数元素坐标 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 97.0.4692.36

支持 Chrome 版本 97

  • 解决了问题 3878:更好地处理了元素点击的分数元素坐标 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 97.0.4692.20

支持 Chrome 版本 97

  • 解决了问题 3878:更好地处理了元素点击的分数元素坐标 [Pri-]

如需了解详情,请参阅版本说明

ChromeDriver 96.0.4664.45

支持 Chrome 96 版

  • 解决了问题 3445:无法访问 shadow root 内 iframe 中的元素 [Pri-3]

如需了解详情,请参阅版本说明

ChromeDriver 96.0.4664.35

支持 Chrome 96 版

  • 解决了问题 3445:无法访问 shadow root 内 iframe 中的元素 [Pri-3]

如需了解详情,请参阅版本说明

ChromeDriver 96.0.4664.18

支持 Chrome 96 版

  • 解决了问题 3445:无法访问 shadow root 内 iframe 中的元素 [Pri-3]

如需了解详情,请参阅版本说明

ChromeDriver 95.0.4638.69

支持 Chrome 95 版

  • 已解决问题 3857:指定了主机标头或源标头,但该标头未加入白名单或不是 localhost [Pri-1]
  • 添加了 --allowed-origins 实参

如需了解详情,请参阅版本说明

ChromeDriver 95.0.4638.54

支持 Chrome 95 版

  • 已解决问题 3857:指定了主机标头或源标头,但该标头未加入白名单或不是 localhost [Pri-1]
  • 添加了 --allowed-origins 实参

如需了解详情,请参阅版本说明

ChromeDriver 95.0.4638.17

支持 Chrome 95 版

  • 已解决问题 3857:指定了主机标头或源标头,但该标头未加入白名单或不是 localhost [Pri-1]
  • 添加了 --allowed-origins 实参

如需了解详情,请参阅版本说明

ChromeDriver 95.0.4638.10

支持 Chrome 95 版

  • 已解决问题 3857:指定了主机标头或源标头,但该标头未加入白名单或不是 localhost [Pri-1]
  • 添加了 --allowed-origins 实参

如需了解详情,请参阅版本说明

ChromeDriver 94.0.4606.113

支持 Chrome 版本 94

如需了解详情,请参阅版本说明

ChromeDriver 94.0.4606.61

支持 Chrome 版本 94

如需了解详情,请参阅版本说明

ChromeDriver 94.0.4606.41

支持 Chrome 版本 94

如需了解详情,请参阅版本说明

ChromeDriver 93.0.4577.63

支持 Chrome 93 版

如需了解详情,请参阅版本说明

ChromeDriver 93.0.4577.15

支持 Chrome 93 版

如需了解详情,请参阅版本说明

ChromeDriver 92.0.4515.107

支持 Chrome 92 版

如需了解详情,请参阅版本说明

ChromeDriver 92.0.4515.43

支持 Chrome 92 版

  • 解决了问题 3389:针对 ChromeDriver 请求的主机验证

如需了解详情,请参阅版本说明

ChromeDriver 91.0.4472.101

支持 Chrome 91 版

  • 解决了问题 1205107:无法获取 Web 应用中字段的属性值。

如需了解详情,请参阅版本说明

ChromeDriver 91.0.4472.19

支持 Chrome 91 版

  • 解决了问题 3744:在链接导航后,SendKeys() 和 Click() 会静默失败
  • 解决了问题 3746:属性端点错误地更新了值

如需了解详情,请参阅版本说明

ChromeDriver 90.0.4430.24

支持 Chrome 版本 90

  • 解决了问题 3708:对于 shadow DOM 中的元素,GetElementLocation 的 inView 失败
  • 已解决问题 3721:启用时收集 Service Worker 的性能日志
  • 解决了问题 3731:AdbImpl::GetPidByName 在非标准 Android 操作系统(例如 OnePlus)上无法正常运行
  • 已解决问题 3733:本地主机上的网域出现灾难性故障
  • 解决了问题 3734:驱动程序应在尝试在错误的网域上设置 Cookie 时报错
  • 解决了问题 3743:重构了调用函数并修复了移除元素问题

如需了解详情,请参阅版本说明

ChromeDriver 89.0.4389.23

支持 Chrome 版本 89

  • 解决了问题 3667:接收来自渲染器的消息时超时
  • 解决了问题 3675:GetElementLocation 使用 inView 方法,该方法错误地将布尔值作为数组处理
  • 解决了问题 3682:对于部分超出视口的元素,GetElementRegion 返回的大小不正确
  • 解决了问题 3690:如果扩展程序使用 chrome.windows API,ChromeDriver 会失败

如需了解详情,请参阅版本说明

ChromeDriver 88.0.4324.96

支持 Chrome 88 版

  • 解决了问题 3641:当浏览器窗口未处于焦点状态时,Chrome Beta 版 v87 和 chromedriver v(87/86) 无法加载/呈现网页

如需了解详情,请参阅版本说明

ChromeDriver 88.0.4324.27

支持 Chrome 88 版

  • 解决了问题 3611:protractor 中的 getText() 输出与 <element>.innerText 不同
  • 解决了问题 3625:提高了元素屏幕截图的兼容性
  • 解决了问题 3628:报告了过时的元素引用和错误的网址,其中网址的路径中包含另一个网址
  • 解决了问题 3631:添加了对 webauthn:extension:largeBlob 功能的支持
  • 解决了问题 3635:Chromedriver 86 - chromedriver.quit() 似乎无法正确传递卸载事件
  • 解决了问题 3649:在 Windows 10 上以无头模式运行时,无法将所选文本复制到剪贴板

如需了解详情,请参阅版本说明

ChromeDriver 87.0.4280.88

支持 Chrome 87 版

  • 解决了问题 3641:当浏览器窗口未处于焦点状态时,Chrome Beta 版 v87 和 chromedriver v(87/86) 无法加载/呈现网页
  • 解决了问题 3657:屏幕截图后台浏览器超时

如需了解详情,请参阅版本说明

ChromeDriver 87.0.4280.20

支持 Chrome 87 版

  • 解决了问题 2421:在 Android adb-server 上删除了旧的端口转发通道
  • 解决了问题 3474:模拟移动设备列表需要更新
  • 解决了问题 3507:实现了“获取计算出的角色”
  • 解决了问题 3508:实现了“获取计算出的标签”
  • 解决了问题 3584:重命名了 ChromeDriver 命令行选项 --whitelisted-ips
  • 解决了问题 3588:双向 WebSocket 连接
  • 解决了问题 3594:如果 OOPIF 在主网页之前加载,导航会过早完成
  • 解决了问题 3598:用于将开发者工具端口转发到 webview_devtools_remote 套接字的命令行选项
  • 解决了问题 3608:Chromedriver debuggerAddress 不支持 IPv6

如需了解详情,请参阅版本说明

ChromeDriver 86.0.4240.22

支持 Chrome 86 版

  • 解决了问题 3370:正常关闭 Chrome,否则 Cookie 将无法正确保存到 SQLite 持久性文件
  • 解决了问题 3401:Get Element Location JS 无法定位元素的可见中心
  • 解决了问题 3462:对于 sendKeys,CMD 键在 MAC 上不起作用
  • 解决了问题 3541:改进了客户端和 ChromeDriver 之间的日志
  • 已解决问题 3559:当 ChromeDriver 报告不兼容时,输出 Chrome 版本

如需了解详情,请参阅版本说明

ChromeDriver 85.0.4183.87

支持 Chrome 85 版

  • 解决了问题 3578:Chrome 85 不再允许在打开提醒对话框时与窗口进行流畅的互动

如需了解详情,请参阅版本说明

ChromeDriver 85.0.4183.83

支持 Chrome 85 版

  • 解决了问题 3577:ChromeDriver 85 未检测到已更改的 Chrome 目录 (C:\Program Files)

如需了解详情,请参阅版本说明

ChromeDriver 85.0.4183.38

支持 Chrome 85 版

  • 已解决问题 3214:ChromeDriver78:Sendkeys 会重置 contenteditable 的文本选择
  • 解决了问题 3376:从 ChromeDriver 中移除了 LaunchApp 命令
  • 解决了问题 3432:有时 NavigationTracker 无法检测到网页何时加载完毕
  • 解决了问题 3481:根据 W3C 规范新增了打印端点
  • 解决了问题 3488:当代理配置错误时,driver.get 不会抛出错误
  • 解决了问题 3502:使用 document.hasFocus() 检查元素是否处于聚焦状态
  • 解决了问题 3515:selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message

如需了解详情,请参阅版本说明

ChromeDriver 84.0.4147.30

支持 Chrome 版本 84

  • 解决了问题 3420:切换到打印窗口后,chromedriver 停止响应
  • 解决了问题 3421:驱动程序返回不带样式的西里尔文本
  • 解决了问题 3422:GetElementText 在使用 prototype 1.6.0.3 时中断
  • 解决了问题 3434:无法从“浏览器”日志中获取“断言”消息

如需了解详情,请参阅版本说明

ChromeDriver 83.0.4103.39

支持 Chrome 83 版

  • 更新了 Chromedriver,使其能与 prototype.js 正常搭配使用。

如需了解详情,请参阅版本说明

ChromeDriver 83.0.4103.14

支持 Chrome 83 版

  • 解决了问题 1778:弃用了 ChromeDriver 中的 launchApp
  • 解决了问题 2520:当 Chrome 无响应时,InitSession 可能会无限期等待
  • 解决了问题 3120:从新标签页下载无头模式
  • 已解决问题 3234:确认在子字符串之前找到分号
  • 已解决问题 3240:ExecuteGetElementRect 不检查来自 GET_SIZE 的返回状态
  • 解决了问题 3331:get_cookies() 方法在 W3C 模式下返回的“expiry”键的类型为 double,但应为 int64
  • 解决了问题 3332:重试超时记录为严重
  • 解决了问题 3339:Chromedriver 意外退出,代码为 null,信号为 SIGTRAP
  • 解决了问题 3351:改进了“安全注意事项”消息
  • 解决了问题 3352:支持针对颜色元素的 SendKeys
  • 解决了问题 3353:在帧上下文销毁后,继续等待待处理的导航
  • 已解决问题 3375:Chromedriver v80 在某些网站上停滞在 getPageSource
  • 已解决问题 3383:Windows 上的 ChromeDriver 80 及更高版本似乎会在某些元素或点击命令上退出或停滞
  • 已解决问题 3399:移除了 wasThrown 检查

ChromeDriver 81.0.4044.138

支持 Chrome 81 版

  • 更新了 Chromedriver,使其能与 prototype.js 正常搭配使用。

如需了解详情,请参阅版本说明

ChromeDriver 81.0.4044.69

支持 Chrome 81 版

  • 已修复:Chromedriver 在某些网站上出现 getPageSource 崩溃问题。
    • 已修复:ChromeDriver 在执行某些元素或点击命令时崩溃。

如需了解详情,请参阅版本说明

ChromeDriver 81.0.4044.20

支持 Chrome 81 版

  • 修复了尝试获取 HTML 元素位置时出现的错误。
    • Get 和 Add Cookie 命令现在是特定于框架的。
    • 解决了重新定义标准 JavaScript 对象的网站上出现的一些问题。
    • 在收到“目标已关闭”消息后,ChromeDriver 将继续等待加载完成。
    • Chromedriver 现在会针对超时返回符合规范的错误代码
    • 已修复:ChromeDriver 在 NewSession 命令上出现意外的缓慢响应时间。
    • 现在支持超过 10 分钟的用户定义超时时间。
    • 修复了以下问题:由于 IPv4 与 IPv6 不匹配,ChromeDriver 无法连接到开发者工具。
    • 恢复了 Linux 上 Chrome 二进制文件的搜索顺序。

如需了解详情,请参阅版本说明

ChromeDriver 80.0.3987.106

支持 Chrome 80 版

  • 恢复了 Linux 上 Chrome 二进制文件的搜索顺序

如需了解详情,请参阅版本说明

ChromeDriver 80.0.3987.16

支持 Chrome 80 版

  • 修复了使用代理时加载页面被中止的问题。
  • Chromedriver 现在会等待当前帧加载。
  • ChromeDriver 日志将包含驱动程序使用的端口。
  • 为 W3C 模式启用了 SetGeoLocation。
  • 为 UnexpectedAlertOpen 状态添加了缺失的提醒文本。
  • 改进了加载 CRX2 扩展程序时的消息。
  • 修复了 ExecuteGetPageSource 中潜在的竞态条件。
  • 当 acceptInsecureCerts 功能为 true 时,ChromeDriver 将添加 --ignore-certificate-errors 标志
  • 更新了“无此类执行上下文”的错误消息和返回状态
  • 修复了以下问题:ChromeDriver 在等待待处理的导航时可能会无限期地阻塞。
  • 向 AddCookie 和 GetCookie 添加了 SameSite 属性。

如需了解详情,请参阅版本说明

ChromeDriver 79.0.3945.36

支持 Chrome 79 版

与版本 79.0.3945.16 相比,包含以下变更:

  • 修复了元素坐标计算不正确的问题

如需了解详情,请参阅版本说明

ChromeDriver 79.0.3945.16

支持 Chrome 79 版

  • 修复了在命令执行期间因触发 JavaScript 提醒而导致的 ChromeDriver 崩溃问题
    • 修复了在拍摄屏幕截图时触发提醒导致 Chromedriver 锁定的 bug
    • 从 Chrome 启动命令中移除了 --ignore-certificate-errors
    • 将 Win10 上的平台和 platformName 更改为 Windows
    • 修复了排除“enable-automation”时出现的未定义 window.navigator.webdriver 问题
  • 修复了 WPT 测试“test_not_editable_inputs[hidden]”
    • 修复了使用无头模式时出现的“元素不可点击”问题

如需了解详情,请参阅版本说明

ChromeDriver 78.0.3904.105

支持 Chrome 78 版

与版本 78.0.3904.70 相比,此版本包含以下更改:* 修复了元素坐标计算不正确的问题

如需了解详情,请参阅版本说明

ChromeDriver 78.0.3904.70

支持 Chrome 78 版

与版本 78.0.3904.11 相比,包含以下更改:

  • 由于报告了多个问题,因此还原了在 Retina 显示屏上调整屏幕截图大小的变更

如需了解详情,请参阅版本说明

ChromeDriver 78.0.3904.11

支持 Chrome 78 版

  • 修复了 JavaScript 对象序列化方面的多个问题
    • 修复了 Android 版 Chrome 的功能匹配方面的 bug
    • 实现了权限自动化
    • 修复了 Retina 显示屏上的屏幕截图大小
  • 修复了某些情况下的网页加载超时问题
    • 改进了 platformName 功能匹配
    • 修正了将指针移至下拉列表选项时返回的错误代码
    • 修复了影响无头模式下下载的问题

如需了解详情,请参阅版本说明

ChromeDriver 77.0.3865.40

支持 Chrome 77 版

与版本 77.0.3865.10 相比,此版本包含以下更改:

  • 修复了在序列化和反序列化 JavaScript 对象时出现的两个 bug
  • 修复了在匹配功能时对 platformName: android 的处理

如需了解详情,请参阅版本说明

ChromeDriver 77.0.3865.10

支持 Chrome 77 版

  • 修复了 Actions API 实现中的多个问题
    • 改进了 JavaScript 代码执行和结果处理
    • 修复了在 OSS 模式下错误拒绝正文为空的 POST 请求的 bug
  • 更强大的导航追踪器
  • 支持急切的网页加载策略
    • 根据 W3C WebDriver 规范添加了“New Window”命令
  • 支持在无头模式下保存文件下载
  • 添加了对加载 CRX3 扩展程序的支持

如需了解详情,请参阅版本说明

ChromeDriver 76.0.3809.126

支持 Chrome 76 版

与版本 76.0.3809.68 相比,包含以下更改:

  • 修复了在序列化和反序列化 JavaScript 对象时出现的两个 bug

如需了解详情,请参阅版本说明

ChromeDriver 76.0.3809.68

支持 Chrome 76 版

与版本 76.0.3809.25 相比,包含以下更改:

  • 修复了检测 JavaScript 对象中的循环引用时出现的 bug
  • 修复了在出现某些类型的 JavaScript 错误时导致 ChromeDriver 崩溃的 bug
  • 修复了阻止操作 API 与 shadow DOM 内的元素互动的 bug
    • 修复了在操作 API 命令之间跟踪辅助键状态的 bug
    • 修复了在操作 API 命令之间跟踪指针位置时出现的 bug
    • 在发生“Cannot call non W3C standard command while in W3C mode”错误时,将其保存到日志文件

如需了解详情,请参阅版本说明

ChromeDriver 76.0.3809.25

支持 Chrome 76 版

包含自版本 76.0.3809.12 以来的以下更改:

  • 修复了在 OSS 模式下错误拒绝正文为空的 POST 请求的 bug
  • 添加了用于检索 Chrome 日志的新端点
    • 在 W3C 模式下为“是否显示”命令添加了端点

如需了解详情,请参阅版本说明

ChromeDriver 76.0.3809.12

支持 Chrome 76 版

  • 完成了 Actions API 的实现
    • 改进了脚本超时处理的规范合规性
    • 改进了“执行脚本”命令的结果序列化
    • 修复了将元素滚动到视图中的问题
    • 添加了对 WebDriver 规范中定义的 Cancel 键的处理
    • 修复了未处理的提醒错误响应的处理
    • 修复了 <details> 元素的处理问题
    • 更新了 excludeSwitches 选项,以允许在开关名称中使用可选的前导短划线

如需了解详情,请参阅版本说明

ChromeDriver 75.0.3770.140

支持 Chrome 75 版

包含以下相对于版本 75.0.3770.90 的更改:

  • 修复了当出现某些类型的 JavaScript 错误时导致 ChromeDriver 崩溃的 bug
  • 修复了在操作之间保留辅助键状态的错误

如需了解详情,请参阅版本说明

ChromeDriver 75.0.3770.90

支持 Chrome 75 版

与 75.0.3770.8 版相比,包含以下更改:

  • 修复了在 OSS 模式下错误拒绝正文为空的 POST 请求的 bug
  • 添加了用于检索 Chrome 日志的新端点

如需了解详情,请参阅版本说明

ChromeDriver 75.0.3770.8

支持 Chrome 75 版

最明显的变化是 ChromeDriver 现在默认以符合 W3C 标准的模式运行。其他更改包括:

  • 修复了在元素清除期间导致模糊事件被触发两次的 bug
  • 根据 W3C 标准的要求,将功能 loggingPrefs 重命名为 goog:loggingPrefs
  • 修复了 W3C 模式下的错误处理问题
    • 正确处理了在域名中不带前导点的情况下创建 Cookie 的问题
    • 允许将脚本超时时间设为 null
    • 修复了“元素发送键”命令,以用于具有“multiple”属性的文件输入
    • 修复了“获取有效元素”命令,使其在不存在有效元素时返回“没有此类元素”错误
    • 修复了导航到格式错误的网址时返回“实参无效”错误的问题
    • 修复了收到无效会话 ID 时的 HTTP 状态代码
    • 修复了输入参数缺失或格式不正确时的错误响应
    • 修复了“执行脚本”命令,以处理面向行的 JavaScript 注释

如需了解详情,请参阅版本说明

ChromeDriver 74.0.3729.6

支持 Chrome 74 版

  • 修复了在 Windows 上生成意外 debug.log 文件的 bug
  • 修复了 SVG 文档中的鼠标点击和拖放问题
  • 在 ChromeDriver 的响应中添加了 cache-control 标头
  • 修正了点击被其他元素拦截时的错误类型
  • 修复了以下 bug:导致 ChromeDriver 在没有 /dev/shm 的 Linux 设备上失败
  • 修复了某些类型的双击事件
  • 修复了“获取会话”命令
  • 修复了“切换到框架”命令中的错误检查
  • 修复了“获取网页源代码”命令

如需了解详情,请参阅版本说明

ChromeDriver 73.0.3683.68

支持 Chrome 73 版

  • 修复了在 Windows 上生成意外 debug.log 文件的 bug
  • 修复了在某些情况下从“执行脚本”命令返回的错误代码
  • 在 ChromeDriver 的响应中添加了 cache-control 标头
  • 默认情况下,使 HTTP 服务器保持连接有效
  • 修复了“关闭窗口”命令,以正确处理用户提示
  • 修复了向已停用的元素发送键时返回的错误代码
  • 改进了超时值处理的规范合规性
  • 改进了“添加 Cookie”命令的规范合规性
    • 增加了 HTTP 服务器侦听队列长度
  • 修复了 v0 shadow DOM 中的“Is Element Displayed”命令
    • 在日志文件中添加了有关 Element Clear 命令行为变更的警告
  • 修复了“执行脚本”命令,以正确地将 document.all 转换为 JSON 格式
  • 改进了对错误元素引用的处理

如需了解详情,请参阅版本说明

ChromeDriver 2.46

支持 Chrome v71-73

  • 修复了在某些情况下从“执行脚本”命令返回的错误代码
  • 默认情况下,使 HTTP 服务器保持连接处于活动状态
  • 修复了“关闭窗口”命令,以正确处理用户提示
  • 修复了向已停用的元素发送键时返回的错误代码
  • 改进了超时值处理的规范合规性
  • 改进了“添加 Cookie”命令的规范合规性
  • 改进了“切换到框架”命令的规范合规性
  • 增加了 HTTP 服务器侦听队列长度
  • 修复了 v0 Shadow DOM 中的“Is Element Displayed”命令
  • 固定元素双击命令
  • 在日志文件中添加了有关 Element Clear 命令行为变更的警告
  • 修复了“执行脚本”命令,以正确地将 document.all 转换为 JSON 格式
  • 改进了对错误元素引用的处理

如需了解详情,请参阅版本说明

ChromeDriver 2.45

支持 Chrome v70-72

  • 修复了“新会话”不符合规范的问题
  • 修复了以下问题:如果 Chrome 和 ChromeDriver 版本不兼容,ChromeDriver 不应启动 Chrome
  • 修复了以下问题:使用无效的定位器时,“查找元素”命令返回错误的错误代码
  • 修复了部分 ChromeDriver 状态代码错误的问题
  • 修复了 WebViewImpl::DispatchTouchEventsForMouseEvents 中 JS 的编译错误
  • 固定窗口大小命令应处理用户提示
  • 修复了以下问题:ChromeDriver 无法使用 Chrome 选项“user-data-dir=”正确启动 Chrome
  • 固定状态命令不符合规范
  • 修复了添加对 strictFileInteractability 的支持

ChromeDriver 2.44

支持 Chrome v69-71

  • 修复了 Mac 上的 WindowMaximize
  • 修复了窗口句柄调用出现的“提醒打开错误”
  • 修复了以下问题:在 W3C 模式下,元素发送键应获取“文本”属性
  • 修复了“Is Element Enabled”未按规范处理的 XML 特殊情况
  • 修复了以下问题:未按规范处理获取元素 CSS 值的 XML 特殊情况
  • 修复了“设置窗口矩形”需要检查无效输入的问题
  • 修复了支持新的 unhandledPromptBehavior 模式

ChromeDriver 2.43

支持 Chrome v69-71

更改包括

  • 修复了代理配置解析不符合标准的问题
  • 修复了“启动应用”命令不稳定的问题
  • 修复了 iFrame 内元素的屏幕截图拍摄不正确的问题
  • 添加了 ChromeDriver 对通过远程连接调整窗口大小的支持
  • 修复了以下问题:未在 Clear 元素中处理错误代码
  • 修复了“未等待元素可见”的问题
  • 修复了“获取元素属性”功能未实现的问题
  • “固定切换到帧”不符合规范
  • 修复了“执行异步脚本”不返回符合规范的错误代码的问题
  • 修复了“执行脚本”不返回符合规范的错误代码的问题
  • 修复了 ExecuteGet 中的错误代码不符合规范的问题
  • 修复了“发送提醒文本”未返回符合规范的错误代码的问题
  • 修复了输入类型为“date”的 clear() 假装元素不可供用户编辑的问题
  • 修复了 Chromedriver 获取手动打开的标签页的窗口句柄的问题
  • 修复了允许为 ChromeDriver 附加或启动新日志文件的问题
  • 修复了以下问题:如果标志位于 firstMatch 中,则新会话不会调用 w3c 模式

ChromeDriver 2.42

支持 Chrome v68-70

更改包括

  • 修复了移动设备模拟中的 ClickElement
  • 具有 IPv4 的固定白名单 IP
  • 修复了在 Mac OS 上使用 whitelisted-ips 标志启动 ChromeDriver 的问题
  • 修复了 SetTimeout 以接受 pre-W3C 和 W3C 格式
  • 修复了拍摄元素屏幕截图
  • 修复了固定 ChromeDriver 也在系统 PATH 中查找 Chrome 二进制文件的问题
  • 修复了“最大化窗口”和“全屏”
  • 实现了日志重放功能。(目前不适用于 Android 和远程浏览器)
  • 修复了一些错误代码不符合 W3C 标准的问题
  • 修复了未正确处理具有多个实参的 console.log 的问题
  • 修复了 GetElementRect 应允许双精度浮点数的问题
  • 修复了触控模拟

ChromeDriver 2.41

支持 Chrome v67-69

更改包括

  • 修复了 ChromeDriver 在使用“whitelisted-ips”选项运行时出现的问题
  • 远程调试端口在功能中返回
  • 实现了在 Android 上获取窗口大小
  • 改进了桌面版 Chrome 启动错误消息
  • 如果无法启动 Chrome 二进制文件,ChromeDriver 会快速失败
  • 关闭窗口返回值符合规范