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

为何Selenium代码仅打开同一Chrome窗口标签?如何开启两个独立窗口

问题原因

你使用uc.Chrome(undetected-chromedriver)创建多个实例时,默认会复用同一个Chrome的用户数据目录,导致新的driver直接附加到已有窗口打开标签页,而非启动独立窗口——Chrome依靠用户数据目录区分不同会话,共享目录就会共用同一个会话环境。

解决方法

给每个driver实例指定独立的用户数据目录,彻底隔离会话:

import tempfile
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import undetected_chromedriver as uc

link = "你的目标链接"

# 第一个窗口:创建专属临时用户目录
temp_dir_0 = tempfile.mkdtemp()
options_0 = uc.ChromeOptions()
options_0.add_argument("--disable-extensions")
options_0.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
options_0.add_argument(f"--user-data-dir={temp_dir_0}")

driver_0 = uc.Chrome(service=Service(ChromeDriverManager().install()), options=options_0)
driver_0.get(link)

# 第二个窗口:使用另一个独立临时目录
temp_dir_1 = tempfile.mkdtemp()
options_1 = uc.ChromeOptions()
options_1.add_argument("--disable-extensions")
options_1.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
options_1.add_argument(f"--user-data-dir={temp_dir_1}")

driver_1 = uc.Chrome(service=Service(ChromeDriverManager().install()), options=options_1)
driver_1.get(link)

额外技巧:可以给每个配置添加--new-window参数,进一步确保打开新窗口,但核心还是靠独立用户目录保证会话隔离:

options.add_argument("--new-window")

注意事项

  • 临时目录会保留在系统中,程序结束后可以通过shutil.rmtree(temp_dir_0)和shutil.rmtree(temp_dir_1)手动清理。
  • 不要复用同一个ChromeOptions对象,每个driver单独创建配置,避免参数共享导致的会话复用问题。

内容的提问来源于stack exchange,提问作者E-man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:12:41