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

Selenium ChromeDriver控制下Chrome按键5触发退格键问题求助

问题描述
  • 在Selenium控制Chrome执行自动化测试时,按下数字“5”会触发退格键删除字符,而非输入5;数字小键盘的5触发F11,手动启动同版本Chrome则完全正常。
  • 问题仅出现在自动化控制的Chrome实例中:无论是Selenium发送按键还是手动在该实例中按5,都会触发错误功能;手动启动的Chrome无此问题。
  • 环境:Chrome 118/97,Azure Ubuntu Linux 22,测试多个页面(包括谷歌首页)均存在此问题,其他按键功能正常。
  • 当前启动参数:
ChromeOptions options = new ChromeOptions();    
options.addArguments("--no-sandbox","--remote-allow-origins=*");
driver = new ChromeDriver(options);
  • 已尝试添加--lang=en-GB参数,无效。
  • 事件日志差异:自动化实例中UI事件显示为退格并实际执行;手动启动实例日志虽显示退格但实际输入5;小键盘5在自动化实例触发F11,手动实例输入5。
解决方案尝试

1. 禁用自动化识别特性

添加--disable-blink-features=AutomationControlled参数,让Chrome不标记自身为自动化受控状态,大概率修复键盘映射异常:

ChromeOptions options = new ChromeOptions();    
options.addArguments("--no-sandbox","--remote-allow-origins=*", "--disable-blink-features=AutomationControlled");
driver = new ChromeDriver(options);

2. 强制指定键盘布局

通过启动参数或偏好设置强制设置美式键盘布局:

// 启动参数方式
options.addArguments("--keyboard-layout=us");

// 偏好设置方式
Map<String, Object> prefs = new HashMap<>();
prefs.put("keyboard_layout", "us");
options.setExperimentalOption("prefs", prefs);

3. 绕过按键模拟直接输入

如果参数调整无效,直接通过字符输入替代按键模拟:

// 直接输入字符5
driver.findElement(By.id("target-input")).sendKeys("5");

// 或用Actions类执行
Actions actions = new Actions(driver);
actions.sendKeys("5").perform();

4. 校验ChromeDriver版本兼容性

确保ChromeDriver版本与Chrome主版本完全匹配,小版本差异也可能引发此类输入异常,替换为对应版本的驱动再测试。

5. 调整沙箱相关参数

尝试添加--disable-dev-shm-usage配合无沙箱模式,或在环境允许的情况下移除--no-sandbox参数:

options.addArguments("--disable-dev-shm-usage");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:16:08