『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium

1 关于Android UI自动化测试

  • Android UI自动化测试工具有很多,这些工具基本是基于Android控件层面,涉及WidgetsWebView两类;
  • 而关于其测试方法一般有二:

第一种是: 通过Android提供的各种服务来获取当前窗口的视图信息,如UI Automator
第二种是: 基于Instrumention,把测试APK和被测APK运行在同一个进程中,通过Java反射机制来获取当前窗口的所有视图,如Robotium

  • 常用的测试工具有:UI AutomatorAppiumEspressoSelendroidRobotium等;
  • 本文主要介绍的是Appium

2 Appium简介

  • Appium是开源的、跨平台的测试自动化测试框架;
  • 主要用于测试移动端应用;
  • Appium支持模拟器和真机上的原生应用、混合应用、Web应用;
  • Appium使用WebDriverJSON wire协议来驱动Apple系统的UI Automator库、Android系统的UI Automator框架;
  • Appium集成了Selendroid框架,所以Appium支持比较老版本的Android
  • Appium支持Selenium WebDriver支持的所有语言(JavaPythonJavaScriptObjective-CPHPRubyC#ClojurePerl等)。

3 Appium原理

3.1 Android端过程

  • 客户端client,指咱们的测试脚本;
  • Appium在服务端启动一个Server(4723端口),用来接口WebDriver client标准的rest请求,调用对应框架响应操作;
  • Appium Server把请求转发给中间件Bootstrap.jar(手机上),Bootstrap.jar监听4724端口并接收Appium命令;
  • Bootstrap将执行结果返回给Appium Server
  • Appium Server再将结果返回给Appium Client

3.2 iOS端过程

  • 客户端client,指咱们的测试脚本;
  • Appium在服务端启动一个Server(4723端口),用来接口WebDriver client标准的rest请求,调用对应框架响应操作;
  • Appium Server调用instruments.js,启动socket server,分出子进程instruments.app,将bootstrap.js注入device
  • bootstrap.js将执行结果返回给Appium Server
  • Appium Server再将结果返回给Appium Client

4 补充内容

  • UI Automator测试框架是Android SDK自带的APP UI自动化测试Java库;
  • UI AutomatorH5支持有限;
  • Appium 引入了chromedriver等来实现基于H5的自动化;
  • Android和iOS启动过程的区别在Appium将请求转发给了Bootstrap.jarbootstrap.js,再由Bootstrap驱动UI AutomatorUI Automation

5 JDK下载

  • 安装地址:Java Downloads
  • 根据操作系统选择下载,我的是Windows平台;
  • 双击安装文件,按照提示,可以一步步安装,中间会有两次选择安装路径,第一次是安装Jre,第二次是安装Jdk,两次的安装目录,建议单独放在一个磁盘的根目录,如下,笔者的是:jdk-11.0.8

6 JDK配置

  • 新建系统环境变量JAVA_HOME
  • 编辑系统变量Path
python 复制代码
Windows10 电脑,新建变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
Windows7 电脑,在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;注意用;号分隔
  • 新建系统变量CLASSPATH变量:
python 复制代码
变量名:CLASSPATH  
变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
  • 验证java环境:

7 SDK下载

  • SDK下载: SDK官网下载较快的SDK网站
  • 比如我们选第二个进入下载页面:
  • 选择对应的平台下载即可,我这里是windows平台的;
  • 下载后解压到指定目录,比如:

8 SDK配置

  • SDKplatform-tools、根目录、tools配置到系统环境变量path中;
python 复制代码
D:\android-sdk-windows\platform-tools
D:\android-sdk-windows
D:\android-sdk-windows\tools

9 配置Android环境

  • 新建系统环境变量ANDROID_HOME值为SDK根目录:
python 复制代码
ANDROID_HOME
D:\android-sdk-windows
  • 新建系统环境变量ANDROID_PATH值为SDKplatform-tools目录:
python 复制代码
ANDROID_PATH
D:\android-sdk-windows\platform-tools

10 安装NodeJs

  • 安装这个只要是用它来安装appium以及验证后续安装的Appium是否成功;
  • 下载地址:NodeJs
  • 下载后直接双击运行即可node-v20.10.0-x64.msi
  • 安装完在命令行执行npm看到以下界面则表示node安装成功了:

11 解决node安装时提示不是内部命令

  • 需要配置node.js的一些环境变;
  • node.js的安装目录下新建两个文件夹如下node_globalnode_cache
  • 打开系统环境变量,新增NODE_PATH变量:
python 复制代码
NODE_PATH
D:\nodejs\node_modules
  • 在系统环境变量的path新增:%NODE_PATH%
  • 打开用户环境变量,修改path中的npm路径为:D:\nodejs\node_global
  • 重启电脑、重启电脑、重启电脑(重要的事情说三遍)。

12 安装配置Appium

  • Appium官网
  • 点击左侧的install Appium使用NPM安装:
python 复制代码
npm i --location=global appium
  • 命令行输入appium即可:
python 复制代码
C:\Windows\System32>appium
[Appium] Welcome to Appium v2.2.3
[Appium] Appium REST http interface listener started on http://0.0.0.0:4723
[Appium] You can provide the following URLs in your client code to connect to this server:
[Appium]        http://172.16.1.33:4723/
[Appium]        http://127.0.0.1:4723/ (only accessible from the same host)
[Appium]        http://172.31.32.1:4723/
[Appium] No drivers have been installed in C:\Users\Administrator\.appium. Use the "appium driver" command to install the one(s) you want to use.
  • 关于安装可参考官网:
  • 还有环境的要求:
  • 还有一种安装方式为使用GUI界面去安装appium-desktop
  • 选择的对应包即可:
  • 这里需要注意下,官网给出了明确说明,appium-desktop将不再支持 Appium 2.0+版本,建议使用命令行方式,

13 appium环境验证

  • 先安装appium-doctor
python 复制代码
npm install -g appium-doctor
  • 命令行输入appium-doctor,检查环境是否ok:

14 appium安装问题排查

  • appium给出这几个错误的安装方法,但是有的地址无法访问了,所以以下对每个错误进行了排查:
python 复制代码
### Optional Manual Fixes ###
info AppiumDoctor The configuration can install optionally. Please do the following manually:
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
WARN AppiumDoctor  ➜ gst-launch-1.0.exe and gst-inspect-1.0.exe are used to stream the screen of the device under test. Please read https://appium.io/docs/en/writing-running-appium/android/android-screen-streaming/ to install them and for more details

14.1 cmdline-tools问题

  • 我这一大堆错的,挨个排查吧,先看下这个:
python 复制代码
apkanalyzer.bat could NOT be found in D:\android-sdk-windows!
  • 安装:commandlinetools
  • 解压到SDK的目录下:
  • cmdline-tools\bin目录下的apkanalyzer.bat文件复制到platform-tools下:
  • 重新打开cmd,输入appium-doctor ,查看问题解决了:

14.2 opencv4nodejs问题

  • 第二个问题:
python 复制代码
 opencv4nodejs cannot be found.
  • 安装opencv4nodejsCMake官网
  • 下载后双击cmake-3.28.0-rc5-windows-x86_64.msi,安装到默认路径,并勾选增加环境变量给所有用户:
  • 如果还是不行,建议手动将其目录添加到系统环境变量中:
python 复制代码
C:\Program Files\CMake\bin\
  • 输入cmake -version查看:
python 复制代码
cmake version 3.28.0-rc5
  • 安装opencv4nodejs
python 复制代码
npm -g install opencv4nodejs --ignore-scripts
  • 重新检查看是否还会报错opencv4nodejs 错误,发现是ok了:

14.3 ffmpeg问题

  • 第三个错误:
python 复制代码
 ffmpeg cannot be found
  • 下载ffmpeg安装包:ffmpeg安装
  • 下载后ffmpeg-release-essentials.zip解压到某个目录下:
python 复制代码
D:\ffmpeg-6.1-essentials_build
  • 并添加环境变量:
python 复制代码
D:\ffmpeg-6.1-essentials_build\bin
  • 再次检查发现ffmpeg也是ok的:

14.4 mjpeg-consumer问题

  • 第四个问题:
python 复制代码
 mjpeg-consumer cannot be found
  • 直接使用npm i -g mjpeg-consumer安装即可;
  • 排查也是ok了:

14.5 bundletool.jar问题

  • 第五个问题:
python 复制代码
bundletool.jar cannot be found
  • 下载安装bundletool.jarbundletool.jar下载

  • 下载后为bundletool-all-1.15.6.jar重新命名为bundletool.jar,在android sdk目录下,新建bundle-tools目录,把bundletool.jar包放入其中:

  • 配置环境,在用户和系统环境的path后都追加上述路径的环境:

python 复制代码
D:\android-sdk-windows\bundle-tools
  • 修改环境变量中的 PATHTEXT 添加:;.JAR
  • 验证也是ok了:

14.6 gst-launch问题

  • 第六个问题:
python 复制代码
gst-launch-1.0.exe and/or gst-inspect-1.0.exe cannot be found
  • 下载gst-launch-1.0.exe and gst-inspect-1.0.exegst下载地址
  • 双击下载的gstreamer-1.0-mingw-x86_64-1.22.7.msi
  • 增加环境变量:
python 复制代码
F:\gstreamer\1.0\mingw_x86_64\bin
  • 验证是ok了:

15 完整无报错的Appium信息

  • 所有的错误都排查后,完整的信息应该如下:
python 复制代码
C:\Windows\System32>appium-doctor
WARN AppiumDoctor [Deprecated] Please use appium-doctor installed with "npm install @appium/doctor --location=global"
info AppiumDoctor Appium Doctor v.1.16.2
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: D:\nodejs\node.EXE
info AppiumDoctor  ✔ Node version is 20.10.0
info AppiumDoctor  ✔ ANDROID_HOME is set to: D:\android-sdk-windows
info AppiumDoctor  ✔ JAVA_HOME is set to: D:\jdk-11.0.8
info AppiumDoctor    Checking adb, android, emulator, apkanalyzer.bat
info AppiumDoctor      'adb' is in D:\android-sdk-windows\platform-tools\adb.exe
info AppiumDoctor      'android' is in D:\android-sdk-windows\tools\android.bat
info AppiumDoctor      'emulator' is in D:\android-sdk-windows\tools\emulator.exe
info AppiumDoctor      'apkanalyzer.bat' is in D:\android-sdk-windows\platform-tools\apkanalyzer.bat
info AppiumDoctor  ✔ adb, android, emulator, apkanalyzer.bat exist: D:\android-sdk-windows
info AppiumDoctor  ✔ 'bin' subfolder exists under 'D:\jdk-11.0.8'
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
info AppiumDoctor  ✔ opencv4nodejs is installed at: D:\nodejs\node_global. Installed version is: 5.6.0
info AppiumDoctor  ✔ ffmpeg is installed at: D:\ffmpeg-6.1-essentials_build\bin\ffmpeg.EXE. ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
info AppiumDoctor  ✔ mjpeg-consumer is installed at: D:\nodejs\node_global. Installed version is: 2.0.0
info AppiumDoctor  ✔ bundletool.jar is installed at: D:\android-sdk-windows\bundle-tools\bundletool.jar
info AppiumDoctor  ✔ gst-launch-1.0.exe and gst-inspect-1.0.exe are installed at: F:\gstreamer\1.0\mingw_x86_64\bin\gst-launch-1.0.exe and F:\gstreamer\1.0\mingw_x86_64\bin\gst-inspect-1.0.exe
info AppiumDoctor ### Diagnostic for optional dependencies completed, no fix possible. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor
相关推荐
颜正义4 小时前
作为前端你还不会 Playwright 进行单元测试吗?
前端·测试
hubro8 小时前
ORM性能测试Benchmark(最终版)
测试·orm
Java面试题总结11 小时前
Junit到Springboot单元测试
spring boot·junit·单元测试
sxhcwgcy12 小时前
Spring Boot 整合 log4j2 日志配置教程
spring boot·单元测试·log4j
测试199815 小时前
单元测试、系统测试、集成测试的区别是什么?
自动化测试·软件测试·测试工具·单元测试·测试用例·集成测试·安全性测试
独断万古他化1 天前
Python+Pytest 接口自动化测试实战 —— 抽奖系统接口测试框架设计与实现
python·pytest·接口自动化·测试·allure·yaml·json schema
殷紫川1 天前
全链路压测硬核实战:从方案落地、瓶颈根因定位到全链路性能优化
架构·测试
紫丁香1 天前
pytest_自动化测试5
python·功能测试·单元测试·集成测试·pytest
软件测试君1 天前
自动化测试路线图之自动化测试完整指南
自动化测试·软件测试·测试工具·面试·职场和发展·单元测试·职场经验
不做菜鸟的网工1 天前
Python 会话数压测脚本
测试