使用Python webbrowser库打开多个独立Chrome窗口的问题求助
解决方案
问题根因
Chrome 默认会复用已有进程处理新的启动请求,未指定强制开新窗口参数时,只会在无已运行Chrome进程时创建新窗口,后续请求默认在现有窗口新建标签,最多触发2个独立窗口是Chrome的默认进程复用策略限制。
方案1:仅打开多个独立窗口(共享本地Chrome配置)
在Chrome启动参数中添加 --new-window 强制每次调用都新建独立窗口,示例代码如下:
import webbrowser # 普通模式独立窗口 chrome_path = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --new-window %s" browser = webbrowser.get(chrome_path) # 调用多次即可打开多个独立窗口 browser.open("https://www.example.com") browser.open("https://www.baidu.com") # 无痕模式独立窗口只需增加--incognito参数 chrome_incognito_path = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe --incognito --new-window %s" browser_incognito = webbrowser.get(chrome_incognito_path) browser_incognito.open("https://www.example.com")
方案2:完全隔离的独立Chrome窗口(支持多账号登录、进程完全独立)
如果需要每个窗口完全独立(互不干扰Cookie、配置,可同时登录同一站点的不同账号),需要额外增加 --user-data-dir 参数为每个窗口指定独立的用户数据目录,避免Chrome复用进程,示例代码如下:
import webbrowser import tempfile import os chrome_exe = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" # 批量打开5个完全独立的Chrome窗口 site_list = [ "https://www.example.com", "https://www.baidu.com", "https://www.zhihu.com", "https://www.bilibili.com", "https://www.github.com" ] for site in site_list: # 生成临时目录作为当前窗口的独立用户数据目录 temp_dir = tempfile.mkdtemp() # 构造启动参数,如需无痕可增加--incognito launch_param = f'{chrome_exe} --new-window --user-data-dir="{temp_dir}" %s' browser = webbrowser.get(launch_param) browser.open(site) # 若不需要保留窗口数据,程序退出前可删除所有临时目录
注意事项
- 若路径包含空格,需要用引号包裹路径避免解析错误
- 使用临时目录的方案如果手动关闭Chrome后,临时目录不会自动删除,可根据需求在代码中补充清理逻辑
- 所有参数的顺序需要放在网址占位符
%s之前,否则会被识别为网址的一部分
内容的提问来源于stack exchange,提问作者Javier Demario iloreta
相关产品推荐
相关产品推荐

