IOS

Appium入门

Posted by jjx on November 9, 2016

Appium作为一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动App。 Appium的核心是一个web服务器,他使用WebDriver json wire协议,来驱动系统的UIAutomation库。WebDriver Json wire协议的Server端采用node.js封装了iOS UI Automation的接口,提供提供出一套RESTFul web service的接口,这样Client端以HTTP请求获得操纵UI的能力。

说到底,真正执行测试的还是 UIAutomation,Appium只是封装或解释了UIAutomation的执行脚本,作为UIAutomation和被测试APP的中间层传递消息。

appium的优缺点

优点:
(1) 跨平台 - appium可以很好的融合在addroid和iOS系统之间
(2) 支持多种语言 - 支持各种语言对appium的脚本编写,但是好像oc的支持不太好
(3) 不依赖源代码 - 不用依赖于源码的支持,这是一个很突出的亮点
(4) 开源 - 这个说主要也不算主要,因为appium是给予UIAutomaiton之上的,而UIAutomation不是开源的

缺点:
(1) 环境配置较繁琐 - 配置及其繁琐,而且问题较多,需要你耐心的就一点点解决,iOS版本更为严重
(2) 不支持自定义控件
(3) UIWebView的状态不可访问
(4) 无法脱机跑,需要连着Mac机器 - 这是iOS自动化框架共有的硬伤
(5) 支持系统效率慢 - 这是我认为这个框架比较严重的伤,由于不是苹果公司自有的框架,在支持上总慢一两个月,所以很多人在适配新系统的时候比较头疼 Appium是由client和server组成,client提供多种语言的API,这些API是对WebDriver的扩展和封装,利用这些API就可以快速编写测试用例;client和server间通过符合Mobile JSON Wire Protocol的http请求进行交互。

Appuim还提供一个第三文的工具Appium Inspector

Appium的使用,主要有四个方面的因素:

一,Appium Server

  1. Appium Server的安装

前提:已经安装node.js&npm

可以能过命令行安装

#sudo npm install -g appium  //加上sudo以防Permission的问题

#npm install wd  //这个还不清楚有什么影响??

也可以在官网上下载下来安装,下载下来要快很多

二,Selenium WebDriver

因为是Python版,可以在github上下载

https://github.com/appium/python-client

进入目录下安装

#sudo python setup.py install  //sudo依旧是解决Permission的问题

这样,WebDriver就安装成功了。

三,要测试的app

测试的是appium提供的TestApp

首先,我们需要用xcode编译这个app

#cd appium

#cd sample-code/apps/TestApp

#xcodebuild -sdk iphonesimulator  //为了防止iphonesimulator和设置的冲突,没有注明iphonesimulator的版本

如果看到** BUILD SUCCEEDED **,这个TestApp就build成功了。
sample-code下载地址:https://github.com/appium/sample-code

四,Automation Scripts

自动化脚本,也是用appium提供的,在appium目录下可以找到

#cd appium

#cd sample-code

#cd examples/python

#python ios_simple.py      //执行测试脚本

此时,iOS的模拟器就会打开,开始执行simple.py的测试脚本了!

参考链接
Appium探索——Mac OS Python版
手把手教你appium_ios第一个例子

ios真机上运行

可以通过appium inspector来探测元素,但首先要连上真机,要注意以下几点

  • 将ip修改为127.0.0.1
  • 直接通过ideviceinstaller -u [Your device’s UID] -i [Path to your debug build]安装可能会导致权限问题,所以通过xcode安装
  • 通过udid与包名找到相应app
  • 通过sudo chmod -R 777 /var/db/lockdown/修改ideviceinstaller权限

参考:
WebDriverException: An unknown server-side error occurred while processing the command. Original error: Removing {appId} failed
appium+Python真机运行测试demo的方法

升级到appium1.6

npm install -g appium    
brew install carthage
npm install -g ios-deploy
进入nodumodule目录下,把webdriveragent与webdriveragentrunner都签名

参考链接
https://github.com/appium/appium/issues/6867
appium-xcuitest-driver
Ios 10 with xcode 8 issue

现存的问题
XCUITest - XCode 8 - iOS 10 Tests Are Running Very Slow