Android 部署 Appium,竟如此简单

Long long ago,在做 Android UI 自动化测试选型时,接触过 Appium。记得那时需要手动把代理 jar 塞到 Android 设备里,再执行用例,通过 PC 侧的 Server 去通信,去做操作,等等,总之感觉也不是那么好用。

今天再次想到 Appium,是要对 iOS 设备进行自动化控制。于是翻了翻官方文档,经过一番猛如虎的操作后,几乎是零成本的就跑起了 Test。于是我就震惊了,先简单写个 Quick Starting 吧。

以下,都是基于 windows 10 x64 系统,并且使用 Android Driver。

安装 Appium

  • 首先得有个 npm,去下个 nodejs,这样在 cmd 就可以使用 npm 命令了,我本地使用的是 5.3.0 的 npm,使用这个命令可以降版本

    npm install [email protected] -g
    
  • 安装

    // appium
    npm install -g appium
    
    // appium Android Driver,有了此 Driver 才能控制 Android
    // 5.0 及以上 Android SDK Level
    // 更低版本查阅 https://github.com/appium/appium/blob/master/docs/en/drivers/android-uiautomator.md
    npm install appium-uiautomator2-driver
    
    // appium-doctor,用于检查是否安装了必需的内容
    // 建议安装
    npm install -g appium-doctor
    
  • 检查必需,Android SDK,JDK,都必须存在并且设置了环境变量 ANDROID_HOME 以及 JAVA_HOME

    D:\appium-test>appium-doctor --android
    info AppiumDoctor Appium Doctor v.1.12.1
    info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
    info AppiumDoctor  ✔ The Node.js binary was found at: D:\Tools\nodejs\node.EXE
    info AppiumDoctor  ✔ Node version is 10.16.1
    info AppiumDoctor  ✔ ANDROID_HOME is set to: D:\Tools\android-sdk-windows
    info AppiumDoctor  ✔ JAVA_HOME is set to: D:\Tools\Java\jdk-8u162
    info AppiumDoctor  ✔ adb exists at: D:\Tools\android-sdk-windows\platform-tools\adb.exe
    info AppiumDoctor  ✔ android exists at: D:\Tools\android-sdk-windows\tools\android.bat
    info AppiumDoctor  ✔ emulator exists at: D:\Tools\android-sdk-windows\tools\emulator.exe
    info AppiumDoctor  ✔ Bin directory of %JAVA_HOME% is set
    info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
    info AppiumDoctor
    info AppiumDoctor ### Diagnostic for optional dependencies starting ###
    WARN AppiumDoctor  ✖ opencv4nodejs cannot be found.
    WARN AppiumDoctor  ✖ ffmpeg cannot be found
    WARN AppiumDoctor  ✖ mjpeg-consumer cannot be found.
    WARN AppiumDoctor  ✖ bundletool.jar cannot be found
    info AppiumDoctor ### Diagnostic for optional dependencies completed, 4 fixes possible. ###
    info AppiumDoctor
    info AppiumDoctor ### Optional Manual Fixes ###
    info AppiumDoctor The configuration can install optionally. Please do the following manually:
    WARN AppiumDoctor  ➜ Why opencv4nodejs is needed and how to install it: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-comparison.md
    WARN AppiumDoctor  ➜ ffmpeg is needed to record screen features. Please read https://www.ffmpeg.org/ to install it
    WARN AppiumDoctor  ➜ mjpeg-consumer module is required to use MJPEG-over-HTTP features. Please install it with 'npm i -g mjpeg-consumer'.
    WARN AppiumDoctor  ➜ bundletool.jar is used to handle Android App Bundle. Please read http://appium.io/docs/en/writing-running-appium/android/android-appbundle/ to install it. Also consider adding the ".jar" extension into your PATHEXT environment variable in order to fix the problem for Windows
    info AppiumDoctor
    info AppiumDoctor ###
    info AppiumDoctor
    info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!
    info AppiumDoctor
    

启动 Appium,默认监听端口 4723

D:\appium-test>appium
[Appium] Welcome to Appium v1.15.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

编写测试代码并执行

  • 准备一个 5.0 以上版本的 Android 手机
  • 打开调试
  • 编写测试脚本 index.js,这里用 js 来写,注意修改 deviceName 为 adb devices 中的序列号以及 ApiDemos-debug.apk 的绝对路径
    const wdio = require("webdriverio");
    const assert = require("assert");
    
    const opts = {
      port: 4723,
      capabilities: {
        platformName: "Android",
        platformVersion: "5",
        deviceName: "931bb85b",
        app: "D:\\appium-test\\ApiDemos-debug.apk",
        appPackage: "io.appium.android.apis",
        appActivity: ".view.TextFields",
        automationName: "UiAutomator2"
      }
    };
    
    async function main () {
      const client = await wdio.remote(opts);
    
      const field = await client.$("android.widget.EditText");
      await field.setValue("Hello World!");
      const value = await field.getText();
      assert.equal(value,"Hello World!");
    
      //await client.deleteSession();
    }
    
    main();
    
  • 新建一个测试用的目录,并在此目录下打开一个 cmd 窗口。下载测试所需依赖:
    npm init -y 
    npm install webdriverio
    
  • 运行测试脚本 node index.js
    D:\appium-test\test-example>node index.js
    2019-11-07T08:04:18.759Z INFO webdriverio: Initiate new session using the webdriver protocol
    2019-11-07T08:04:18.768Z INFO webdriver: [POST] http://localhost:4723/wd/hub/session
    
  • 此时观察之前 appium 启动的服务端窗口,会有 LOG 输出,如果首次运行,会自动在手机上安装一些 apk,之后才会运行脚本中的内容,至此,就已经能够成功在 Android 部署并执行 appium

以上参考:https://github.com/appium/appium/blob/master/docs/en/about-appium/getting-started.md

发布了27 篇原创文章 · 获赞 3 · 访问量 5653

猜你喜欢

转载自blog.csdn.net/candyngwh/article/details/103022089