Appium
Appium是一個(gè)開源測(cè)試自動(dòng)化框架,可用于原生,混合和移動(dòng)Web應(yīng)用程序測(cè)試。 它使用WebDriver協(xié)議驅(qū)動(dòng) iOS ,Android和Windows應(yīng)用程序。
Appium設(shè)計(jì)哲學(xué)
不需要為了自動(dòng)化而且重新編譯或修改測(cè)試 app;
不應(yīng)該讓移動(dòng)端自動(dòng)化測(cè)試限定在某種語(yǔ)言和某個(gè)具體的框架
不要為了移動(dòng)端的自動(dòng)化測(cè)試而重新發(fā)明輪子
移動(dòng)端自動(dòng)化測(cè)試應(yīng)該是開源的。
Appium 特點(diǎn)
跨架構(gòu),native hybrid webview
跨設(shè)備,android ios firefoxos
跨語(yǔ)言,java python ruby nodejs php
跨 app, 可以在多個(gè) app 之間交互
不依賴源代碼
不限制測(cè)試框架和平臺(tái)
主流框架比較

Appium Android Arch

1.appium客戶端就是我們所說(shuō)的自動(dòng)化腳本代碼,支持Java\Python等主流編程語(yǔ)言
2.appium服務(wù)端由兩個(gè)作用:1. 連接設(shè)備 2. 接收客戶端發(fā)送過(guò)來(lái)的HTTP請(qǐng)求并發(fā)送到移動(dòng)設(shè)備上執(zhí)行。其中服務(wù)端需要安裝在PC上,并且在客戶端運(yùn)行代碼之前啟動(dòng)。服務(wù)端由node.js編寫,在運(yùn)行時(shí),通過(guò)建立session與手機(jī)終端進(jìn)行交互。
3.移動(dòng)終端,通過(guò)接收appium服務(wù)端發(fā)送過(guò)來(lái)的指令,執(zhí)行app自動(dòng)化測(cè)試。
Appium IOS Arch

Appium 執(zhí)行流程

1、client端也就是我們 test script是我們的webdriver測(cè)試腳本。
2、中間是起的Appium的服務(wù),Appium在服務(wù)端起了一個(gè)Server(4723端口),跟selenium Webdriver測(cè)試框架類似, Appium?持標(biāo)準(zhǔn)的
WebDriver JSON WireProtocol。在這里提供它提供了一套R(shí)EST的接口,Appium Server接收web driver client標(biāo)準(zhǔn)rest請(qǐng)求,解析請(qǐng)求內(nèi)容,調(diào)?用
對(duì)應(yīng)的框架響應(yīng)操作。
3、Appium server會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給中間件Bootstrap.jar 它是用java寫的,安裝在手機(jī)上.Bootstrap監(jiān)聽4724端口并接收appium的命令,最終通過(guò)調(diào)
?用UiAutomator的命令來(lái)實(shí)現(xiàn)。
4、最后Bootstrap將執(zhí)行的結(jié)果返回給appium server。
5、Appium server再將結(jié)果返回給 appium client。
Appium 重要概念
Appium的客戶端和服務(wù)端之間進(jìn)行通信都必須在一個(gè)Session的上下文中進(jìn)行。
客戶端在發(fā)起通信的時(shí)候首先會(huì)發(fā)送一個(gè)叫作“Desired Capabilities”的JSON對(duì)象給服務(wù)器。服務(wù)器收到該數(shù)據(jù)后,會(huì)創(chuàng)建一個(gè)session并將session的ID返回到客戶端,之后客戶端可以用該session的ID發(fā)送后續(xù)的命令。
Capability
Capability的功能是配置Appium會(huì)話。
他們告訴Appium服務(wù)器您想要自動(dòng)化的平臺(tái)和應(yīng)用程序。DesiredCapabilities是一組設(shè)置的鍵值對(duì)的集合,其中鍵對(duì)應(yīng)設(shè)置的名稱,而值對(duì)應(yīng)設(shè)置的值。(如:"platformName": "Android")DesiredCapabilities主要用于通知Appium服務(wù)器建立需要的Session。
http://appium.io/docs/cn/writing-running-appium/caps/#android