保姆级教你搭建 Python + Appium 环境并实现简单的 App 自动化

Appium 是一个开源的移动应用自动化测试框架,它支持多种平台(iOS、Android、Windows)上的应用自动化。通过 Appium,我们可以使用 Python 编写自动化测试脚本,控制和测试移动应用。

在本教程中,我们将逐步搭建 Python + Appium 环境,并实现一个简单的自动化测试案例。通过这个教程,你将学会如何在本地环境中配置 Appium,以及如何用 Python 控制移动应用,完成一些基本的自动化任务。


一、环境搭建

首先,我们需要搭建一个支持 Python 和 Appium 的自动化环境。以下是详细的步骤。

1.1 安装 Java 开发环境

Appium 是基于 Java 编写的,因此需要安装 Java 开发工具包 (JDK)。

  1. 下载并安装 JDK:访问 Oracle JDK 下载页面 下载适合你操作系统的版本。
  2. 安装后,设置 JAVA_HOME 环境变量:
    • 在 Windows 中:
      右键点击 此电脑 → 属性 → 高级系统设置 → 环境变量 → 新建 系统变量:JAVA_HOME = C:\Program Files\Java\jdk-14.0.2
    • 在 macOS/Linux 中:
      编辑 .bashrc 或 .zshrc 文件,添加以下行:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH
  3. 验证 Java 安装:
    在命令行输入 java -version,检查是否成功安装。

1.2 安装 Android SDK

为了运行 Android 应用的自动化测试,我们需要安装 Android SDK

  1. 下载并安装 Android Studio:从 Android Studio 下载页面 下载并安装 Android Studio。
  2. 安装 Android SDK:安装完成后,打开 Android Studio,在 SDK Manager 中下载 Android SDK 和 Android Virtual Device (AVD)
  3. 配置 Android 环境变量:
    • 在 Windows 中:ANDROID_HOME = C:\Users\<YourUserName>\AppData\Local\Android\Sdk PATH = C:\Users\<YourUserName>\AppData\Local\Android\Sdk\platform-tools;C:\Users\<YourUserName>\AppData\Local\Android\Sdk\tools;...
    • 在 macOS/Linux 中:
      编辑 .bashrc 或 .zshrc 文件,添加:export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH

1.3 安装 Appium 和 Node.js

  1. 安装 Node.js:Appium 是基于 Node.js 的,因此首先需要安装 Node.js。在安装时选择 LTS 版本。
  2. 安装 Appium
    打开命令行,执行以下命令安装 Appium:npm install -g appium 安装完成后,可以通过 appium 命令来启动 Appium 服务。

1.4 安装 Python 和相关库

  1. 安装 Python:从 Python 官网 下载并安装最新版本的 Python(确保选中 Add Python to PATH)。
  2. 安装 Appium-Python-Client
    打开命令行,执行以下命令来安装 Appium 的 Python 客户端库:pip install Appium-Python-Client

二、Appium 环境验证

  1. 启动 Appium 服务器:
    在命令行中运行:appium 启动 Appium 服务器后,它会显示服务的相关信息(如端口号等)。你可以看到类似如下的输出:Appium REST http interface listener started on 0.0.0.0:4723
  2. 启动模拟器:
    如果你在 Android 上进行自动化测试,可以启动 Android 模拟器。你可以使用 Android Studio 来启动模拟器,或者通过命令行运行:emulator -avd <AVD_NAME> 在模拟器中安装你要自动化测试的 APK。
  3. 启动 Appium Desktop(可选):
    Appium 也提供了一个桌面 GUI 工具,可以通过它来启动 Appium 服务并管理设备连接,方便调试。

三、编写 Python 自动化测试脚本

在安装好所有环境之后,我们可以开始编写一个简单的 Python 自动化测试脚本。以下是一个使用 Appium 控制 Android 模拟器打开一个应用并执行点击操作的例子。

3.1 创建测试脚本

  1. 在你的工作目录下创建一个 Python 脚本(如 appium_test.py)。
  2. 编写以下代码:
from appium import webdriver
import time

# 配置 Appium 驱动
desired_caps = {
    'platformName': 'Android',  # 平台名称
    'platformVersion': '10',  # Android 版本
    'deviceName': 'emulator-5554',  # 设备名称
    'appPackage': 'com.example.android',  # 要测试的应用的包名
    'appActivity': '.MainActivity',  # 应用的入口 Activity
    'noReset': True,  # 启动时不重置应用
    'automationName': 'UiAutomator2',  # 使用 UiAutomator2 自动化框架
}

# 连接 Appium 服务
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 等待应用加载
time.sleep(5)

# 执行操作:例如点击一个按钮
button = driver.find_element_by_id('com.example.android:id/button')  # 按钮的 ID
button.click()

# 等待 2 秒
time.sleep(2)

# 关闭 Appium 会话
driver.quit()

3.2 解释代码

  1. desired_caps:包含了设备和应用的相关信息(如平台、版本、包名、Activity等)。这些信息用于告诉 Appium 哪个设备和应用进行交互。
  2. webdriver.Remote:连接到本地的 Appium 服务(默认是 http://localhost:4723/wd/hub),并根据 desired_caps 中的配置启动应用。
  3. driver.find_element_by_id:通过元素的 ID 查找应用中的按钮。你可以使用不同的定位方式,如 find_element_by_xpathfind_element_by_class_name 等。
  4. button.click():模拟点击操作。
  5. driver.quit():结束测试,关闭 Appium 会话。

3.3 运行测试

在命令行中运行以下命令来启动测试脚本:

python appium_test.py

如果一切配置正确,你的 Android 模拟器将启动应用,自动执行点击操作,并且测试结束后关闭应用。


四、常见问题和调试

4.1 设备连接问题

  • 问题:设备无法连接到 Appium。
  • 解决:确保设备通过 USB 连接到电脑,并且启用了 开发者选项 和 USB 调试。可以通过 adb devices 命令检查设备是否连接。

4.2 元素定位问题

  • 问题:脚本找不到元素。
  • 解决:使用 Appium Desktop 或 uiautomatorviewer 工具来检查元素的 ID、XPath 等属性。

4.3 版本不匹配

  • 问题:Android 或 Appium 版本不兼容。
  • 解决:确保安装的 Android SDK、Appium 和设备的版本匹配,或者尝试使用 Appium 的不同版本。

五、总结

通过本教程,我们已经完成了 Python + Appium 环境的搭建,并实现了一个简单的 Android 应用自动化测试。你学到了以下内容:

  • 如何安装和配置 Appium 环境。
  • 如何编写 Python 自动化脚本。
  • 如何使用 Appium 控制 Android 模拟器执行基本的操作。

通过这些基础的知识,你可以开始编写更加复杂的自动化脚本,并进行更多高级的测试操作。如果你有更多的需求,如 iOS 自动化测试,也可以通过类似的步骤进行配置。