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

Selenium Grid中desired_capabilities参数报错TypeError求助

解决Selenium Grid中webdriver.Remote的desired_capabilities参数报错问题

在使用Selenium Grid(LambdaTest)进行跨浏览器测试时,编写webdriver.Remote代码时遇到编辑器警告"Unexpected argument",运行时抛出TypeError: __init__() got an unexpected keyword argument 'desired_capabilities'错误。

问题原因

Selenium 4.x 重构了RemoteWebDriver的构造函数,移除了desired_capabilities这个关键字参数,改用options或capabilities参数来传递浏览器配置。

解决方案

有两种可行的修改方式,推荐使用更符合现代Selenium规范的options方式:

方式1:使用对应浏览器的Options类(推荐)

通过浏览器专属的Options类配置能力,再传递给webdriver.Remote的options参数:

首先导入所需的Options类:

from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.edge.options import Options as EdgeOptions

修改后的fixture代码:

@pytest.fixture(params=["chrome", "firefox", "edge"])
def driver_initialization(request):
    """
    Initiate Driver for Selenium Grid on LambdaTest
    :param request:
    """
    remote_url = "你的LambdaTest Grid地址"  # 确保该变量已定义
    if request.param == "chrome":
        options = ChromeOptions()
        options.set_capability("LT: Options", chrome_cap)
        driver = webdriver.Remote(
            command_executor=RemoteConnection(remote_url),
            options=options
        )
    elif request.param == "firefox":
        options = FirefoxOptions()
        options.set_capability("LT: Options", firefox_cap)
        driver = webdriver.Remote(
            command_executor=RemoteConnection(remote_url),
            options=options
        )
    elif request.param == "edge":
        options = EdgeOptions()
        options.set_capability("LT: Options", edge_cap)
        driver = webdriver.Remote(
            command_executor=RemoteConnection(remote_url),
            options=options
        )
    request.cls.driver = driver
    yield
    driver.quit()  # 用quit()彻底终止会话,避免Grid残留资源

方式2:直接使用capabilities参数

如果不想改动太多代码,也可以将desired_capabilities替换为capabilities参数:

driver = webdriver.Remote(
    command_executor=RemoteConnection(remote_url),
    capabilities={"LT: Options": desired_caps}
)

注意事项

  • 确认你的Selenium版本是4.x及以上,该版本才会移除desired_capabilities参数
  • 建议使用driver.quit()替代driver.close(),确保彻底关闭Grid上的测试会话,避免资源浪费
  • LambdaTest的配置需要正确嵌套在"LT: Options"键下,这部分你的原有代码是正确的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:17:04