• 演练:创建Android自动化测试
    • 目标
    • 环境
    • 操作步骤
      • 新建项目
      • 准备被测应用
      • 编辑用例
      • 完善自动化测试代码
      • 运行

    演练:创建Android自动化测试

    目标

    • 掌握如何定位手机应用控件
    • 掌握Android手机自动化测试流程

    环境

    • 前提条件
      • 配置Android SDK环境
      • 安装Appium
      • 准备Android手机或者模拟器
    • 被测应用:Appium自带的应用API Demo

    操作步骤

    新建项目

    打开CukeTest,【文件】—【新建项目】项目模板选择【mobile】,分别输入【项目名】和【项目路径】,点击【创建】。

    演练:创建Android自动化测试 - 图1

    CukeTest会自动创建一个手机自动化测试脚本。要成功运行这个项目,请在项目目录下执行 npm install 命令安装项目依赖。

    准备被测应用

    测试客户端:https://github.com/appium/sample-code/tree/master/sample-code/apps/ApiDemos/bin下载并安装到自己的手机。

    编辑用例

    打开文件,在【可视】界面中输入如下内容

    演练:创建Android自动化测试 - 图2

    对应的【文本】视图内容为:

    1. # language: zh-CN
    2. 功能: appim demo
    3. 使用CukeTestBDD的方式来做手机端的自动化测试样例。
    4. 场景: API Demo 页面跳转
    5. 假如点击App跳转到App页面
    6. 当在App页面中点击Action Bar
    7. 那么页面应该跳转到Action Bar页面,页面中应该包含"Action Bar Mechanics"

    完善自动化测试代码

    • 获取设备串号
    1. adb devices
    2. List of devices attached
    3. Y15QKCPH278J4 device
    • 获取应用package并启动activity命令行输入 adb logcat | findstr START 手动打开 Demo API 应用,从日志中获取。
    1. ...
    2. [android.intent.category.LAUNCHER] flg=0x10200000 cmp=io.appium.android.apis/.ApiDemos bnds=[16,640][188,832] (has extras)} from uid
    3. 10013 from pid 1943 on display 0 from pid 1943
    4. ...

    取到app的package 和 activity 为 io.appium.android.apis/.ApiDemos

    • 修改driver定义代码

    打开 support\get_driver.js,分别修改 devicesName,appPackage,appActivity的内容。修改完成后为:

    1. const webdriverio = require('webdriverio');
    2. //设置被测应用参数
    3. let options = {
    4. desiredCapabilities: {
    5. platformName: "Android",
    6. deviceName: "Y15QKCPH278J4", //设备序列串号
    7. platformVersion: "5.1", //系统平台版本
    8. appPackage: "io.appium.android.apis", //package 名字
    9. appActivity: ".ApiDemos", //启动activity 名字
    10. resetKeyboard: true,
    11. noReset: true,
    12. unicodeKeyboard: true
    13. },
    14. host: "127.0.0.1",
    15. port: 4723
    16. }
    17. //根据参数配置创建WebDriverIO实例;
    18. function createDriver() {
    19. const client = webdriverio.remote(options);
    20. return client;
    21. }
    22. exports.driver = createDriver();
    • 自动化测试代码打开features/feature1.feature文件,点击 step 后面的灰色按钮,生成自动化脚本样例。

    演练:创建Android自动化测试 - 图3

    使用uiautomatorviewer 工具定位到客户端元素

    演练:创建Android自动化测试 - 图4

    根据元素定位信息,完成对相关操作的代码实现"step_definitons/definitoins.js":

    1. const { Given, When, Then } = require('cucumber')
    2. const assert = require('assert');
    3. const { driver } = require('../support/get_driver');
    4. const { $ } = require('webdriverio')
    5. //// 你的步骤定义 /////
    6. Given("点击App跳转到App页面", async function () {
    7. await driver.click('android=new UiSelector().text("App").index(2)')
    8. });
    9. When("在App页面中点击Action Bar", async function () {
    10. await driver.click('android=new UiSelector().text("Action Bar").index(0)')
    11. });
    12. Then("页面应该跳转到Action Bar页面,页面中应该包含{string}", async function (arg1) {
    13. let texts = await driver.getText('android=new UiSelector().textStartsWith("Action")')
    14. console.log(texts)
    15. return assert.ok(texts.includes(text))
    16. });

    运行

    • 启动appium
    1. appium
    2. [Appium] Welcome to Appium v1.8.1
    3. [Appium] Appium REST http interface listener started on 0.0.0.0:4723
    • 运行项目点击运行项目按钮,可以看到手机自动化运行。

    演练:创建Android自动化测试 - 图5