要在不关闭当前正在使用的浏览器的情况下进行自动化,直接使用 user-data-dir 是行不通的,因为 Chrome 不允许两个进程同时读写同一个用户配置文件。
这里有两种最佳解决方案,建议你根据需求选择:
方案一:使用“远程调试”模式(最推荐)
这种方法可以接管你当前已经打开的浏览器窗口,或者在你现有的浏览器基础上新开一个受控窗口,且不需要关闭你正在用的网页。
操作步骤:
-
完全退出 Chrome 一次(仅为了开启调试端口)。
-
按下
Win + R,输入cmd,执行以下命令手动启动 Chrome:chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\automation_profile"(注意:这里新建一个空的文件夹路径如
C:\selenum\automation_profile,这样它既有缓存,又不和你日常用的路径冲突) -
在 Python 中连接这个已经打开的浏览器。
Python 代码:
Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
def connect_to_existing_chrome():
options = Options()
# 连接到刚才手动启动的 9222 端口
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# 这一步会直接在你已经打开的那个 Chrome 窗口里新开一个标签页
driver.get("https://www.google.com")
print("已成功接管现有浏览器窗口!")
if __name__ == "__main__":
connect_to_existing_chrome()
方案二:创建一个“自动化专用”的独立分身
如果你想让自动化脚本运行在一个完全独立的窗口里,互不干扰,你可以指定一个新的临时路径。
优点:不需要关闭你现在的浏览器。
缺点:第一次打开时没有登录信息,你需要手动在弹出的自动化窗口里登录一次,以后它就会记住。
Python 代码:
Python
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def open_independent_chrome():
options = Options()
# 创建一个专门给脚本用的文件夹(比如在你的脚本目录下创建一个 automation_data 文件夹)
script_dir = os.path.dirname(os.path.abspath(__file__))
automation_user_data = os.path.join(script_dir, "automation_temp_profile")
options.add_argument(f"--user-data-dir={automation_user_data}")
# 加上这个可以防止和主浏览器冲突
options.add_argument("--no-first-run")
options.add_argument("--no-default-browser-check")
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
print("这是一个独立的分身窗口,你可以在这里登录,下次运行它还会记着。")
if __name__ == "__main__":
open_independent_chrome()
总结与建议
-
如果你想直接控制你现在盯着看的这个窗口,用 方案一。
-
如果你想让脚本在旁边自己玩,不打扰你正常上网,用 方案二(只需在第一次运行时手动登录一次,以后就变“有缓存”了)。
声明:本文网友投稿,观点仅代表作者本人,不代表鲁班SEO赞同其观点或证实其描述。
