你遇到的错误:
TypeError: missing 1 required keyword-only argument: 'options'
(instance of driver `options.Options` class)
这是 Appium-Python-Client 版本升级带来的 API 不兼容问题。
你从版本 1.5 升级到了 5.1.1,这是一个非常大的版本跳跃,其中 Appium 客户端库进行了重大更新(主要是与 Selenium 的整合和重构)。
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': 'emulator-5554',
'appPackage': 'com.example.app',
'appActivity': '.MainActivity'
}
driver = webdriver.Remote('http://localhost:4723', desired_caps)
这个写法在新版本中已经不被支持了!
现在要求使用 options
参数来代替直接传入 desired_caps
,这与新版 Selenium 的风格一致。
你需要将原来的 desired_caps
放入一个 options
对象中。
from appium import webdriver
from appium.options.android import UiAutomator2Options
# 设置 Desired Capabilities
desired_caps = {
'platformName': 'Android',
'deviceName': 'emulator-5554',
'appPackage': 'com.example.app',
'appActivity': '.MainActivity',
'automationName': 'UiAutomator2',
'noReset': True
}
# 使用新的 Options 类封装
options = UiAutomator2Options().load_capabilities(desired_caps)
# 创建 WebDriver 实例
driver = webdriver.Remote(
command_executor='http://localhost:4723',
options=options
)
print("Driver started:", driver)
注意事项 | 说明 |
---|---|
UiAutomator2Options |
Android 测试时推荐使用这个类 |
options 是必须参数 |
新版要求必须使用 options 而不是 desired_caps |
command_executor |
就是你的 Appium Server 地址:http://localhost:4723 |
如果你暂时不想改代码,可以考虑降级到旧版本:
pip install Appium-Python-Client==1.5.0
但这只是临时方案,建议尽快迁移到新版 API。
问题 | 解决方法 |
---|---|
TypeError: missing keyword-only argument 'options' | 使用 options 参数代替 desired_caps |
Appium Python Client 5.1.1 兼容性问题 | 使用 UiAutomator2Options.load_capabilities() 包装 desired_caps |
推荐做法 | 使用新版 API,适配未来更新 |
如果你愿意贴出你的完整代码片段,我可以帮你逐行修改成兼容 5.1.1 的写法。欢迎继续提问!