持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
Appium简介
Appium是一个开源的自动化测试工具,可以测试Native apps、Mobile web apps和Hybrid apps。
Native apps也叫原生App,是采用iOS、Android或者Windows自身的SDK开发的。
Mobile web apps是内嵌到移动端浏览器的应用,Appium支持在iOS上的Safari浏览器和Android上的Chrome浏览器和手机本身自带的浏览器应用。
Hybrid apps也叫混合应用,即原生APP中部分页采用web页面去实现。
Appium引擎
- iOS 9.3 and above: Apple's XCUITest
- iOS 9.3 and lower: Apple's UIAutomation
- Android 4.3+: Google's UiAutomator/UiAutomator2
- Windows: Microsoft's WinAppDriver
环境分析
与Web UI自动化相比,APP UI自动化面临的第一个难关就是环境搭建,Android App与iOS App比较起来,前者的环境稍微简单一些,因此我们从Android App入手来分析一下,Appium完成Android App UI自动化需要哪些条件。
-
首先Android App需要Android环境,因此需要安装SDK
-
其次SDK是基于JDK的,因此需要安装JDK
-
Appium分为两部分,一部分是Appium Server,用来接受Appium Client的请求,并将请求转发给终端,Appium Server是node开发的,需要安装Node.js
-
Appium client就是appium提供的各语言的开发包,如果采用java,就需要安装JDK;如果采用python,就需要额外的再安装Python
安装JDk
安装JDK的文档已经非常多了,这里就不展开了,安装完成后,通过命令java -version可以查看java版本信息
> java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
安装SDK
安装SDK的文档也非常多了,但是由于总所周知的一些原因,从外网下载SDK安装包还是非常艰难的一件事,推荐大家通过安装Android Studio去安装SDK,包括后面创建模拟器,下载Android包都非常方便。
Appium Server
Appium Server是通过node开发的,因此需要安装node.js,直接从Node官网下载node安装包,按要求进行安装即可,安装完成后,将node路径添加到环境变量中,然后可通过命令node -v查看node版本信息
> node -v
v18.11.0
对于Appium Server的安装appium官网提供了两种方式,一种通过命令npm install -g appium直接进行安装,然后直接通过在命令行输入appium就可以启动appium server
另外一种方式,直接从官网下载Appium Server GUI,可以通过界面启动Appium Server。
还可以在官网下载appium-inspector,提供了inspector元素定位的功能,还可以进行简单的脚本录制。
python环境搭建
安装python环境的文档非常多了,不进行展开。
环境检查
到这里,环境基本搭建完成,推荐使用node安装appium环境检查工具npm install -g appium-doctor,可以检查当前appium环境是否搭建完成。
从上图可以看到,appium环境分为两部分,necessary必要部分和optional可选部分,necessary是必须要全部安装的部分,当全部打勾,如上图,necessary就安装完成。
necessary包括
- Node.js
- SDK 需要在环境变量中配置变量ANDROID_HOME
- JDK 需要在环境变量中配置变量JAVA_HOME
optional包括
-
ffmpeg 用于屏幕录制
-
....
Appium Server GUI连接Android App
注意:在Appium 1.14.0+版本对于Android默认都采用了UiAutomator2,但是对于Android 5.0.0以下的操作系统,需要手动设置automationName=UiAutomator1
开启appium server
打开appium server的Advanced页可以看到以下配置:
暂不对以上配置进行修改,直接点击【Start Server】将采用默认配置开启一个appium server
Desired Capabilities
打开Appium Inspector。要连接App的第一步就是填写Desired Capabilities,必填项有如下:
- platformName 终端使用的操作系统,
iOS,Android, orFirefoxOS
填写后,点击【Start Session】就可以打开一个Session连接到终端,如果是该设备是第一次连接,则会安装下面三个应用:
-
Appium Settings
-
io.appium.uiautomator2.server
-
io.appium.uiautomator2.server.test
可以看到此时已经可以连接到终端了,因此还有一些Desired Capabilities参数未填写,所以采用了默认项,例如,如果此时再打开一个模拟器,appium server就不一定可以连接到当前这个设备上,此时需要设置如下参数:
- deviceName 指定使用的设备,通过
adb devices命令可以查看当前连接的终端设备
此外,如果我们有指定要测试的APP,需要配置如下参数:
-
appPackage 指定APP的包名
-
appActivity 指定APP的启动页的Activity
获取appPackage和appActivity
可以多种方式查看应用的appPackage和appActivity,具体可查看【Android】ADB命令高频使用场景(二)
连接到指定终端APP
填写完所有的参数,如下:
然后点击【Start Session】,此时appium server就可以连接到指定的APP了。
Appium Client连接到Android App
这里主要通过python语言的Appium Clinet包连接到Android App。
安装appium client依赖包
pip install Appium-Python-Client
安装完成后,通过命令pip show Appium-Python-Client可以查看appium client依赖包的版本信息如下:
(可以看出,appium client底层也是用了selenium的,后面给大家介绍~)
到这里环境就搭建完毕啦,撒花🎉🎉🎉