使用Appium自动化打开Android设备Chrome浏览器时遇断言错误
解决Appium启动Android Chrome时的AssertionError: Driver capabilities must be defined错误
你遇到的AssertionError: Driver capabilities must be defined是因为传入的capabilities字典缺少Appium初始化Chrome驱动所需的必要默认配置,同时代码里存在方法调用错误。
解决方案
- 合并Chrome默认能力到自定义配置:仅自定义gigafox和基础参数不足以让Appium识别完整的Chrome驱动能力,需要整合
DesiredCapabilities.CHROME中的默认配置 - 修正退出方法的大小写:Python WebDriver的退出方法是小写的
quit(),大写Quit()会触发报错 - 清理无效配置:
gigafox:application为空配置对启动Chrome无意义,可直接移除避免干扰
修改后的完整代码
from __future__ import print_function import sys import time from appium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.desired_capabilities import DesiredCapabilities DC_USER_NAME = 'admin' DC_API_KEY = '' DC_DEVICE_ID = 'd6b54c70-fc07-49a4-9737-11daee82f19c' DC_HOST = 'localhost' AUTOMATION_NAME = 'UiAutomator2' # 先复制Chrome默认能力,再合并自定义配置 caps = DesiredCapabilities.CHROME.copy() caps.update({ 'gigafox:UserName' : DC_USER_NAME, 'gigafox:ApiKey' : DC_API_KEY, 'gigafox:Device' : DC_DEVICE_ID, 'newCommandTimeout' : 1000, 'platformName' : 'Android', 'automationName' : AUTOMATION_NAME }) url = 'http://{0}/Appium'.format(DC_HOST) print('loading driver') driver = webdriver.Remote(url, caps) print('connected.') # 修正为标准的小写退出方法 driver.quit()
关键修改说明
- 通过
DesiredCapabilities.CHROME.copy()获取Chrome的默认配置参数,再用update()合并自定义的gigafox和平台配置,确保capabilities包含Appium所需的所有必要信息 - 移除了无意义的空配置项
gigafox:application,避免Appium解析时出现歧义 - 修复了退出方法的大小写错误,符合Python WebDriver的方法命名规范
内容的提问来源于stack exchange,提问作者Kristofor
相关产品推荐
相关产品推荐

