1. 首页 > 编程开发 > python

不想关闭浏览器,py想重新启动打开一个窗口可以实现吗

要在不关闭当前正在使用的浏览器的情况下进行自动化,直接使用 user-data-dir 是行不通的,因为 Chrome 不允许两个进程同时读写同一个用户配置文件。

这里有两种最佳解决方案,建议你根据需求选择:


方案一:使用“远程调试”模式(最推荐)

这种方法可以接管你当前已经打开的浏览器窗口,或者在你现有的浏览器基础上新开一个受控窗口,且不需要关闭你正在用的网页。

操作步骤:

  1. 完全退出 Chrome 一次(仅为了开启调试端口)。

  2. 按下 Win + R,输入 cmd,执行以下命令手动启动 Chrome:

    chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\automation_profile"

    (注意:这里新建一个空的文件夹路径如 C:\selenum\automation_profile,这样它既有缓存,又不和你日常用的路径冲突)

  3. 在 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赞同其观点或证实其描述。

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:9:30-18:30,节假日休息