Python+Appium自动化测试环境搭建与实战指南

📅 2026/7/22 13:10:14
Python+Appium自动化测试环境搭建与实战指南
1. 环境准备搭建PythonAppium自动化测试基础在开始使用Python和Appium控制模拟器之前我们需要先搭建好开发环境。这个过程看似简单但实际操作中会遇到各种坑我结合自己多次安装的经验整理出一套可靠的配置方案。1.1 Python环境安装与配置Python是自动化测试的核心语言建议使用Python 3.7及以上版本。安装时务必勾选Add Python to PATH选项这样可以在任何目录下运行Python命令。安装完成后在命令行输入python --version验证是否安装成功。注意如果你同时安装了多个Python版本建议使用虚拟环境来隔离不同项目的依赖。可以使用python -m venv myenv创建虚拟环境然后通过myenv\Scripts\activate(Windows)或source myenv/bin/activate(Mac/Linux)激活。1.2 Appium Server安装Appium是一个开源的移动应用自动化测试框架支持iOS和Android平台。安装Appium有两种方式通过npm安装需要先安装Node.jsnpm install -g appium下载Appium Desktop客户端推荐新手使用从Appium官网下载对应操作系统的安装包安装后可以直接启动图形界面方便查看日志和调试安装完成后在命令行输入appium -v检查版本号确认安装成功。1.3 模拟器选择与配置市面上有多种Android模拟器可供选择根据我的测试经验推荐以下几种雷电模拟器性能较好兼容性强MuMu模拟器网易出品稳定性高官方Android Studio模拟器最接近原生系统安装模拟器后需要确保adb工具可以识别设备。在命令行输入adb devices应该能看到连接的模拟器设备ID。2. Appium环境配置与连接模拟器2.1 安装必要的Python库在Python环境中我们需要安装几个关键库pip install Appium-Python-Client seleniumAppium-Python-Client是Appium的Python客户端库而selenium则是Web自动化测试的基础库。2.2 编写第一个Appium测试脚本下面是一个最基本的PythonAppium脚本用于连接模拟器并打开设置应用from appium import webdriver desired_caps { platformName: Android, platformVersion: 11, # 模拟器的Android版本 deviceName: emulator-5554, # adb devices显示的设备名 appPackage: com.android.settings, appActivity: .Settings } driver webdriver.Remote(http://localhost:4723/wd/hub, desired_caps)2.3 常见连接问题排查在实际操作中经常会遇到连接失败的情况。以下是一些常见问题及解决方法设备未识别确保模拟器已启动并运行adb devices确认设备可见端口冲突Appium默认使用4723端口确保没有被其他程序占用capability配置错误仔细检查appPackage和appActivity是否正确Appium版本不兼容可以尝试降级到稳定版本如npm install -g appium1.22.03. 元素定位与基本操作3.1 使用Appium Inspector定位元素Appium Inspector是一个可视化工具可以帮助我们查看应用的元素结构。安装方式npm install -g appium-inspector启动后输入与脚本相同的desired capabilities就可以看到应用的UI层级结构。3.2 常用元素定位方法在Appium中我们可以使用多种方式定位元素# 通过ID定位 element driver.find_element_by_id(com.android.settings:id/search_action_bar) # 通过XPath定位 element driver.find_element_by_xpath(//android.widget.TextView[textWi-Fi]) # 通过类名定位 elements driver.find_elements_by_class_name(android.widget.TextView)3.3 基本操作示例掌握了元素定位后我们可以执行各种操作# 点击操作 wifi_item driver.find_element_by_xpath(//android.widget.TextView[textWi-Fi]) wifi_item.click() # 输入文本 search_box driver.find_element_by_id(com.android.settings:id/search_action_bar) search_box.send_keys(蓝牙) # 滑动屏幕 driver.swipe(500, 1500, 500, 500, 400) # 从下往上滑动4. 高级技巧与实战案例4.1 等待机制优化为了提高脚本的稳定性必须合理使用等待机制from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 显式等待 wait WebDriverWait(driver, 10) element wait.until(EC.presence_of_element_located((By.ID, com.android.settings:id/search_action_bar))) # 隐式等待 driver.implicitly_wait(5) # 设置全局等待时间4.2 处理弹窗和权限请求自动化测试中经常会遇到各种弹窗处理方式try: allow_button driver.find_element_by_id(com.android.packageinstaller:id/permission_allow_button) allow_button.click() except: print(没有发现权限弹窗)4.3 实战案例自动化测试一个计算器应用下面是一个完整的测试计算器应用的例子from appium import webdriver from time import sleep desired_caps { platformName: Android, platformVersion: 11, deviceName: emulator-5554, appPackage: com.android.calculator2, appActivity: .Calculator } driver webdriver.Remote(http://localhost:4723/wd/hub, desired_caps) # 点击数字和运算符 driver.find_element_by_id(com.android.calculator2:id/digit_7).click() driver.find_element_by_id(com.android.calculator2:id/op_add).click() driver.find_element_by_id(com.android.calculator2:id/digit_3).click() driver.find_element_by_id(com.android.calculator2:id/eq).click() # 验证结果 result driver.find_element_by_id(com.android.calculator2:id/result).text assert result 10, f计算结果错误期望10实际得到{result} driver.quit()4.4 性能优化建议减少不必要的截图截图操作很耗时只在必要时使用合理设置等待时间过长的等待会降低测试效率复用session避免频繁启动和关闭应用并行测试使用Appium的并行测试功能提高效率5. 常见问题与解决方案5.1 元素定位失败问题问题现象脚本运行时提示无法找到元素解决方案使用Appium Inspector确认元素是否存在尝试不同的定位策略ID、XPath、类名等增加等待时间确保元素加载完成检查是否在正确的activity中5.2 应用崩溃问题问题现象测试过程中应用突然崩溃解决方案检查应用日志adb logcat降低操作频率避免快速连续点击确保测试环境干净没有其他干扰尝试在不同的模拟器或真机上运行5.3 性能问题问题现象测试运行缓慢优化建议关闭模拟器的动画效果开发者选项中使用性能更好的模拟器或真机优化脚本逻辑减少不必要的操作考虑使用云测试平台进行分布式测试在实际项目中我遇到过一个棘手的问题测试脚本在本地运行正常但在CI环境中总是失败。经过排查发现是CI服务器上的模拟器配置不同导致的。解决方案是在脚本中添加环境检测逻辑根据不同的环境自动调整配置参数。