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

如何使用Selenium(Python)打开/关闭标签页?快捷键方案失效如何解决

问题根本原因

Selenium的原生键盘输入事件作用域为当前激活的页面DOM节点,而Ctrl+T这类快捷键属于浏览器全局操作,由浏览器窗口本身捕获处理,不会传递给页面内容层。你向页面body发送快捷键、或是在默认页面上下文下执行ActionChains操作时,事件只会被传递到页面DOM中,不会被浏览器识别为窗口级快捷键,因此不会触发新建标签页的行为。操作无响应也不报错是因为输入事件本身执行成功,只是没有对应的上层逻辑处理该事件。

让ActionChains方案生效的配置调整

如果一定要使用ActionChains方式实现,需要满足两个核心前提:

  • 浏览器窗口必须处于操作系统前台激活状态,不能后台运行或最小化
  • 开启浏览器的系统级输入事件接收配置,不同浏览器配置方式不同:
    • Chrome:添加启动参数--force-renderer-accessibility,同时不能使用无头模式
    • Firefox:在FirefoxProfile中设置dom.send_key_events_to_root_window为true

可运行的Chrome示例代码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

# 配置Chrome启动参数
chrome_options = Options()
chrome_options.add_argument("--force-renderer-accessibility")
# 禁止使用--headless无头参数,必须可视化运行
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.example.com") # 先加载任意页面保证DOM初始化完成

# 先点击页面空白区域,确保页面处于激活状态
driver.find_element_by_tag_name('body').click()

# 执行ActionChains快捷键操作
ActionChains(driver).key_down(Keys.CONTROL).send_keys('t').key_up(Keys.CONTROL).perform()

额外说明

这种依赖系统级输入的方案兼容性很差,不同操作系统、不同浏览器版本的表现差异极大,且完全不支持无头运行。生产环境更推荐你已经测试成功的driver.execute_script("window.open('')")方案,稳定性更高,也不依赖窗口激活状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:42:00