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
相关产品推荐
相关产品推荐

