使用Gigafox运行自动化脚本时遇Driver capabilities断言错误
解决Gigafox替代Appium时的“Driver capabilities must be defined”错误
问题说明
用Gigafox替换Appium运行自动化脚本时,不管是测试浏览器还是应用,都会抛出如下错误:Assert self.caps, 'Driver capabilities must be defined' AssertionError: Driver capabilities must be defined
试过Chrome配置、应用包名等多种设置,问题依然存在,脚本代码如下:
from __future__ import print_function import sys import time from appium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities GF_USER_NAME = 'admin' GF_API_KEY = '' GF_DEVICE_ID = '1edcc865-60d9-4574-b46f-96070af21b8a' GF_HOST = '192.168.0.162' # These variables probably don't need change unless you change the app or # the way you use Appium. #APP_PACKAGE = 'com.fisglobal.d1amerismobile.sit/com.fisglobal.d1amerismobile.sit.MainActivity' #APP_ACTIVITY = 'com.fisglobal.d1amerismobile.sit/com.fisglobal.d1amerismobile.sit.MainActivity' AUTOMATION_NAME = 'UiAutomator2' #desired_caps = DesiredCapabilities.CHROME desired_capabilities = { 'gigafox:UserName' : GF_USER_NAME, 'gigafox:ApiKey' : GF_API_KEY, 'gigafox:Device' : GF_DEVICE_ID, 'gigafox:application' : "", 'appPackage' : "", 'appActivity' : "", 'browserName' : "Chrome", 'newCommandTimeout' : 20000, 'platformName' : "Android", 'automationName' : AUTOMATION_NAME } #url used to connect to the host server where the device is url = 'http://{0}/Appium'.format(GF_HOST) print('loading driver') #Starts the driver to establish connection to device driver = webdriver.Remote(url, desired_capabilities) print('connected.') time.sleep(10) #Sets the site the browser will open driver.get("https://www.appium.io") print('connected.') time.sleep(10) driver.quit()
问题原因与修复方案
这个错误本质是Gigafox无法识别有效能力配置,你的脚本存在几个关键问题:
- Gigafox参数命名错误:
gigafox:application需改为gigafox:Application(首字母大写),Gigafox专属参数区分大小写。 - 空值参数干扰:同时保留
appPackage、appActivity、gigafox:application空字符串,导致驱动无法判断测试场景,需根据测试目标清理无效空值。 - API Key未配置:
GF_API_KEY为空会导致Gigafox认证失败,进而影响能力解析,必须填写有效API Key。
浏览器测试场景修复配置
如果测试Chrome,删除所有App相关空参数,保留浏览器配置:
desired_capabilities = { 'gigafox:UserName': GF_USER_NAME, 'gigafox:ApiKey': GF_API_KEY, # 填写你的Gigafox有效API Key 'gigafox:Device': GF_DEVICE_ID, 'browserName': "Chrome", 'newCommandTimeout': 20000, 'platformName': "Android", 'automationName': AUTOMATION_NAME }
应用测试场景修复配置
如果测试App,删除browserName,填写正确的应用包名、启动Activity,同时gigafox:Application需填写应用在Gigafox中的名称或ID:
desired_capabilities = { 'gigafox:UserName': GF_USER_NAME, 'gigafox:ApiKey': GF_API_KEY, # 填写有效API Key 'gigafox:Device': GF_DEVICE_ID, 'gigafox:Application': "你的应用在Gigafox中的名称或ID", # 不能为空 'appPackage': "com.fisglobal.d1amerismobile.sit", 'appActivity': ".MainActivity", # 无需重复包名,简化格式 'newCommandTimeout': 20000, 'platformName': "Android", 'automationName': AUTOMATION_NAME }
另外需检查Gigafox连接URL,默认端口为8080,若GF_HOST未包含端口,需修改为http://{0}:8080/Appium。
内容的提问来源于stack exchange,提问作者Kristofor
相关产品推荐
相关产品推荐

