You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker无头Chromium环境触发ChromeDriver IsSupportedClipboardBuffer崩溃求助

问题背景

目标为创建搭载无头Chromium的AWS DockerImageFunction,用于运行behave+Selenium+Python技术栈的测试用例。

版本信息

  • Chrome版本:89.0.4389.128
  • ChromeDriver版本:89.0.4389.23
  • Selenium版本:3.141.0

运行环境

  • RedHat Linux
  • Docker容器

故障现象

向网站模态框内的输入框发送按键指令时ChromeDriver崩溃。单次发送LEFT指令后执行Keys.NUMPAD1无异常,发送多次LEFT指令后WebDriver就会崩溃。输入框存在入场动画,已等待动画执行完成仍无法解决问题。

触发故障的代码片段

input_field = self.driver.wait.for_clickability_of_element(MOBILE_NUM_INPUT)
input_field.focus()
input_field.click()
input_field.send_keys(Keys.LEFT)
input_field.send_keys(Keys.LEFT)
input_field.send_keys(Keys.NUMPAD1)
input_field.send_keys(Keys.NUMPAD0)

ChromeDriver错误日志

lambda_1  | [1624797899.659][DEBUG]: DevTools WebSocket Command: Input.dispatchKeyEvent (id=1263) 37EEB46F526E1B95F6DDDC7454E78A14 {
lambda_1  |    "code": "Numpad1",
lambda_1  |    "isKeypad": true,
lambda_1  |    "key": "1",
lambda_1  |    "modifiers": 0,
lambda_1  |    "text": "1",
lambda_1  |    "type": "keyDown",
lambda_1  |    "unmodifiedText": "1",
lambda_1  |    "windowsVirtualKeyCode": 97
lambda_1  | }
lambda_1  | [0627/124459.630384:FATAL:headless_clipboard.cc(296)] Check failed: IsSupportedClipboardBuffer(buffer). 

当前使用的Chrome启动参数

options.binary_location = '/opt/bin/headless-chromium'
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-gpu-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--single-process')
options.add_argument('--headless')
options.add_argument('--user-data-dir=/tmp/user-data')
options.add_argument('--data-path=/tmp/data-path')
options.add_argument('--homedir=/tmp')
options.add_argument('--disk-cache-dir=/tmp/cache-dir')
options.add_argument('--use-system-clipboard')
options.add_argument('--allow-no-sandbox-job')
options.add_argument('--remote-debugging-port=9222')
解决方案

该故障为Chrome 89版本无头模式的已知bug:启用--use-system-clipboard参数后,多次触发键盘方向键操作会调用不支持的剪贴板缓冲区,导致进程直接崩溃,可按以下步骤修复:

  1. 移除options.add_argument('--use-system-clipboard')配置,无头模式下无特殊需求不需要调用系统剪贴板,该参数是引发崩溃的直接诱因。
  2. 可选优化输入逻辑:避免多次单独调用send_keys发送方向键,合并为单次调用减少I/O交互次数,修改后代码如下:
input_field = self.driver.wait.for_clickability_of_element(MOBILE_NUM_INPUT)
input_field.click()
# 合并按键操作
input_field.send_keys(Keys.LEFT * 2 + Keys.NUMPAD1 + Keys.NUMPAD0)
  1. 如确实需要使用系统剪贴板能力,可将Chrome/ChromeDriver版本升级到91及以上,该版本官方已修复headless_clipboard.cc的缓冲区校验问题。

内容的提问来源于stack exchange,提问作者szombati_attila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 06:54:04