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

如何为Selenium RemoteWebDriver设置最大连接重试次数?

修改Selenium Grid连接重试次数的方法

Selenium的webdriver.Remote并没有直接提供配置连接重试次数的参数,不过可以通过以下两种方式实现自定义重试逻辑:

方法一:手动实现重试循环

在初始化Remote驱动的代码外层添加循环,捕获连接异常并重复尝试,直到达到设定的重试次数:

from selenium import webdriver
from selenium.common.exceptions import WebDriverException

max_retries = 5  # 自定义重试次数
grid_url = "你的Grid地址"
d = {"browserName": "chrome"}  # 你的capabilities

driver = None
for attempt in range(max_retries):
    try:
        driver = webdriver.Remote(
            command_executor=grid_url,
            desired_capabilities=d,
            keep_alive=False
        )
        print(f"第{attempt+1}次尝试连接成功")
        break
    except WebDriverException as e:
        print(f"第{attempt+1}次尝试失败: {str(e)}")
        if attempt == max_retries - 1:
            raise  # 最后一次失败后抛出异常

# 使用driver进行后续操作

方法二:配置底层requests库的重试策略

Selenium底层依赖requests库与Grid通信,可以通过修改requests.adapters.HTTPAdapter的重试参数来全局设置重试行为:

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
from selenium import webdriver

# 配置重试策略
retry_strategy = Retry(
    total=5,  # 总重试次数
    backoff_factor=1,  # 重试间隔(1秒、2秒、4秒...指数递增)
    status_forcelist=[429, 500, 502, 503, 504],  # 需要重试的HTTP状态码
    allowed_methods=["GET", "POST"]  # 允许重试的请求方法
)

adapter = HTTPAdapter(max_retries=retry_strategy)
http = requests.Session()
http.mount("http://", adapter)
http.mount("https://", adapter)

# 让Selenium使用自定义的session
from selenium.webdriver.remote.remote_connection import RemoteConnection
RemoteConnection._request = http.request

# 初始化Remote驱动
grid_url = "你的Grid地址"
d = {"browserName": "chrome"}
driver = webdriver.Remote(
    command_executor=grid_url,
    desired_capabilities=d,
    keep_alive=False
)

注意:第二种方法是全局修改requests的重试行为,会影响所有使用该session的请求,包括Selenium的其他接口调用。

内容的提问来源于stack exchange,提问作者Steven Schütz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:37:08