1. 程式人生 > >Appium基礎一:Appium概念

Appium基礎一:Appium概念

模擬 互傳 結果 ati 對象 androi 應用 協議 json對象

1.Appium介紹:

Appium是一款開源跨平臺(IOS和Android平臺)支持多種開發語言(java、python等)進行測試Native/Web/Hybrid的Android/iOS Application的自動化測試框架,采用web driver 協議。Native(移動原生應用)指的是那些用iOS SDK或者Android SDK 寫的應用;Web(移動web應用)指的是使用移動瀏覽器訪問的應用(Appium支持iOS上的 Safari和Android上的Chrome);Hybrid(混合應用)指的是原生代碼封裝網頁視圖——原生代碼和 web 內容交互。比如,像天貓APP,可以幫助開發者使用網頁技術開發應用,然後用原生代碼封裝,這些就是混合應用,另外Appium不但支持模擬器而且支持真機測試。

2.Appium設計思想:

2.1不需要為了自動化而且重新編譯或修改測試app;

2.2 你不必局限於某種語言或者框架或者平臺來書寫和運行測試代碼;

2.3 一個移動自動化的框架不應該在接口上重復造輪子。(移動自動化的接口應該統一);

2.4 源代碼必須開源;

3.Appium名詞:

·C/S 架構

Appium 的核心是一個 web 服務器,它提供了一套REST的接口。它收到客戶端的連接,監聽到命令,接著在移動設備上執行這些命令,然後將執行結果放在HTTP響應中返還給客戶端。

·Session

自動化始終圍繞一個session進行,客戶端初始化一個seesion(會話)來與服務端交互,不同的語言有不同的實現方式,但是他們最終都是發送為一個POST請求給服務端,請求中包含一個JSON對象,被稱作“desired capabilities”。此時,服務器客戶端就會開啟一個自動化的 session,然後返回一個 session ID,session ID將會被用戶發送後續的命令。

·Desired Capabilities

Desired capabilities 是一些鍵值對的集合 (比如,一個map或者hash),客戶端將這些鍵值對發給服務端,告訴服務端我們想要怎麽測試。比如,我們可以把platformName capability 設置為 iOS,告訴 Appium 服務端,我們想要一個iOS 的session,而不是一個 Android 的。Capabilities在後續章節中還會講解到。

·Appium Server

Appium server 是用 Node.js 寫的。我們可以用源碼編譯或者從 NPM 直接安裝。

·Appium 服務端

Appium 服務端有很多語言庫 Java, Ruby, Python, PHP, JavaScript 和 C#,這些庫都實現了 Appium 對 WebDriver 協議的擴展。當使用 Appium 的時候,你只需使用這些庫代替常規的 WebDriver 庫就可以了。

·Appium.dmg, Appium.exe

我們提供了 GUI 封裝的 Appium 服務端下載,它封裝了運行 Appium服務端的所有依賴,而不需要擔心怎樣安裝Node.js。其中還包括一個Inspector工具(MAC機上才能用),可以幫助你檢查應用的界面層級,這樣寫測試用例時更方便。

4.Selenium JSON協議

Selenium JSON協議(JSONWP)是一個傳輸方法,它是由WebDriver開發者開發的,這個協議是一組特定的預定義和標準化的端點,它通過RESTful API(接口測試相關)去展現。WebDriver和JSONWP的目的就是為了通過瀏覽器(chrome、firefox和IE)去測試web站點,APPIUM繼承了移動JSONWP協議,擴展了Selenium JSON協議,它可以控制不同的移動設備的行為,比如通過session安裝和卸載APP。

讓我們來看幾組端點:

·/session/:sessionId - session的ID唯一標識符

·/session/:sessionId/element – 找一個元素

·/session/:sessionId/elements – 找一組元素

APPIUM在底層就是通過這些session來相互傳遞信息的。

Appium基礎一:Appium概念