Appium是一個開源的、跨平臺的自動化測試框架,該框架適用於Native Application、Mobile Web
Application或Hybrid Application的自動化測試。Native
Application指的是基於智能手機本地操做系統如iOS和Android並使用原生編程語言(如Android上使用Java)編寫並運行的第三方應用程序。Mobile
Web Application指的是基於Web的系統和應用。Hybrid
Application指的是在手機原生應用程序中嵌入了Webview,經過Webview能夠訪問網頁的內容。
Appium架構原理編程
Appium是在手機操做系統自帶的測試框架基礎上實現的,Android和iOS的系統上使用的工具分別以下:Android(版本>4.2):UIAutomator, Android 4.2以後系統自帶的UI自動化測試工具。Android(版本≤4.2):Selendroid,基於Android Instrumentation框架實現的自動化測試工具。 iOS:UIAutomation, iOS系統自帶的UI自動化測試工具。bootstrap
Appium的架構原理如圖所示,由客戶端(Appium Client)和服務器(Appium
Server)兩部分組成,客戶端與服務器端經過JSON Wire Protocol進行通訊。
1)Appium服務器:Appium服務器是Appium框架的核心。它是一個基於Node.js實現的HTTP服務器。Appium服務器的主要功能是接受從Appium客戶端發起的鏈接,監遵從客戶端發送來的命令,將命令發送給bootstrap.jar(iOS手機爲bootstrap.js)執行,並將命令的執行結果經過HTTP應答反饋給Appium客戶端。服務器
(2)Bootstrap.jar:Bootstrap.jar是在Android手機上運行的一個應用程序,它在手機上扮演TCP服務器的角色。當Appium服務器須要運行命令時,Appium服務器會與Bootstrap. jar創建TCP通訊,並把命令發送給Bootstrap.jar; Bootstrap.jar負責運行測試命令。session
(3)Appium客戶端:它主要是指實現了Appium功能的WebDriver協議的客戶端Library,它負責與Appium服務器創建鏈接,並將測試腳本的指令發送到Appium服務器。現有的客戶端Library有多種語言的實現,包括Ruby、Python、Java、JavaScript(Node. js)、Object C、PHP和C#。Appium的測試是在這些Library的基礎上進行開發的。架構
(4)Session:Appium的客戶端和服務端之間進行通訊都必須在一個Session的上下文中進行。客戶端在發起通訊的時候首先會發送一個叫做「Desired Capabilities」的JSON對象給服務器。服務器收到該數據後,會建立一個session並將session的ID返回到客戶端。以後客戶端能夠用該session的ID發送後續的命令。框架
(5)Desired Capabilities:Desired Capabilities是一組設置的鍵值對的集合,其中鍵對應設置的名稱,而值對應設置的值。Desired Capabilities主要用於通知Appium服務器創建須要的Session,其中一些設置能夠在Appium運行過程當中改變Appium服務器的運行行爲。編程語言
Appium在Android上基於UIAutomator實現了測試的代理程序(Bootstrap.jar),在iOS上基於UIAutomation實現了測試的代理程序(Bootstrap.js)。當測試腳本運行時,每行WebDriver的腳本都將轉換成Appium的指令發送給Appium服務器,而Appium服務器將測試指令交給代理程序,將由代理程序負責執行測試。好比腳本上的一個點擊操做,在Appium服務器上都是touch指令,當指令發送到Android系統上時,Android系統上的Bootstrap.jar將調用UIAutomator的方法實現點擊操做;而當指令發送到iOS系統上時,iOS的Bootstrap.js將調用UIAutomation的方法實現點擊操做。因爲Appium有了這樣的能力,一樣的測試腳本能夠實現跨平臺運行。工具
我這邊也能夠給大家分享一些實際能幫助到大家的學習資料。整理不易但願你們不要以爲理所固然。若是能幫助到你們擴散一些思路那就最好啦,相信多少會有必定的啓發,能夠加我QQ號:1363134450 聯繫我,記得備註信息否則(若是你是來打廣告的就不要浪費時間加我了。先寫到這裏有問題也能夠直接私信我~學習