返回 Skill 列表
extension
分类: 开发与工程无需 API Key

robotframework-appium-skill

指导AI代理为iOS和Android原生应用、混合应用以及移动浏览器创建AppiumLibrary测试。在被问及移动测试、Appium或移动应用自动化时加载。

person作者: jakexiaohubgithub

AppiumLibrary Skill for Robot Framework

Quick Reference

AppiumLibrary enables mobile app testing on iOS and Android using Appium automation.

Installation

# Install the library
pip install robotframework-appiumlibrary

# Install Appium server (requires Node.js)
npm install -g appium

# Install platform drivers
appium driver install uiautomator2    # Android
appium driver install xcuitest        # iOS

Appium Server

Appium server must be running before tests:

appium                    # Start with defaults
appium server             # Alternative
appium --port 4724        # Custom port

Default URL: http://127.0.0.1:4723

Library Import

*** Settings ***
Library    AppiumLibrary

Android Quick Start

Open Android App

Open Application    http://127.0.0.1:4723
...    platformName=Android
...    platformVersion=13
...    deviceName=emulator-5554
...    automationName=UiAutomator2
...    app=${CURDIR}/app.apk

Android Locators (Priority Order)

# 1. accessibility_id (RECOMMENDED - stable)
Click Element    accessibility_id=login_button

# 2. id (resource-id)
Click Element    id=com.example:id/login_button
Click Element    id=login_button                    # Short form if unique

# 3. xpath
Click Element    xpath=//android.widget.Button[@text='Login']

# 4. android UIAutomator2 selector
Click Element    android=new UiSelector().text("Login")

# 5. class name
Click Element    class=android.widget.Button

iOS Quick Start

Open iOS App

Open Application    http://127.0.0.1:4723
...    platformName=iOS
...    platformVersion=17.0
...    deviceName=iPhone 15
...    automationName=XCUITest
...    app=${CURDIR}/MyApp.app
...    udid=auto                                    # For real devices

iOS Locators (Priority Order)

# 1. accessibility_id (RECOMMENDED - stable)
Click Element    accessibility_id=loginButton

# 2. name
Click Element    name=Login

# 3. ios predicate string
Click Element    ios=type == 'XCUIElementTypeButton' AND name == 'Login'

# 4. ios class chain (fast)
Click Element    ios=**/XCUIElementTypeButton[`name == 'Login'`]

# 5. xpath
Click Element    xpath=//XCUIElementTypeButton[@name='Login']

# 6. class name
Click Element    class=XCUIElementTypeButton

Essential Keywords

Element Interaction

Click Element           locator
Click Text              visible_text
Input Text              locator    text_to_enter
Clear Text              locator
Long Press              locator    duration=1000

Getting Element Content

${text}=    Get Text              locator
${attr}=    Get Element Attribute    locator    attribute_name
${count}=   Get Matching Xpath Count    //android.widget.Button

Waits

Wait Until Element Is Visible       locator    timeout=10s
Wait Until Page Contains            text       timeout=10s
Wait Until Page Contains Element    locator    timeout=10s

Verification

Element Should Be Visible       locator
Element Should Be Enabled       locator
Page Should Contain Text        expected_text
Page Should Contain Element     locator
Element Text Should Be          locator    expected_text

Screenshots

Capture Page Screenshot    filename.png
Capture Page Screenshot    ${OUTPUT_DIR}/screenshots/screen.png

Get Page Source (View Hierarchy)

Useful for finding locators and debugging:

${source}=    Get Source
Log    ${source}

Basic Gestures

# Scroll
Scroll Down
Scroll Up

# Swipe (start_x, start_y, end_x, end_y, duration_ms)
Swipe    500    1500    500    500    1000    # Swipe up

# Long press
Long Press    locator    duration=2000

# Tap coordinates
Click A Point    500    800

Android Scroll to Element (UIAutomator2)

# Automatically scrolls to find element!
Click Element    android=new UiScrollable(new UiSelector().scrollable(true)).scrollIntoView(new UiSelector().text("Settings"))

Context Switching (Hybrid Apps)

# Check current context
${context}=    Get Current Context
Log    Current: ${context}

# List all contexts
@{contexts}=    Get Contexts
Log Many    @{contexts}

# Switch to webview
Switch To Context    WEBVIEW_com.example.app

# Switch back to native
Switch To Context    NATIVE_APP

Mobile Browser Testing

Android Chrome

Open Application    http://127.0.0.1:4723
...    platformName=Android
...    deviceName=emulator-5554
...    automationName=UiAutomator2
...    browserName=Chrome

Go To Url    https://example.com
Input Text    id=username    admin
Click Element    css=button[type='submit']

iOS Safari

Open Application    http://127.0.0.1:4723
...    platformName=iOS
...    deviceName=iPhone 15
...    automationName=XCUITest
...    browserName=Safari

Go To Url    https://example.com

Session Management

# Close app but keep session
Close Application

# Close app and end session
Quit Application

# Reset app (clear data)
Reset Application

# Background/foreground
Background App    5    # Background for 5 seconds

When to Load Additional References

Load additional references based on your needs:

| Need | Reference File | |------|----------------| | Android locator strategies | references/locators-android.md | | iOS locator strategies | references/locators-ios.md | | Device capabilities setup | references/device-capabilities.md | | Gestures and scrolling | references/gestures-touch.md | | iOS-specific features | references/ios-specific.md | | Android-specific features | references/android-specific.md | | Complete keyword list | references/keywords-reference.md | | Common issues and solutions | references/troubleshooting.md |