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

Python webbrowser调用open/open_new()仅开标签页,无法打开新窗口求助

Python Webbrowser 打开新窗口而非标签页失效问题

根据Python官方的webbrowser模块文档,使用带new=1参数的webbrowser.open()函数或者webbrowser.open_new()函数,理应打开新的浏览器窗口而非新标签页。

我在大型项目里需要这个功能,一开始以为是项目其他代码影响,于是简化测试代码为:

import webbrowser
webbrowser.open("https://stackoverflow.com", new=1, autoraise=True)
webbrowser.open_new("https://stackoverflow.com")

但即使是这几行代码,两个函数都没能打开新窗口,只会打开新标签页。请问这是什么原因?


问题原因及解决办法

  • 核心原因是webbrowser模块的行为最终受系统默认浏览器的配置控制。现在主流浏览器(Chrome、Edge、Firefox等)默认会把“新窗口”请求转化为新标签页,除非你在浏览器的设置里手动修改了相关选项(比如Chrome可以在设置里调整“打开链接的方式”为新窗口)。
  • webbrowser模块只是封装了系统浏览器的调用逻辑,有些浏览器的可执行文件本身就优先使用标签页。比如Chrome默认用现有窗口开新标签,必须传入--new-window参数才会强制开新窗口。
  • 如果必须确保打开新窗口,可以绕过webbrowser模块,直接调用浏览器的可执行文件并传入对应命令行参数。举个Chrome的例子:
import subprocess
# Windows 路径示例
subprocess.run(["C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "--new-window", "https://stackoverflow.com"])
# Linux 示例
# subprocess.run(["google-chrome", "--new-window", "https://stackoverflow.com"])
# macOS 示例
# subprocess.run(["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", "--new-window", "https://stackoverflow.com"])
  • 另外可以检查webbrowser模块是否调用了正确的浏览器,用webbrowser.get()指定具体浏览器类型,但这依然受浏览器自身配置限制:
browser = webbrowser.get('chrome')
browser.open_new("https://stackoverflow.com")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:00:57