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

如何向Testdroid/Appium服务器发送Desired Capabilities?含平台名报错解决

咱们一步步来解决你的问题,先从搞定那个烦人的 You must include a platformName capability 错误说起——这个错误的核心原因是你没有传入Appium/Testdroid都要求的必填核心Capability:platformName,不管对接哪台服务器,这个参数都不能少。


1. 如何向Testdroid服务器发送Capabilities

Testdroid本质是基于Appium的云测试平台,你可以把Testdroid专属的Capabilities和标准Appium Capabilities合并,在初始化测试驱动时一起发送,常见场景有两种:

场景1:通过代码直接对接Testdroid云服务器

不管用Python、Java还是其他语言,只需在Desired Capabilities字典/对象中同时加入Testdroid专属参数和标准Appium参数即可:

Python 示例

from appium import webdriver

desired_caps = {
    # 标准Appium必填参数(解决报错的关键)
    "platformName": "Android",  # 或 "iOS"
    # Testdroid专属认证与配置参数
    "testdroid_username": "你的Testdroid账号",
    "testdroid_password": "你的Testdroid密码",
    "testdroid_project": "你的测试项目名称",
    "testdroid_testrun": "测试运行批次名称",
    # 可选:指定测试设备
    "testdroid_device": "Google Pixel 7"
}

# 连接Testdroid的Appium云服务器
driver = webdriver.Remote(
    command_executor='https://appium.testdroid.com/wd/hub',
    desired_capabilities=desired_caps
)

Java 示例

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

public class TestdroidCloudTest {
    public static void main(String[] args) throws Exception {
        DesiredCapabilities caps = new DesiredCapabilities();
        // 标准Appium必填参数
        caps.setCapability("platformName", "Android");
        // Testdroid专属参数
        caps.setCapability("testdroid_username", "你的Testdroid账号");
        caps.setCapability("testdroid_password", "你的Testdroid密码");
        caps.setCapability("testdroid_project", "你的测试项目名称");

        // 连接Testdroid云服务器
        AppiumDriver driver = new AndroidDriver(new URL("https://appium.testdroid.com/wd/hub"), caps);
    }
}

场景2:使用Testdroid CLI工具发送Capabilities

如果你用Testdroid命令行工具启动测试,可通过--capability参数逐个指定:

testdroid run appium --app "your-app.apk" --capability platformName=Android --capability testdroid_project="My Web Test Project"

2. 向Appium服务器发送Desired Capabilities,并同步指定参数到Testdroid

2.1 向本地/自建Appium服务器发送Desired Capabilities

这是Appium的基础操作,直接在初始化驱动时传入包含必要参数的Desired Capabilities即可:

Python 示例

from appium import webdriver

desired_caps = {
    "platformName": "Android",  # 必填,解决你遇到的报错
    "deviceName": "emulator-5554",
    "app": "/path/to/your/app.apk",
    # 你提到的目标参数
    "browserName": "Chrome",  # 仅Web测试需要,App测试可忽略
    "platformVersion": "13",  # 对应你说的version参数
    "javascriptEnabled": True
}

# 连接本地Appium服务器(默认端口4723)
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

Java 示例

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

public class LocalAppiumTest {
    public static void main(String[] args) throws Exception {
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("platformName", "Android");
        caps.setCapability("deviceName", "emulator-5554");
        caps.setCapability("app", "/path/to/your/app.apk");
        // 你指定的参数
        caps.setCapability("browserName", "Chrome");
        caps.setCapability("platformVersion", "13");
        caps.setCapability("javascriptEnabled", true);

        AppiumDriver driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), caps);
    }
}

2.2 将browserName、version、javascriptEnabled、platform同步到Testdroid服务器

Testdroid会自动识别标准Appium Capabilities,只需把这些参数加入到Desired Capabilities中即可,注意参数的对应关系:

  • platform → 对应标准Appium的platformName(比如"platformName": "Android"就是指定测试平台)
  • version → 对应标准Appium的platformVersion(比如"platformVersion": "13"指定系统版本)
  • browserName → 直接传入,Testdroid会据此配置对应浏览器环境(如Chrome、Safari)
  • javascriptEnabled → 作为标准Appium Capability传入,Testdroid会自动启用浏览器的JavaScript支持

提示:如果是原生App测试,browserName参数可以省略,否则Testdroid会尝试启动指定浏览器。

完整对接Testdroid的Python示例(包含所有目标参数):

from appium import webdriver

desired_caps = {
    # 核心必填参数
    "platformName": "Android",  # 对应platform参数
    "platformVersion": "13",     # 对应version参数
    # 你指定的其他参数
    "browserName": "Chrome",
    "javascriptEnabled": True,
    # Testdroid专属参数
    "testdroid_username": "你的账号",
    "testdroid_password": "你的密码",
    "testdroid_project": "Web自动化测试项目"
}

driver = webdriver.Remote('https://appium.testdroid.com/wd/hub', desired_caps)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:39:25