{
  "schemaVersion": "1.0",
  "item": {
    "slug": "mobile-appium-test",
    "name": "Mobile Appium Test",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/never112/mobile-appium-test",
    "canonicalUrl": "https://clawhub.ai/never112/mobile-appium-test",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/mobile-appium-test",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mobile-appium-test",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/mobile-appium-test"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/mobile-appium-test",
    "agentPageUrl": "https://openagent3.xyz/skills/mobile-appium-test/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mobile-appium-test/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mobile-appium-test/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Mobile Appium Test",
        "body": "Android UI automation testing using Appium with USB-connected real devices."
      },
      {
        "title": "Prerequisites",
        "body": "Required tools (must be installed):\n\nADB (Android Debug Bridge) - part of Android SDK\nAppium Server (v2.x recommended)\nAppium Doctor (npm install -g @appium/doctor)\n\nVerify installation:\n\nadb version\nappium --version\nappium doctor"
      },
      {
        "title": "Device Connection",
        "body": "GoalCommandList connected devicesadb devicesGet device infoadb shell getprop ro.build.version.releaseRestart ADB serveradb kill-server && adb start-serverUSB debug authorizationCheck phone for authorization prompt"
      },
      {
        "title": "Appium Server",
        "body": "GoalCommandStart Appiumappium --address 127.0.0.1 --port 4723Start with relaxed securityappium --relaxed-securityCheck Appium statuscurl http://127.0.0.1:4723/status"
      },
      {
        "title": "Common Appium Operations",
        "body": "GoalEndpoint/ActionStart sessionPOST /session with capabilitiesFind elementPOST /session/{id}/elementClick elementPOST /session/{id}/element/{id}/clickSend keysPOST /session/{id}/element/{id}/valueTake screenshotGET /session/{id}/screenshotGet page sourceGET /session/{id}/sourceQuit sessionDELETE /session/{id}"
      },
      {
        "title": "1. Verify Device Connection",
        "body": "adb devices\n\nEnsure device shows device status (not unauthorized or offline)."
      },
      {
        "title": "2. Start Appium Server",
        "body": "appium --address 127.0.0.1 --port 4723 --relaxed-security"
      },
      {
        "title": "3. Run Test",
        "body": "Use desired capabilities for USB device:\n\n{\n  \"platformName\": \"Android\",\n  \"deviceName\": \"device\",\n  \"udid\": \"<device-udid>\",\n  \"app\": \"/path/to/app.apk\",\n  \"automationName\": \"UiAutomator2\",\n  \"noReset\": true\n}"
      },
      {
        "title": "4. Common Test Scenarios",
        "body": "Install app: adb install app.apk\nLaunch app: Appium appActivity capability\nFind element by ID: find_element(\"id\", \"com.example:id/button\")\nFind element by text: find_element(\"xpath\", \"//*[@text='Submit']\")\nSwipe: Appium touch action\nGet logs: adb logcat"
      },
      {
        "title": "Error Handling",
        "body": "ErrorCauseSolutiondevice not foundUSB connection issueCheck adb devices, restart ADB serverunauthorizedUSB debug not authorizedUnlock phone, authorize the computerno such elementElement not foundUse find_elements with wait, check page sourcesession not createdCapability mismatchVerify UDID, platform version, app path"
      },
      {
        "title": "Notes",
        "body": "Always use UdID from adb devices for real device testing\nUse UiAutomator2 as automation engine for Android\nnoReset: true preserves app state between sessions\nFor WiFi debugging: adb tcpip 5555 then adb connect <IP>:5555"
      }
    ],
    "body": "Mobile Appium Test\n\nAndroid UI automation testing using Appium with USB-connected real devices.\n\nPrerequisites\n\nRequired tools (must be installed):\n\nADB (Android Debug Bridge) - part of Android SDK\nAppium Server (v2.x recommended)\nAppium Doctor (npm install -g @appium/doctor)\n\nVerify installation:\n\nadb version\nappium --version\nappium doctor\n\nQuick Reference\nDevice Connection\nGoal\tCommand\nList connected devices\tadb devices\nGet device info\tadb shell getprop ro.build.version.release\nRestart ADB server\tadb kill-server && adb start-server\nUSB debug authorization\tCheck phone for authorization prompt\nAppium Server\nGoal\tCommand\nStart Appium\tappium --address 127.0.0.1 --port 4723\nStart with relaxed security\tappium --relaxed-security\nCheck Appium status\tcurl http://127.0.0.1:4723/status\nCommon Appium Operations\nGoal\tEndpoint/Action\nStart session\tPOST /session with capabilities\nFind element\tPOST /session/{id}/element\nClick element\tPOST /session/{id}/element/{id}/click\nSend keys\tPOST /session/{id}/element/{id}/value\nTake screenshot\tGET /session/{id}/screenshot\nGet page source\tGET /session/{id}/source\nQuit session\tDELETE /session/{id}\nTypical Workflow\n1. Verify Device Connection\nadb devices\n\n\nEnsure device shows device status (not unauthorized or offline).\n\n2. Start Appium Server\nappium --address 127.0.0.1 --port 4723 --relaxed-security\n\n3. Run Test\n\nUse desired capabilities for USB device:\n\n{\n  \"platformName\": \"Android\",\n  \"deviceName\": \"device\",\n  \"udid\": \"<device-udid>\",\n  \"app\": \"/path/to/app.apk\",\n  \"automationName\": \"UiAutomator2\",\n  \"noReset\": true\n}\n\n4. Common Test Scenarios\nInstall app: adb install app.apk\nLaunch app: Appium appActivity capability\nFind element by ID: find_element(\"id\", \"com.example:id/button\")\nFind element by text: find_element(\"xpath\", \"//*[@text='Submit']\")\nSwipe: Appium touch action\nGet logs: adb logcat\nError Handling\nError\tCause\tSolution\ndevice not found\tUSB connection issue\tCheck adb devices, restart ADB server\nunauthorized\tUSB debug not authorized\tUnlock phone, authorize the computer\nno such element\tElement not found\tUse find_elements with wait, check page source\nsession not created\tCapability mismatch\tVerify UDID, platform version, app path\nNotes\nAlways use UdID from adb devices for real device testing\nUse UiAutomator2 as automation engine for Android\nnoReset: true preserves app state between sessions\nFor WiFi debugging: adb tcpip 5555 then adb connect <IP>:5555"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/never112/mobile-appium-test",
    "publisherUrl": "https://clawhub.ai/never112/mobile-appium-test",
    "owner": "never112",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/mobile-appium-test",
    "downloadUrl": "https://openagent3.xyz/downloads/mobile-appium-test",
    "agentUrl": "https://openagent3.xyz/skills/mobile-appium-test/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mobile-appium-test/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mobile-appium-test/agent.md"
  }
}