Python webbrowser的open_new是否已废弃?如何控制Chrome新开窗口/标签
webbrowser模块相关问题解答
open_new方法废弃状态说明
Python标准库的webbrowser.open_new()方法未被废弃,所有官方维护中的Python版本均保留该方法的正常支持,你遇到的问题和方法废弃无关。
强制新建标签而非新窗口的原因
该行为是Chrome浏览器在macOS平台的默认规则,和webbrowser模块无关。
你当前使用的open -a调用逻辑中,只要Chrome已经处于运行状态,系统默认会将新URL投递到已有Chrome进程,在当前活跃窗口新建标签打开,webbrowser仅负责透传命令,未修改相关启动逻辑。
可控打开方式的解决方案
方案1:添加Chrome启动参数(推荐)
在原有调用命令中新增--new-window参数,强制要求Chrome打开独立新窗口:
import webbrowser # --args 表示后续参数将传递给Chrome本身 CHROME_PATH = 'open -a /Applications/Google\ Chrome.app --args --new-window %s' browser = webbrowser.get(CHROME_PATH) browser.open("http://www.yahoo.com")
方案2:直接调用Chrome二进制文件
如果需要更稳定的控制效果,可以直接指向Chrome的可执行文件路径调用:
import webbrowser CHROME_PATH = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --new-window %s' browser = webbrowser.get(CHROME_PATH) browser.open("http://www.yahoo.com")
方案3:使用subprocess手动执行命令
跳过webbrowser的封装,直接通过系统命令调用,灵活度最高:
import subprocess url = "http://www.yahoo.com" subprocess.run(["open", "-a", "Google Chrome", "--args", "--new-window", url], check=True)
内容的提问来源于stack exchange,提问作者Mave
相关产品推荐
相关产品推荐

