Skip to content

用户端 App 自动化测试

霍格沃兹测试开发学社

ceshiren.com


自我介绍

  • 江湖代号:老钱 。
  • 互联网行业工作时间 10 年:2 年开发,8 年测试;涉及后端开发,测试工具开发,运维,自动化测试,测试管理等工作,目前在一家互联网金融公司担任测试开发工程师。
  • 职业信条:测试不是二等公民,不懂开发误谈测试。

课程安排

  1. Appium 介绍
  2. Appium 1.x 与 2.x
  3. Appium Desired Capability
  4. Appium Inspector 用法
  5. App 安装与启动
  6. Appium UI 自动化测试实现

1. Appium 介绍


Appium

Appium 是一个流行的开源自动化测试工具,它提供了一个跨平台的解决方案,用于自动化原生、移动 Web 和混合应用程序的测试。


跨平台支持

  • iOS
  • Android
  • windows, mac2, ... 等

多种语言支持

  • Java
  • Python
  • Ruby
  • JavaScript
  • C#
  • ...

支持多种自动化框架

  • TestNG
  • JUnit
  • pytest
  • nosetests

模拟器和真机测试

  • 真机
  • 模拟器

课程安排

  1. Appium 介绍

  2. Appium 1.x 与 2.x
  3. Appium Desired Capability
  4. Appium Inspector 用法
  5. App 安装与启动
  6. Appium UI 自动化测试实现

2. Appium 1.x 与 2.x


Appium 1.x

  • Appium 1.x 版本是 Appium 测试自动化框架的早期版本
  • 主要提供了支持移动端自动化测试的强大功能
  • 目前部分公司仍旧在使用这个版本

下载与安装

  • 官网 https://github.com/appium/appium-desktop
  • 最终版本: V1.22.3-4 (注意已经停止更新和维护)
  • 运行方法:直接运行
  • Demo: 打开官网介绍


Appium 2.x

  • Appium 2.0 被重新定义为一个平台,可以轻松创建和共享“驱动程序”和“插件”。驱动程序是引入对给定平台自动化支持的代码项目,而插件允许覆盖、更改、扩展或向 Appium 添加行为的代码项目

安装

  • 官网 https://appium.io/docs/en/2.1/quickstart/install/
  • 中文版 https://appium.io/docs/zh/latest/ (部分内容完成)
  • 安装方法
    npm i --location=global appium
    

安装

  • 依赖工具 npm 安装
  • 官网参考 1 https://nodejs.org/en/about/previous-releases
  • 官网参考 2 https://nodejs.org/en/download/package-manager
  • Demo: 打开文档具体说明

启动运行

  • appium 2.x 启动命令 (兼容 1.x driver url http://127.0.0.1:4723/wd/hub )
    appium --base-path=/wd/hub
    
  • 启动效果
    [Appium] Welcome to Appium v2.11.2 (REV ***xxx***)
    [Appium] Non-default server args:
    [Appium] {
        basePath: '/wd/hub'
    }
    

Appium 2.x 命令

  • 列出当前已安装的 driver 驱动: appium driver list
      ~ appium driver list
        ✔ Listing available drivers
        - uiautomator2@2.25.0 [installed (npm)]
        - xcuitest@7.24.11 [installed (npm)]
        - espresso [not installed]
        - mac2 [not installed]
        - windows [not installed]
        - safari [not installed]
        - gecko [not installed]
        - chromium [not installed]
    
  • Demo: 命令演示

Appium 2.x 命令

  • 注意: appium 2.x 中的 driver 驱动需要单独安装,默认 appium 2.x 是不带任何 client driver 驱动
  • 安装 driver 驱动: appium driver install <驱动名称>
      ~ appium driver install gecko
        ✔ Checking if 'appium-geckodriver' is compatible
        ✔ Installing 'gecko' using NPM install spec 'appium-geckodriver'
        ℹ Driver gecko@1.3.9 successfully installed
        - automationName: Gecko
        - platformNames: ["Linux","Mac","Android","Windows"]
    
  • Demo: 命令演示

Appium 2.x 命令

  • 改变 appium 的运行端口: appium server --base-path /wd/hub --port <端口号>
      ~ appium server --base-path /wd/hub --port 8080
        [Appium] Welcome to Appium v2.11.2 (REV 8debf39f24954d1006df6bac2dbef09d1ea68bc5)
        [Appium] Non-default server args:
        [Appium] {
            basePath: '/wd/hub',
            port: 8080
        }
    
  • Demo: 命令演示

本章小结

  • Appium 版本 1.x & 2.x
  • 安装方法不同
  • 目前的 1.x 主要针对存量需求
  • 2.x 对应的各种命令

课程安排

  1. Appium 介绍

  2. Appium 1.x 与 2.x

  3. Appium Desired Capability
  4. Appium Inspector 用法
  5. App 安装与启动
  6. Appium UI 自动化测试实现

3. Appium Desired Capability


Desired Cap

  • Appium 中的 Desired Capabilities 是一组键值对
  • 用于向告诉 Appium 服务器如何设置测试环境
  • 这些设置包括平台名称、版本、设备名称等
  • 这些配置对于控制 Appium 的行为至关重要
  • 有些配置 iOS 与 Android 不通用,不同平台不通用

Desired Cap 常用参数

  • platformName: 指定要测试的移动操作系统平台,如 iOS 或 Android
  • platformVersion: 指定移动操作系统的版本,例如 11.0 或 10.0
  • deviceName: 指定要使用的设备类型或仿真器名称,如 iPhone 7 或 Samsung Galaxy Note10
  • automationName: 指定使用的自动化引擎,例如 XCUITest、UiAutomator2 等
  • appPackage 和 appActivity: Android 配置,分别指定要测试的包名和要启动的活动名称
  • bundleId: iOS 配置,指需要启动的 app bundle ID

Desired Cap 常用参数

  • 对于 appium 2.x, 大部分 Desired Cap 配置需要添加 appium: 前缀 (支持 W3C WebDriver 协议)
  • 部分参数为了兼容 1.x 可以不加 appium:
  • 比如
    {
        "platformName": "iOS",
        "appium:deviceName": "iPhone 11",
        "appium:bundleId": "com.xxx.xxx",
        "appium:automationName": "XCUITest",
        "appium:platformVersion": "17.4",
        "udid": "xxx-xxx-xxx-xxx"
    }
    

Desired Cap 常用参数

  • 随着 Appium 版本的更新,某些 capabilities 可能会发生变化或被弃用
  • 使用时应参考最新的 Appium 文档
  • 官方文档 https://appium.io/docs/en/2.0/guides/caps/
  • Demo 如何参考 desired caps 文档

本章小结

  • Desired Caps 的用途 - 让 appium server 知晓 client 端配置
  • appium 2.x 中大部分参数需要添加“appium:” 前缀
  • 有些参数在不同的平台上是不通用的

课程安排

  1. Appium 介绍

  2. Appium 1.x 与 2.x

  3. Appium Desired Capability

  4. Appium Inspector 用法
  5. App 安装与启动
  6. Appium UI 自动化测试实现

4. Appium Inspector 用法


介绍

  • Appium Inspector 提供了对应用程序进行视觉检查的功能
  • 通过 Appium Inspector 可以查看元素的详细信息
  • 抓取页面元素的 ID, Name, XPath 等


安装与运行

  • 从 Appium Inspector 官方站点下载和安装
  • 官网 https://github.com/appium/appium-inspector/releases
  • 下载完成之后可以安装,双击图标运行
  • 用法演示: Demo

元素抓取与操作验证

  • 启动 Appium Server
  • 打开 Appium Inspector
  • 输入正确的 Desired Caps 配置
  • 点击 Start Session
  • 找到需要抓取的元素
  • 验证元素的信息的正确性,完成输入、单击等操作
  • Demo

本章小结

  • Appium Inspector 用途
  • 下载与安装
  • 配置 Desired Caps, 启动 Session
  • 抓取页面元素
  • 验证页面操作

课程安排

  1. Appium 介绍

  2. Appium 1.x 与 2.x

  3. Appium Desired Capability

  4. Appium Inspector 用法

  5. App 安装与启动
  6. Appium UI 自动化测试实现

5. App 安装与启动


环境配置

  • Android SDK
  • Android Studio
  • 模拟器或者真机
  • 参考文档 https://appium.tutorial.hogwarts.ceshiren.com/app_auto_testing/v2/L1/tutorial/Appium%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8/
  • Demo

app 安装

  • 训练项目 https://gitee.com/11547299/iappium
  • app 位置 iAppium/apps/ContactManager.apk
  • 安装命令
        adb install <apk file path>
    

app 启动

  • 启动命令
        adb shell am start -n <package name>/<activity name>
    
  • Demo

本章小结

  • App 自动化测试运行环境
  • 安装 app
  • 启动 app

课程安排

  1. Appium 介绍

  2. Appium 1.x 与 2.x

  3. Appium Desired Capability

  4. Appium Inspector 用法

  5. App 安装与启动

  6. Appium UI 自动化测试实现

6. Appium UI 自动化测试实现


获取设备基础参数

  • getAndroidDeviceId()
  • getDeviceRelease()
  • Demo: 代码讲解与运行

启动 app

  • launchApp()
  • Demo: 代码讲解与运行

App UI 自动化测试实现

  • 项目结构: Maven
  • 自动化驱动: JUnit 5
  • Appium 兼容版本 1.x , 2.x
  • Demo: 代码讲解与运行

本章小结

  • 获取设备参数
  • 控制 app 启动
  • Appium UI 自动化测试实现

课程安排

  1. Appium 介绍

  2. Appium 1.x 与 2.x

  3. Appium Desired Capability

  4. Appium Inspector 用法

  5. App 安装与启动

  6. Appium UI 自动化测试实现


课程总结

  • Appium 1.x 与 2.x
  • Desired Caps
  • Appium Inspector
  • Appium UI 自动化测试运行环境
  • 使用 Java 代码获取设备信息
  • Appium UI 自动化测试实现

课后作业

  • 题 1 安装 appium 2.x
  • 题 2 配置 Android 自动化测试运行环境
  • 题 3 使用 Appium Inspector 抓取测试 app: Contact Manager 元素
  • 题 4 编写 Java 代码实现对设备信息的获取与 android app 启动
  • 题 5 编写 Java 代码实现 App UI 自动化测试

谢谢