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

如何同时运行多个WebDriver?为何首个Driver获取URL后停止?

关于同时运行多个WebDriver的问题解答

问题2:为何第一个Driver获取URL后程序停止?该如何修复?

原因分析

你的代码通过debuggerAddress尝试连接本地已启动的Chrome调试实例,但存在两个核心问题:

  1. 未预先启动对应端口的Chrome实例:如果923、924端口没有运行带调试模式的Chrome,进程尝试连接时会直接抛出连接异常,导致进程终止,后续逻辑无法执行。
  2. 调试实例冲突风险:即使启动了实例,若多个进程连接同一个调试端口(代码里配置了不同端口,但如果参数错误),会导致会话混乱,引发程序异常停止。

修复方案

方案A:保留调试端口连接,先手动启动Chrome实例

找到Chrome的可执行文件路径,打开命令行分别启动对应端口的调试实例(每个实例需指定独立的用户数据目录,避免冲突):

# Windows示例
chrome.exe --remote-debugging-port=923 --user-data-dir="C:\temp\chrome_923"
chrome.exe --remote-debugging-port=924 --user-data-dir="C:\temp\chrome_924"

# macOS示例
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=923 --user-data-dir="/tmp/chrome_923"
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=924 --user-data-dir="/tmp/chrome_924"

启动完成后再运行你的原代码,即可正常连接多个调试实例。

方案B:直接在进程中启动独立Chrome实例(更推荐)

无需手动预启动Chrome,修改代码去掉debuggerAddress配置,让每个进程自动启动独立的Chrome实例:

from selenium import webdriver
from multiprocessing import Process
import time

num = 2

def get(id):
    # 初始化独立的Chrome实例
    chrome_options = webdriver.ChromeOptions()
    # 可选:指定独立用户目录,避免数据干扰
    chrome_options.add_argument(f"--user-data-dir=/tmp/chrome_profile_{id}")
    driver = webdriver.Chrome(options=chrome_options)
    
    print(f"进程 {id} 启动,访问URL")
    driver.get(f"https://www.google.com?id={id}")
    time.sleep(10)
    driver.quit()  # 退出时关闭整个Chrome实例

if __name__ == '__main__':
    processes = []
    for i in range(num):
        p = Process(target=get, args=(i,))
        processes.append(p)
        p.start()

    # 等待所有进程执行完成
    for p in processes:
        p.join()

问题1:如何同时运行多个WebDriver?

常用两种实现方式,均基于多进程(不推荐多线程,ChromeDriver单线程模型会引发会话冲突):

  • 方式1:连接预启动的Chrome调试实例:如你原代码思路,先按上述方案A的方式启动多个带调试端口的Chrome,再通过多进程分别连接不同端口的实例。适合需要复用已打开Chrome会话的场景。
  • 方式2:多进程启动独立Chrome实例:如方案B的修改代码,每个进程独立初始化ChromeDriver,自动启动新的Chrome窗口。适合无需预启动、需要完全隔离会话的场景,操作更便捷。

注意事项

  • 确保ChromeDriver版本与本地Chrome版本完全匹配,版本不兼容会导致启动失败。
  • 若运行大量实例,需注意系统资源占用,避免内存、CPU过载。
  • 每个实例尽量配置独立的用户数据目录,避免缓存、Cookie、扩展等相互干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:37:44