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

Selenium中无法使用右键点击,如何模拟菜单键/应用键?

如何在Selenium中模拟菜单键(应用键)打开下拉菜单

遇到右键点击被策略限制的情况确实挺棘手的,不过我们可以直接模拟菜单键的按键操作来绕开这个问题,下面给你几个可行的方案:

方案一:直接发送菜单键的Unicode字符

菜单键对应的Unicode编码是\uE05D,你可以先让目标元素获得焦点,再通过send_keys方法发送这个字符:

# 定位目标元素
element = driver.find_element(By.ID, "target-element")
# 让元素获得焦点(点击或调用focus方法)
element.click()
# 发送菜单键触发下拉菜单
element.send_keys("\uE05D")

这个方法在Chrome和Firefox中兼容性都不错,操作起来也简单。

方案二:使用ActionChains发送键码

菜单键的Windows键盘键码是十进制93(十六进制0x5D),你可以通过Keys.chr()生成对应键值,再结合ActionChains执行操作:

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

element = driver.find_element(By.ID, "target-element")
actions = ActionChains(driver)
# 移动到元素上、聚焦,再发送菜单键
actions.move_to_element(element).click().send_keys(Keys.chr(0x5D)).perform()

这个方式适合需要先准确定位元素,再触发菜单的场景。

方案三:用JavaScript模拟按键事件

如果上面两种方法都没效果,可以尝试通过JavaScript直接给元素派发键盘事件:

element = driver.find_element(By.ID, "target-element")
# 构造菜单键的keydown事件脚本
script = """
const menuKeyEvent = new KeyboardEvent('keydown', {
    keyCode: 93,
    bubbles: true,
    cancelable: true
});
arguments[0].dispatchEvent(menuKeyEvent);
"""
# 先让元素聚焦
element.click()
# 执行脚本触发菜单
driver.execute_script(script, element)

额外注意事项

  • 如果页面通过oncontextmenu事件禁用了右键菜单,可能菜单键也会被拦截,这时候可以先通过JS解除限制:
    driver.execute_script("document.oncontextmenu = null;")
    
  • 不同操作系统的键逻辑略有差异,上述方案在Windows和Linux环境下基本通用,Mac环境可能需要调整键码适配系统快捷键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:13