1 Appium概念
1)概念:appium是一個自動化測試開源工具,支持IOS、Android平台上的原生應用、web應用和混合應用
2)原生應用:是指使用ios或者android編寫的應用
web應用:是指移動瀏覽器訪問的應用,即H5頁面
混合應用:原生代碼和web內容交互,即APP內嵌的H5頁面
2 Appium理念
1)無需為了自動化而重新編譯或者修改你的應用
appium真正的工作引擎是第三方自動化框架(例如ios的Uiautomation,Android 4.2+的UiAutomator,Android 2.3+的Instrumentation->Instrumentation由單獨項目Selendroid支持),這樣就不需要再你的應用中植入aooium相關或者第三方的代碼。
2)你不必局限於某種語言或者框架來寫和運行測試腳本
將上述的第三方框架封裝成一套API,webDriver(即Selenium WebDrier)。指定了客戶端到服務端的協議。使用這種客戶端-服務端架構,就可以使用任何語言來編寫客戶端,向服務端發送HTTP請求。客戶端就是簡單的HTTP客戶,你可以使用任何測試套件或者測試框架(目前已經實現了大多數流行語言版本的客戶端)編寫刻畫段的代碼。換句話說:Appium和webDriver客戶端不是技術意義上的測試框架,而是“自動化庫”,你可以在你的測試環境中隨意使用這些自動化庫。
3)一個移動自動化的框架不應該在接口上重讀造輪子(移動自動化的接口應該統一)
事實上webDriver已經成為web瀏覽器自動化的標准,也成了W3C的標准,所以Appium擴充了webDriver的協議,在原有的基礎上添加移動自動化相關的API
4)無論精神上還是名義上,都必須開源
appium是開源的
電腦刺綉綉花廠 http://www.szhdn.com 廣州品牌設計公司https://www.houdianzi.com
3 Appium幾個重要的概念
1)C/S架構
Appium 的核心是一個 web 服務器,它提供了一套 REST 的接口。它收到客戶端的連接,監聽到命令,接着在移動設備上執行這些命令,然后將執行結果放在 HTTP響應中返還給客戶端。事實上,這種客戶端/服務端的架構給予了許多的可能性:比如我們可以使用任何實現了該客戶端的語言來寫我們的測試代碼。比如我們可以把服務端放在不同 的機器上。比如我們可以只寫測試代碼,然后使用像 Sauce Labs 這樣的雲服務來解釋命令。
2)Session
自動化始終圍繞一個session進行,客戶端初始化一個seesion(會話)來與服務端交互,不同的語言有不同的實現方式,但是他們最終都是發送為一個POST請求給服務端,請求中包含一個jsON對象,被稱作“desired capabilities”。此時,服務端就會開啟一個自動化的 session,然后返回一個 session ID,session ID將會被用戶發送后續的命令。
3)Desired Capabilities
Desired capabilities 是一些鍵值對的集合 (比如,一個 map 或者 hash),客戶端將這些鍵值對發給服務端,告訴服務端我們想要怎么測試。比如,我們可以把platformName 設置為 iOS,告訴 Appium 服務端,我們想要一個iOS 的 session,而不是一個 Android 的。我們也可以設置 safariAllowPopups 為 true,確保在 Safari 自動化 session 中,我們可以使用 JavaScript 來打開新窗口。參見 capabilities 文檔,查看完整的 capabilities 列表。
4)Appium Server
Appium server 是用 Node.js 寫的。我們可以用源碼編譯或者從 npm 直接安裝。
5) Appium 服務端
Appium 服務端有很多語言庫 Java, Ruby, Python, php, JavaScript 和 C#,這些庫都實現了 Appium 對 WebDriver 協議的擴展。當使用 Appium 的時候,你只需使用這些庫代替常規的 WebDriver 庫就可以了。
4 Appium工作原理
Appium是Node.js寫的http服務器,用來創建和控制webDriver的session。
Appium服務器接收 json 格式的request請求,根據不同平台對這些請求采取不同的處理方式。我們執行腳本時,腳本會轉換成json數據,通過http請求發送給Appium Server,Appium Server將請求轉換成command,發送給平台工具(ios:instruments;android:uiautomator)在設備上查找Appium 推送上來的bootstrap.js(bootstrap.js 是Appium架構 放在手機端的一個服務器),來執行這些命令。執行完后,客戶端將結果和log發送回Appium Server。