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

Selenium WebDriver在Chrome中无法执行SHIFT+m键盘操作求助

解决Mac上Selenium Actions类执行SHIFT+m无响应的问题

可能的原因及对应方案

1. 未确保目标元素获得焦点

键盘操作需要作用于已激活的元素,否则事件会被忽略。先通过点击或其他方式聚焦目标元素:

// 定位需要操作的元素(比如页面编辑器、输入框)
WebElement target = driver.findElement(By.cssSelector("your-target-selector"));
target.click(); // 激活元素

// 执行SHIFT+m快捷键
Actions actions = new Actions(driver);
actions.sendKeys(Keys.chord(Keys.SHIFT, "m")).perform();

2. Actions类调用方式错误

Actions是构建器模式,分步调用时需保留动作链的引用,否则操作不会被加入执行队列:

// 正确写法1:链式调用
new Actions(driver).sendKeys(Keys.chord(Keys.SHIFT, "m")).perform();

// 正确写法2:保留动作链引用
Actions actions = new Actions(driver);
actions = actions.sendKeys(Keys.SHIFT, "m"); // 接收返回的新Actions实例
actions.build().perform();

3. Mac ARM架构驱动兼容性问题

确保使用的浏览器驱动(如ChromeDriver)是适配Apple Silicon的arm64版本,且版本与浏览器完全匹配。避免使用x86架构的驱动,否则会出现各种异常或无响应。

4. 改用Robot类替代(全局键盘事件)

如果Actions类始终无效,可尝试Robot类发送原生键盘事件,但需注意权限设置:

try {
    // 确保浏览器处于前台
    driver.switchTo().window(driver.getWindowHandle());
    
    Robot robot = new Robot();
    // 模拟SHIFT+m的按下与释放
    robot.keyPress(KeyEvent.VK_SHIFT);
    robot.keyPress(KeyEvent.VK_M);
    robot.keyRelease(KeyEvent.VK_M);
    robot.keyRelease(KeyEvent.VK_SHIFT);
} catch (AWTException e) {
    e.printStackTrace();
}

注意:使用Robot类前,需在Mac系统设置的「隐私与安全性」->「辅助功能」中,添加你的IDE或终端应用,允许其控制电脑,否则会抛出权限异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:31:04