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

使用Selenium 4.10与Appium时遇TypeError:WebDriver含意外参数desired_capabilities

问题分析与解决

错误本质

这是Appium Python客户端与Selenium 4.10+版本不兼容引发的问题,不属于原生Python语法错误。

错误信息:

HOOK-ERROR in before_scenario: TypeError: WebDriver.__init__() got an unexpected keyword argument 'desired_capabilities'

原因

Selenium 4.10.0对webdriver.Remote的初始化参数做了重大调整:不再支持直接传入desired_capabilities参数,转而要求使用options参数传递配置。而你当前使用的Appium-Python-Client 2.10.1版本,内部仍在沿用旧的Selenium调用逻辑,导致参数不匹配报错。

解决方案

1. 升级Appium Python客户端

将Appium-Python-Client升级到支持Selenium 4.10+的版本(最低要求2.11.0,建议直接安装最新稳定版):

pip install --upgrade Appium-Python-Client

2. 调整Driver初始化代码(推荐规范写法)

改用AppiumOptions来封装capabilities,适配Selenium新的参数要求:

from appium.options.android import UiAutomator2Options

capabilities = {
    "platformName": "Android",
    "appium:platformVersion": "11.0",
    "appium:deviceName": "emulator-5554",
    "appium:app": "/Users/faithberroya/Downloads/test.apk",
    "appium:automationName": "UiAutomator2",
    "appium:appPackage": "com.test.school.assignment.rc",
    "appium:appActivity": "com.test.school.assignment.ui.SplashActivity"
}

# 用AppiumOptions封装capabilities
options = UiAutomator2Options().load_capabilities(capabilities)

# 初始化driver
context.driver = webdriver.Remote("http://0.0.0.0:4723/wd/hub", options=options)
context.driver.implicitly_wait(20)
context.app = Application(context.driver)

补充说明

你代码中targetOS = self.driver.capabilities['platformName']的写法本身没有问题,只要Driver正常初始化,就能正确获取到platformName参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:30:30