【Appium】Appium征服安卓自动化:GitHub 10.5k+星开源神器,Python代码实战全解析!

Appium

  • 一、为什么开发者都在用Appium?
  • 二、环境搭建:5分钟极速配置
    • 2.1 核心工具链
    • 2.2 安卓设备连接
  • 三、脚本实战:从零编写自动化操作
    • 3.1 示例1:自动登录微信并发送消息
    • 3.2 示例2:动态滑动屏幕与数据抓取
  • 四、避坑指南
    • 4.1 元素定位优化
    • 4.2 稳定性增强
    • 4.3 云真机集成
  • 五、生态扩展:超越安卓的自动化版图

一、为什么开发者都在用Appium?

  • 万星认证:GitHub超10.5k+星标,活跃社区持续迭代,2025年最新版本支持Appium 2.0生态
  • 真开源·零成本:无商业授权限制,支持Android、iOS、Web等多平台自动化
  • Python友好:无需Java基础,用简洁代码操控手机点击、滑动、输入等复杂操作
  • 无需Root:通过ADB和UIAutomator2直接控制原生应用,绕过系统限制。

二、环境搭建:5分钟极速配置

2.1 核心工具链

Node.js & Appium 2.0:通过NPM一键安装最新版服务器:

npm install -g appium
appium driver install uiautomator2  # 安装安卓驱动

Python依赖:使用appium-python-client库:

pip install appium-python-client selenium

2.2 安卓设备连接

真机调试:开启开发者选项→USB调试→通过adb devices验证连接
模拟器推荐:网易MuMu/Genymotion,性能优化优于原生模拟器

三、脚本实战:从零编写自动化操作

3.1 示例1:自动登录微信并发送消息

from appium import webdriver
from appium.options.android import UiAutomator2Options

capabilities = {
    "platformName": "Android",
    "automationName": "uiautomator2",
    "deviceName": "Your_Device_ID",  # adb devices获取
    "appPackage": "com.tencent.mm",
    "appActivity": ".ui.LauncherUI",
    "noReset": True  # 保留登录态
}

driver = webdriver.Remote('http://localhost:4723', options=UiAutomator2Options().load_capabilities(capabilities))

# 点击微信输入框
search = driver.find_element(by=AppiumBy.ANDROID_UIAUTOMATOR, value='new UiSelector().text("搜索")')
search.click()

# 输入联系人并发送消息
driver.find_element(AppiumBy.ID, "com.tencent.mm:id/search_input").send_keys("测试账号")
driver.find_elements(AppiumBy.CLASS_NAME, "android.widget.TextView")[0].click()
driver.find_element(AppiumBy.ID, "com.tencent.mm:id/chatting_content_et").send_keys("Appium自动化测试成功!")
driver.find_element(AppiumBy.ACCESSIBILITY_ID, "发送").click()

driver.quit()

3.2 示例2:动态滑动屏幕与数据抓取

# 滑动到页面底部
window_size = driver.get_window_size()
driver.swipe(
    start_x=window_size['width']*0.5,
    start_y=window_size['height']*0.8,
    end_x=window_size['width']*0.5,
    end_y=window_size['height']*0.2,
    duration=1000
)

# 抓取列表数据
items = driver.find_elements(AppiumBy.XPATH, '//android.widget.ListView/android.widget.TextView')
for item in items:
    print(f"抓取内容: {item.text}")

四、避坑指南

4.1 元素定位优化

优先使用resource-id(ID定位),避免XPath性能损耗
使用UIAutomatorViewer或Appium Inspector分析页面结构

4.2 稳定性增强

driver.implicitly_wait(15)  # 全局隐式等待
from selenium.common.exceptions import NoSuchElementException
try:
    el = driver.find_element(AppiumBy.ID, "com.example:id/button")
except NoSuchElementException:
    print("元素加载超时,启动重试机制")

4.3 云真机集成

推荐Sonic云真机平台,实现多设备并行测试
阿里云开发者社区提供Appium Desktop镜像快速部署方案

五、生态扩展:超越安卓的自动化版图

跨平台支持:通过appium-chromium-driver实现Chrome/Edge浏览器自动化
IoT设备控制:实验性支持智能电视和车载系统自动化
持续集成:结合Jenkins+Appium实现每日自动化回归测试

你可能感兴趣的:(python,测试,appium,android,自动化)