演练:创建Android自动化测试

目标

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

环境

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

下面为具体步骤

新建项目

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

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

准备被测应用

下载样例应用,并安装到测试设备:https://github.com/appium-boneyard/sample-code/blob/master/sample-code/apps/ApiDemos/bin/ApiDemos-debug.apk

编辑用例

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

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

# language:  zh-CN
功能: appium demo
使用CukeTest以BDD的方式来做手机端的自动化测试样例。

  场景: API Demo 页面跳转
    假如点击App跳转到App页面
    当在App页面中点击Action Bar
    那么页面应该跳转到Action Bar页面,页面中应该包含"Action Bar Mechanics"

完善自动化测试代码

  1. 获取设备串号

    adb devices
    
    List of devices attached
    Y15QKCPH278J4   device
    
  2. 获取应用package并启动activity 命令行输入 adb logcat | findstr START 手动打开 Demo API 应用,从日志中获取。

    11-02 14:03:24.049  1581  1646 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=io.appium.android.apis/.ApiDemos bnds=[789,1182][1038,1500]} from uid 10210
    

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

  3. 修改driver定义代码

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

    JavaScript
    const webdriverio = require('webdriverio');
    
      //设置被测应用参数
      let options = {
          hostname: "127.0.0.1",
          port: 4723,
          path: '/wd/hub',
          logLevel: "info",
          capabilities: {
              automationName: "uiautomator2",
              platformName: "Android",
              deviceName: "Y15QKCPH278J4", //设备序列串号
              platformVersion: "11.0",//系统平台版本
              appPackage: "io.appium.android.apis", //package 名字
              appActivity: ".ApiDemos", //启动activity 名字
              resetKeyboard: true,  
              noReset: true,
              unicodeKeyboard: true
          },
      }
    
      //根据参数配置创建WebDriverIO实例;
      let client;
    
      async function createDriver() {
          client = await webdriverio.remote(options);
          return client;
      }
    
      function getDriver() {
          return client;
      }
    
      exports.createDriver = createDriver;
      exports.getDriver = getDriver;

  4. 自动化测试代码 打开features/feature1.feature文件,点击 step 后面的灰色按钮,生成自动化脚本样例。

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

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

    JavaScript
    const { Given, When, Then } = require('cucumber')
      const assert = require('assert');
      const { getDriver } = require('../support/get_driver');
    
      //// 你的步骤定义 /////
    
      Given("点击App跳转到App页面", async function () {
          let ele = await getDriver().$('android=new UiSelector().text("App").index(2)');
          this.attach(await ele.saveScreenshot("reports/App.png"), 'image/png');
          await ele.click();
      });
    
      When("在App页面中点击Action Bar", async function () {
          await getDriver().$('android=new UiSelector().text("Action Bar").index(0)').click();
      });
    
      Then("页面应该跳转到Action Bar页面,页面中应该包含{string}", async function (text) {
          let texts = await getDriver().$('android=new UiSelector().textStartsWith("Action")').getText();
          return assert.ok(texts.includes(text));
      });

运行

  1. 启动appium

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

results matching ""

    No results matching ""