Appium 自动化测试笔记

一、移动端自动化测试工具对比

工具 平台支持 语言支持 特点
Robotium Android Java 不支持跨应用
Macaca PC、Android、iOS Java、Python、Node.js 支持跨端
Appium Android、iOS、Windows 多语言(Java、Python、PHP等) 开源、社区活跃、支持跨平台

二、Appium 特点

  • 支持 Native App、Web App、Hybrid App

  • 无需重新编译 App

  • Server 跨平台(macOS、Windows、Linux)

  • 多语言支持


三、Appium 设计原理

  • C/S 架构:Client 发送 HTTP 请求,Appium Server 解析并转发到设备

  • Android:转发给 UIAutomator2(AppiumBootstrap.jar)

  • iOS:转发给 XCUITest / WebDriverAgent

  • Session:每个 Client 连接 Server 后创建一个 session,自动化操作围绕 session 进行


四、Android 自动化环境搭建

组件 说明 安装方式
JDK 1.8 版本 配置 JAVA_HOMEPath
Android SDK 包含 adb、uiautomatorviewer 配置 ANDROID_HOMEPath
Appium Server 1.22.3 从 GitHub 下载安装
模拟器 Mumu 3.x 网易模拟器
Appium-Python-Client Python API 库 pip install Appium-Python-Client

五、ADB 常用命令

分类 命令 作用
设备连接 adb devices 查看设备列表
应用安装 adb install xx.apk 安装 App
应用卸载 adb uninstall 包名 卸载 App
文件上传 adb push 本地路径 手机路径 上传文件
文件下载 adb pull 手机路径 本地路径 下载文件
查看日志 adb logcat > log.txt 保存日志
启动应用 adb shell am start 包名/Activity 启动 App
停止应用 adb shell am force-stop 包名 强制停止
查看内存 adb shell dumpsys meminfo 包名 查看内存信息
Monkey测试 adb shell monkey -p 包名 -v 次数 稳定性测试

六、元素定位工具:UIAutomatorViewer

  • 用于获取 App 元素属性(id、class、text、bounds 等)

  • 使用前需连接设备/模拟器

  • 常见问题:闪退(JDK版本问题)、连接失败(重置 adb)


七、Appium 基础 API

1. 应用操作
方法 说明
start_activity(appPackage, appActivity) 跳转到其他应用
current_package / current_activity 获取当前包名/界面名
close_app() 关闭当前 App
quit() 关闭驱动
install_app(app_path) 安装 App
remove_app(app_id) 卸载 App
is_app_installed(app_id) 判断是否安装
background_app(seconds) 将 App 置于后台
2. 元素定位
复制代码
driver.find_element(By.ID, "id值")
driver.find_element(By.CLASS_NAME, "class值")
driver.find_element(By.XPATH, "xpath表达式")
3. 元素操作
复制代码
element.click()          # 点击
element.send_keys("xx")  # 输入
element.clear()          # 清空
element.text             # 获取文本
element.location         # 获取位置
element.size             # 获取大小
element.get_attribute("属性名")  # 获取属性值
4. 获取一组元素
复制代码
elements = driver.find_elements(By.ID, "id值")

八、手机操作 API

方法 说明
driver.get_window_size() 获取分辨率
driver.get_screenshot_as_file("path") 截图
driver.network_connection 获取网络类型
driver.set_network_connection(类型) 设置网络(如飞行模式)
driver.press_keycode(键码) 发送按键(如 HOME、返回)
driver.open_notifications() 打开通知栏
driver.close_notifications() 关闭通知栏

九、高级手势 TouchAction

复制代码
from appium.webdriver.common.touch_action import TouchAction
​
TouchAction(driver).press(el=None, x=None, y=None).wait(ms=1000).move_to(el=None, x=None, y=None).release().perform()
方法 说明
press() 按下
release() 抬起
wait(ms) 等待
move_to() 移动到目标位置
long_press() 长按
perform() 执行手势

十、PO 框架结构(Python + Appium + Pytest + PO)

复制代码
├── pages/         # 页面对象
├── testcases/     # 测试用例
├── utils/         # 工具类(日志、读取配置等)
├── config/        # 配置文件
├── reports/       # 测试报告
├── conftest.py    # pytest 配置
└── run.py         # 执行入口

PO 优势:页面业务管理方便,无冗余操作,易于维护。


十一、Git 版本控制

1. Git 组成
  • 工作区 → 暂存区 → 版本库(HEAD)
2. 常用命令
复制代码
git init                     # 初始化仓库
git add .                    # 添加到暂存区
git commit -m "注释"         # 提交到仓库
git clone 仓库地址           # 克隆仓库
git branch 分支名            # 创建分支
git checkout 分支名          # 切换分支
git merge 分支名             # 合并分支
git branch -d 分支名         # 删除分支
3. 冲突解决
  • 两个开发修改同一区域 → 手动保留其一或合并

十二、Gitee 远程仓库

  • 注册账号 → 创建仓库 → 配置 SSH 公钥 → 推送代码
复制代码
git remote add origin 仓库地址
git push -u origin master

十三、Jenkins 持续集成

1. 启动 Jenkins
复制代码
java -jar jenkins.war --httpPort=8888
2. Jenkins 配置步骤
  1. 源码管理:配置 Git 仓库地址

  2. 构建触发器 :定时任务(如 0 8 * * * 每天8点)

  3. 构建操作:执行 pytest 命令

  4. 构建后操作:配置 Allure 报告路径

  5. 邮件通知:配置 SMTP 服务器和邮件模板

3. 常见问题
  • 测试报告无内容:在 Jenkins 管理页面执行:

    复制代码
    System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
相关推荐
浔溺1 分钟前
al+大数据每日学习笔记31
大数据·笔记·学习
摇滚侠6 分钟前
《SpringBoot 3:入门与应用实战》第 9 章 跨域问题 阅读笔记 27
spring boot·笔记·okhttp
山岚的运维笔记8 分钟前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
噜~噜~噜~1 小时前
操作系统笔记-2.3.6 管程
笔记·操作系统
aprilaaaaa4 小时前
(TC397 学习笔记)二、ICU和TIM的时钟计算
笔记·学习·fpga开发
hongmai6668884 小时前
ESP32-WROVER-IE-N4R8:外接天线+8MB内存,专治信号焦虑
笔记·单片机·嵌入式硬件·microsoft·risc-v
Persistent的粽子!4 小时前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
xian_wwq5 小时前
【学习笔记】-深度认知系列-第8讲主流AI模型横向评测——GPT、Claude、Gemini、盘古、文心、通义
人工智能·笔记·学习
晨欣6 小时前
NVIDIA GPU 架构演进学习笔记(GPT-5.6 Terra 生成)
笔记·学习·gpu·显卡·nvidia·英伟达
一条破秋裤6 小时前
17_ADC原理与转换模式
笔记·stm32·学习