Blog

Keep up to date with the latest news

『App自动化测试之Appium基础篇』

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

通过Android提供的各种服务来获取当前窗口的视图信息,如UI Automator。

第二种是:

基于Instrumention,把测试APK和被测APK运行在同一个进程中,通过Java反射机制来获取当前窗口的所有视图,如Robotium

常用的测试工具有:UI Automator、Appium、Espresso、Selendroid、Robotium等;本文主要介绍的是Appium。2 Appium简介Appium是开源的、跨平台的测试自动化测试框架;主要用于测试移动端应用;Appium支持模拟器和真机上的原生应用、混合应用、Web应用;Appium使用WebDriver的JSON wire协议来驱动Apple系统的UI Automator库、Android系统的UI Automator框架;因Appium集成了Selendroid框架,所以Appium支持比较老版本的Android;Appium支持Selenium WebDriver支持的所有语言(Java、Python、JavaScript、Objective-C、PHP、Ruby、C#、Clojure、Perl等)。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 Automator对H5支持有限;Appium引入了chromedriver等来实现基于H5的自动化;Android和iOS启动过程的区别在Appium将请求转发给了Bootstrap.jar或bootstrap.js,再由Bootstrap驱动UI Automator或UI Automation。5 JDK下载安装地址:Java Downloads;

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

在这里插入图片描述6 JDK配置新建系统环境变量JAVA_HOME:

在这里插入图片描述编辑系统变量Path:代码语言:python代码运行次数:0运行复制Windows10 电脑,新建变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

Windows7 电脑,在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;注意用;号分隔新建系统变量CLASSPATH变量:代码语言:python代码运行次数:0运行复制变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar验证java环境:

在这里插入图片描述7 SDK下载SDK下载: SDK官网和 下载较快的SDK网站;比如我们选第二个进入下载页面:

在这里插入图片描述选择对应的平台下载即可,我这里是windows平台的;下载后解压到指定目录,比如:

在这里插入图片描述8 SDK配置将SDK的platform-tools、根目录、tools配置到系统环境变量path中;代码语言:python代码运行次数:0运行复制D:\android-sdk-windows\platform-tools

D:\android-sdk-windows

D:\android-sdk-windows\tools在这里插入图片描述9 配置Android环境新建系统环境变量ANDROID_HOME值为SDK根目录:代码语言:python代码运行次数:0运行复制ANDROID_HOME

D:\android-sdk-windows在这里插入图片描述新建系统环境变量ANDROID_PATH值为SDK的platform-tools目录:代码语言:python代码运行次数:0运行复制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_global和node_cache:

在这里插入图片描述打开系统环境变量,新增NODE_PATH变量:代码语言:python代码运行次数:0运行复制NODE_PATH

D:\nodejs\node_modules在这里插入图片描述在系统环境变量的path新增:%NODE_PATH%:

在这里插入图片描述打开用户环境变量,修改path中的npm路径为:D:\nodejs\node_global:

在这里插入图片描述在这里插入图片描述重启电脑、重启电脑、重启电脑(重要的事情说三遍)。12 安装配置AppiumAppium官网:

在这里插入图片描述点击左侧的install Appium使用NPM安装:代码语言:python代码运行次数:0运行复制npm i --location=global appium命令行输入appium即可:代码语言:python代码运行次数:0运行复制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代码运行次数:0运行复制npm install -g appium-doctor命令行输入appium-doctor,检查环境是否ok:

在这里插入图片描述14 appium安装问题排查appium给出这几个错误的安装方法,但是有的地址无法访问了,所以以下对每个错误进行了排查:代码语言:python代码运行次数:0运行复制### 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 details14.1 cmdline-tools问题我这一大堆错的,挨个排查吧,先看下这个:代码语言:python代码运行次数:0运行复制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代码运行次数:0运行复制 opencv4nodejs cannot be found.安装opencv4nodejs,CMake官网:

在这里插入图片描述下载后双击cmake-3.28.0-rc5-windows-x86_64.msi,安装到默认路径,并勾选增加环境变量给所有用户:

在这里插入图片描述在这里插入图片描述在这里插入图片描述如果还是不行,建议手动将其目录添加到系统环境变量中:代码语言:python代码运行次数:0运行复制C:\Program Files\CMake\bin\输入cmake -version查看:代码语言:python代码运行次数:0运行复制cmake version 3.28.0-rc5安装opencv4nodejs:代码语言:python代码运行次数:0运行复制npm -g install opencv4nodejs --ignore-scripts重新检查看是否还会报错opencv4nodejs错误,发现是ok了:

在这里插入图片描述14.3 ffmpeg问题第三个错误:代码语言:python代码运行次数:0运行复制 ffmpeg cannot be found下载ffmpeg安装包:ffmpeg安装:

在这里插入图片描述在这里插入图片描述下载后ffmpeg-release-essentials.zip解压到某个目录下:代码语言:python代码运行次数:0运行复制D:\ffmpeg-6.1-essentials_build并添加环境变量:代码语言:python代码运行次数:0运行复制D:\ffmpeg-6.1-essentials_build\bin再次检查发现ffmpeg也是ok的:

在这里插入图片描述14.4 mjpeg-consumer问题第四个问题:代码语言:python代码运行次数:0运行复制 mjpeg-consumer cannot be found直接使用npm i -g mjpeg-consumer安装即可;排查也是ok了:

在这里插入图片描述14.5 bundletool.jar问题第五个问题:代码语言:python代码运行次数:0运行复制bundletool.jar cannot be found下载安装bundletool.jar,bundletool.jar下载:

在这里插入图片描述下载后为bundletool-all-1.15.6.jar重新命名为bundletool.jar,在android sdk目录下,新建bundle-tools目录,把bundletool.jar包放入其中:

在这里插入图片描述配置环境,在用户和系统环境的path后都追加上述路径的环境:代码语言:python代码运行次数:0运行复制D:\android-sdk-windows\bundle-tools修改环境变量中的 PATHTEXT 添加:;.JAR

在这里插入图片描述验证也是ok了:

在这里插入图片描述14.6 gst-launch问题第六个问题:代码语言:python代码运行次数:0运行复制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.exe:gst下载地址:

在这里插入图片描述双击下载的gstreamer-1.0-mingw-x86_64-1.22.7.msi:

在这里插入图片描述在这里插入图片描述增加环境变量:代码语言:python代码运行次数:0运行复制F:\gstreamer\1.0\mingw_x86_64\bin验证是ok了:

在这里插入图片描述15 完整无报错的Appium信息所有的错误都排查后,完整的信息应该如下:代码语言:python代码运行次数:0运行复制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我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!