appium
appium介绍
Appium 是一款开源、跨平台的移动应用自动化测试框架,支持 Android、iOS 等平台的本地应用、混合应用和移动网页应用的自动化测试。
移动设备类型
原生应用 native app:为特定移动设备或平台开发的应用程序(如Android, iOS, Windows)。
移动web应用 mobile web app:通过移动浏览器访问应用程序,例如Safari, Chrome。主要使用Html5, JavaScript等技术开发
混合应用 Hybrid app:主要使用Html5, JavaScript, CSS开发,但嵌入在App运行,从而感觉它像原生应用。
Appium支持以上三种类型的自动化测试。
核心特性
- 跨平台支持
使用相同 API 编写测试脚本,兼容 Android 和 iOS 平台,实现代码复用。 - 多语言兼容性
支持 Java、Python、JavaScript 等主流编程语言,降低学习成本。 - 应用类型全覆盖
支持原生应用、混合应用(Hybrid App)和移动网页应用(H5)的自动化测试。 - 无需修改被测应用
直接对已有应用进行测试,无需重新编译或修改代码。
工作原理
1.客户端-服务器架构
# Python 示例:初始化驱动
from appium import webdriver
desired_caps = {'platformName': 'Android','deviceName': 'emulator-5554','app': '/path/to/app.apk'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
- 客户端:测试脚本通过 WebDriver 协议向 Appium Server 发送 HTTP 请求。
- 服务器:监听 4723 端口,将客户端命令转换为平台特有指令(如 Android 的 UIAutomator、iOS 的 XCUITest)。
XCUITest是苹果公司于iOS推出的自动化框架,appium内部使用Facebook公司的WebDriverAgent项目支持XCUITest,appium使用Apple的UIAutomation库,UIAutomation库与移动设备或模拟器内运行的 bootstrap.js
进行通信,执行由appium客户端收到的命令。
UIAutomator2是基于Android的自动化框架,允许用户构建和运行UI测试。appium使用Google 公司的UIAutomator2在真实设备或模拟器上执行命令。 appium 使用appium-android-bootstrap模块与UIAutomator2进行交互。它允许将命令发送到设备,使用Android的UIAutomator2测试框架在真实设备上执行命令。当appium 客户端请求创建新的AndroidDriver会话时,appium客户端会将所需的功能传递给appium节点服务器。首先,UIAutomator2驱动程序模块创建会话。然后,在连接的 Android 设备上安装 UIAutomator2 服务器apk。接着启动Netty 服务器。在Netty服务启动后,UIAutomator2服务器在设备上侦听请求并做出响应
2.设备端执行
- Android:通过
bootstrap.jar
监听 4724 端口执行 UIAutomator 命令。 - iOS:通过 XCTest 驱动操作
appium client
appium Client支持多种语言/框架,它针对主流的编程语言分别开发了相应的 appium测试库,我们可以选择自己熟悉的语言或框架来编写appium 测试脚本。
python, java, ruby, javascript等。
appium server
appium 需要在PC上启动一个Server,监听客户端自动化测试的运行,并将请求发送到对应的移动设备或模拟器中运行。
appium Server 支持macOS 和 Windows两大平台。我们可以在不同的平台编写并运行 appium 自动化测试。需要特别说明的是,appiumServer项目已经停止更新,由appium Desktop替代。
移动设备
移动设备用于运行appium自动化测试的环境,既可以是一台连接到PC的手机,也可以是在 PC 上运行的iOS 模拟器或Android模拟器。
环境配置要点
基础依赖
- JDK 1.8+、Node.js、Android SDK(Android 测试)或 Xcode(iOS 测试)。
- 安装命令:
npm install -g appium
和pip install Appium-Python-Client
(Python 客户端)。 - Android Studio
我们既可以通过Android手机连接PC来运行appium自动化测试,也可以通过Android SDK 创建Android模拟器来运行appium自动化测试。这里需要安装Android SDK,因为它提供了一些必要的工具,如 adb可以用于连接 PC与Android手机/模拟器, UIAutomatorViewer可以帮助定位Android元素。
Android SDK(Software Development Kit,软件开发工具包)提供了AndroidAPI库和开发工具构建,可用来测试和调试应用程序。简单来讲,Android SDK可以看作用于开发和运行 Android应用的一个软件。AndroidSDK已经不再提供完整的独立的下载,需要通过Android Studio 安装。
Android Studio是Android应用的集成开发工具,用于开发与调试Android应用,是 Google 公司在 IntelliJ IDEA开源版本基础上开发的。
在安装Android开发环境之前,需要先安装Java开发环境, Android Studio 下载地址:https://developer.android.google.cn/studio。
- Xcode
设备连接
- Android 需开启 USB 调试模式,通过
adb devices
验证连接。 - iOS 需配置开发者证书和设备 UDID。
关键参数配置
{"platformName": "Android", // 平台类型"platformVersion": "10.0", // 系统版本"deviceName": "emulator", // 设备标识"appPackage": "com.example.app", // 应用包名"appActivity": ".MainActivity" // 启动页
}
包名和启动页可通过 adb
命令获取:adb shell dumpsys activity | grep mFocusedActivity
。