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

如何在UC模式下跨多脚本复用SeleniumBase Driver实例?

跨脚本复用SeleniumBase UC模式Chrome实例的方案

核心思路

复用已有Chrome实例的关键是利用Chrome的远程调试端口:启动浏览器时指定固定端口,后续脚本通过该端口直接连接到已运行的浏览器进程,而非新建实例。

步骤1:修改启动脚本,开启远程调试

启动浏览器时添加远程调试端口配置,同时固定user_data_dir确保配置文件一致。修改后的启动脚本如下:

from seleniumbase import Driver
from time import sleep

my_user_dir = "C:/ProgramData/Midbots/User Data/Chrome Data"
url = "https://www.midddleman.co/"

def launch_driver():
    # 配置Chrome远程调试端口
    chrome_options = {
        "remote_debugging_port": 9222,
        "user_data_dir": my_user_dir,
    }
    # 启动UC模式浏览器,传入自定义配置
    driver = Driver(uc=True, headless=None, disable_gpu=True, chrome_options=chrome_options)
    driver.uc_open_with_reconnect(url, 5)
    driver.uc_gui_click_captcha()
    sleep(5)
    return driver

if __name__ == "__main__":
    driver = launch_driver()
    # 阻塞脚本,避免浏览器随脚本结束自动关闭
    input("按下回车键关闭浏览器...")
    driver.quit()

步骤2:编写复用实例的脚本

在另一个脚本中,通过指定远程调试端口连接已启动的浏览器,无需重新初始化新实例:

from seleniumbase import Driver

def reuse_driver():
    # 连接到已启动的远程调试端口
    driver = Driver(uc=True, headless=None, remote_debugging_port=9222)
    # 直接操作已有页面,示例为跳转新页面
    driver.get("https://www.example.com")
    print("当前页面标题:", driver.title)
    # 不要调用quit(),避免关闭共享实例
    return driver

if __name__ == "__main__":
    driver = reuse_driver()
    input("按下回车键结束操作...")

关键注意事项

  • 端口唯一性:确保remote_debugging_port(如9222)未被其他进程占用,可更换为其他空闲端口。
  • user_data_dir一致性:两个脚本的user_data_dir路径必须完全相同,否则会启动新的浏览器配置实例。
  • 保持启动脚本运行:启动脚本需通过input()或其他方式阻塞,否则浏览器会随脚本终止而关闭。
  • 并发操作同步:多个复用脚本同时操作时,需注意避免元素操作冲突。

最佳实践

  • 长期复用场景下,可将启动脚本做成守护进程,防止终端关闭导致浏览器退出。
  • 定期清理user_data_dir中的缓存文件,避免因缓存堆积引发实例异常。

内容的提问来源于stack exchange,提问作者Donald Ekpe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:43:19