一 APPIUM基本理論知識


本文轉自:http://www.cnblogs.com/sundalian/p/5629300.html

一 APPIUM基本理論知識

 

1.APPIUM介紹

Appium 是一個自動化測試開源工具,支持 iOS 平台和 Android 平台上的原生應用,web 應用和混合應用。所謂的“移動原生應用”是指那些用 iOS SDK 或者 Android SDK 寫的應用。所謂的“移動web 應用”是指使用移動瀏覽器訪問的應用(Appium 支持 iOS 上的 Safari 和 Android 上的 Chrome)。所謂的“混合應用”是指原生代碼封裝網頁視圖——原生代碼和 web 內容交互。比如,像 天貓APP,可以幫助開發者使用網頁技術開發應用,然后用原生代碼封裝,這些就是混合應用。

重要的是,Appium 是一個跨平台的工具:它允許測試人員在不同的平台(iOS,Android),使用不同的開發語言(JAVA,Python和Ruby等語言),使用同一套API來寫自動化測試腳本,這樣大大增加了 iOS 和 Android 測試代碼的復用性。

 

2.APPIUM思想

為了滿足移動自動化需求,Appium 遵循着一種哲學,重點體現於以下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 – 找一組元素

·/session/:sessionId/element/:id/click – 通過id找到元素之后點擊元素

·/session/:sessionId/source – 獲取頁面源碼

·/session/:sessionId/url – 獲取頁面url

·/session/:sessionId/timeouts/implicit_wait – 隱性等待

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM