http://blog.sina.com.cn/s/blog_60c53af50102v3sb.html
Appium - automation for mobile apps
一.Appium架構介紹
官網:www.appium.io
由SauceLab公司主持。並在Google的GATC2013會上被詳細介紹。
Appium是由nodejs的express框架寫的Http Server。Appium不是它⾃⼰創建⼀套新的測試框
架,是將現有的優秀的框架進⾏了集成,以Selenium WebDriver的協議
(JsonWireProtocol/Restful web service)統⼀起來. 使得這個框架滿⾜多⽅⾯的需求。
Appium啟動⾃動化測試后,在被測設備上啟動⼀個server,監聽來⾃Appium server的指
令。不同的平台(如IOS,Android)采⽤不同的運⾏和交換⽅式。Appium將某個樁程序
“侵入”平台,用於接受指令,來完成測試腳本的運行。
特性:
1. 跨平台, native hybrid webview(H5)
2. 跨設備, android iOS
3. 跨app,可以在多個app之間交互
4. 不依賴APP開源代碼(保留意見。。,android Uiautomator對H5的支持需要代碼支持,這里不細說)
5. 支持Selenium WebDriver / Selenium Grid
6. 跨語言, java python ruby nodejs
7. Open Source
二. Appium 在Android端的工作模式
1.架構圖
簡易圖:
在Android端,appium基於WebDriver,並利⽤用Bootstrap.js,最后通過調⽤用UiAutomator的命
令,實現App的自動化測試。UiAutomator測試框架是Android SDK⾃自帶的App UI自動化測
試Java庫。
另外由於UiAutomator對H5的⽀支持有限,appium引入了chromedriver來實現基於H5的自動
化。
2.主要原理:
1.左邊的WebDriver script是我們的selenium測試腳本
2.中間是起的Appium的服務,Appium在這邊起了一個Server(4723端口),跟selenium
Webdriver測試框架類似,Appium⽀支持標准的WebDriver JSONWireProtocol 。在這里提供
了一套web服務,Appium Server接收web driver 標准請求,解析請求內容,調⽤用對應的框
架響應操作。
如:腳本發送一個點擊按鈕的請求給appium server,
3. appium server會把請求轉發給中間件Bootstrap.jar ,它是用java寫的,安裝在手機上.
Bootstrap 接收appium 的命令(4724端口),最終通過調⽤用UiAutomator的命令來實現。
4.最后執⾏行的結果由Bootstrap返回給appium server
5.另外,appium還用到了chromedriver來⽀支持基於H5(webview)的測試。
二. Appium 在IOS端的工作模式
1.架構圖:

在IOS端,appium同樣使⽤用WebDriver的⼀一套協議。與Android端測試框架不同的是,
appium ios封裝了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple
的⾃自動化測試框架),然后在設備中注⼊入bootstrap.js進⾏行監聽。
2.主要原理
1.左邊的WebDriver script是selenium測試腳本
2.中間是起的Appium的服務,Appium在這邊起了⼀一個Server(4723端口),跟selenium
Webdriver測試框架類似,Appium⽀支持標准的WebDriver JSONWireProtocol 。在這里提供
了一套web服務,Appium Server接收web driver 標准請求,解析請求內容,調⽤用對應的框
架響應操作。
如:腳本發送一個點擊按鈕的請求給appium server,
3. appium server調用instruments.js 啟動⼀一個socket server,同時分出⼀一個⼦子進程運⾏行
instruments.app,將bootstrap.js(一個UIAutomation腳本)注⼊入到device⽤用於和外界進⾏行交
互。
4.對於H5的操作,運⽤用了 iOS webkit debug proxy來實現
http://appium.io/slate/en/v1.0.0/?java#ios-support
https://github.com/google/ios-webkit-debug-proxy
三. 自動化測試腳本例⼦子
1)安裝配置appium運行環境
參考:
http://appium.io/slate/en/master/?java#running-appium-on-mac-os-x
http://appium.io/slate/en/master/?java#running-appium-on-windows
2)Android & IOS例子
http://blog.sina.com.cn/s/blog_60c53af50102v3sc.html