appium--环境搭建
前戏
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。
Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。
appium选择了client-server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及webdriver如何做到支持多语言的;
工作原理
Android
在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。
UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。
另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。
appium 在android端工作流
- client端也就是我们 test script是我们的webdriver测试脚本。
- 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
- appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。
- 最后Bootstrap将执行的结果返回给appium server。
- appium server再将结果返回给 appium client。
iOS
在IOS端,appium同样使⽤WebDriver的一套协议。
与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自动化测试框架),然后在设备中注⼊入bootstrap.js进⾏行监听。
appium 在ios端工作流
- client端 依然是 test script是我们的webdriver测试脚本。
- 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
- appium server调用instruments.js 启动⼀一个socket server,同时分出一个⼦子进程运⾏instruments.app,将bootstrap.js(一个UIAutomation脚本)注⼊入到device⽤于和外界进行交互
- 最后Bootstrap.js将执行的结果返回给appium server
- appium server再将结果返回给 appium client。
环境搭建
不得不说,appium的环境搭建确实是一个比较麻烦的事情,有很多初学者才学app自动化的时候,就死在了环境搭建上。我自己当初也搭建了两天才搭建成功,以下方法是我自己搭建环境时总结的步骤,并不一定适合别人(仅供参考)。
我的系统是win10
上面的是我们需要安装的一个整体流程图
1、appium环境需要appium的一个安装包
2、我们针对android进行测试需要android本身的一个android 的sdk
3、android 这个本身就是java基础上的,我们需要配置java 的jdk
4、appium是node.js开发的,他的依赖就是node.js的安装包
5、我们既然要做自动化是不是需要选择一个开发语言、那么我们要把python给安装好
6、python如何和appium之间进行交互呢?那么我们需要一个appium-python-client的一个第三方扩展包
7、工欲善其事必先利其器,我们是不是要选择一个好的代码编辑ide,pycharm是我的最爱
安装Node.js
java jdk的安装我就不在这里详细的介绍了,相信大家都会安装,安装好配置环境变量,输入java来验证
Node.js下载地址:https://nodejs.org/en/download/releases/
msi是windows下的安装包
在cmd下输入:node -v和npm -v来验证
Android SDK的安装
官网下载:
https://android-sdk.en.softonic.com/download
安装sdk首先要安装java的jdk环境(java的jdk10检测不到,所以我将10降为了8)
下载完之间下一步安装就可以了
下载完打开 SDK Manager.exe下载工具,默认勾选的全部下载,要一个一个的接受
配置sdk的环境变量:
新建 ANDROID_HOME 值为SDK的安装目录
添加path路径(三个)
验证环境变量是否配置成功
cmd下输入:adb和aapt命令
Appium安装
appium Server其实可以通过命令npm install -g appium安装,但是由于社会主义原因,直接安装可能会失败,所以我们可以通过镜像来安装
npm install -g cnpm --registry-https://registry.npm.taobao.org (安装固定的版本:cnpm install appium@1.7.2 -g)
安装完成之后在cmd下执行where appium查看安装路径
where appium
appium -v查看版本
我们也可以通过appium官网下载安装appium
appium客户端安装:
官方下载:http://appium.io/ 比较慢
安装Appium-python-client
直接执行pip install Appium-Python-Client
验证是否安装成功
MAC下的安装
安装node.js
官网:https://nodejs.org/en/download/current/
下载完下一步下一步就行
node -v和npm -v来验证