Appium之自我介紹
一、我是誰,我的特點是什麽
Appium是一款開源測試自動化框架,可用於原生、混合和移動Web應用程序。它使用WebDriver協議驅動iOS,Android和Windows應用程序。重要的是,Appium是“跨平臺”的:它允許您使用相同的API針對多個平臺(iOS,Android,Windows)編寫測試。這使得iOS,Android和Windows測試套件之間的代碼重用成為可能。
-
“原生應用”是指那些用iOS或者 Android SDK 寫的應用(Application簡稱app)。
-
“移動web應用”是指使用移動瀏覽器訪問的應用(appium支持iOS上的Safari和Android上的 Chrome)。
-
“混合應用”是指原生代碼封裝網頁視圖——原生代碼和 web 內容交互。比如,像 Phonegap,可以幫助開發者使用網頁技術開發應用,然後用原生代碼封裝,這些就是混合應用。
Appium哲學
根據以下四條原則概述的理念,Appium的設計旨在滿足移動自動化需求:
- 您不必重新編譯您的應用或以任何方式對其進行修改以實現自動化。
- 你不應該被鎖定到特定的語言或框架來編寫和運行你的測試。
- 當涉及到自動化API時,移動自動化框架不應該重蹈覆轍。
- 一個移動自動化框架應該是開放源代碼,在精神和實踐以及名義上!
支持多平臺、多語言
Appium是跨平臺的,可以用在OSX,Windows以及Linux桌面系統上運行。
Appium選擇了Client/Server的設計模式。只要Client能夠發送http請求給server,那麽的話Client用什麽語言來實現都是可以的,這就是Appium及Selenium(WebDriver)如何做到支持多語言的原因;
Appium擴展了WebDriver的協議,沒有自己重新去實現一套。這樣的好處是以前的WebDriver API能夠直接被繼承過來,以前的Selenium(WebDriver)各種語言的Building都可以拿來就用,省去了為每種語言開發一個Client的工作量;
語言/框架 | Github地址 |
---|---|
Python | https://github.com/appium/python-client |
Ruby | https://github.com/appium/ruby_lib |
Java | https://github.com/appium/java-client |
JavaScript (Node.js) | https://github.com/admc/wd |
Objective C | https://github.com/appium/selenium-objective-c |
PHP | https://github.com/appium/php-client |
C# (.NET) | https://github.com/appium/appium-dotnet-driver |
RobotFramework | https://github.com/jollychang/robotframework-appiumlibrary |
二、我和selenium的關系
Appium類庫封裝了標準Selenium客戶端類庫,為用戶提供所有常見的JSON格式selenium命令以及額外的移動設備控制相關的命令,如多點觸控手勢和屏幕朝向。
Appium客戶端類庫實現了Mobile JSON Wire Protocol(一個標準協議的官方擴展草稿)和W3C WebDriver spec(一個傳輸不可預知的自動化協議,該協議定義了MultiAction 接口)的元素。
Appium服務端定義了官方協議的擴展,為appium 用戶提供了方便的接口來執行各種設備動作,例如在測試過程中安裝/卸載App。這就是為什麽我們需要appium特定的客戶端,而不是通用的Selenium 客戶端。當然,appium 客戶端類庫只是增加了一些功能,而實際上這些功能就是簡單的擴展了Selenium 客戶端,所以他們仍然可以用來運行通用的Selenium會話。
三、我是咋工作的咧
我這麽厲害,那我是怎麽工作的呢?通過下圖簡單的展示出了Appium的工作原理(該原理圖是本人根據個人理解和網上的一些資料所得出,如有不對之處,歡迎指正)。
首先是我們寫的測試腳本(Test Scripts),Appium支持多語言,因為它針對流的幾種語言分別開發的相應的Appium庫。好處就是我們可以選擇自己熟悉的語言編寫Appium腳本。
然後是它的服務,Appium支持多平臺,包括MAC和Windows。它針對這兩大平臺開發了Appium-Server。
其次是驅動同時支持Android 和 iOS兩個操作系統,Appium-Server 通過調用不同的接口來實現對Apk/Ipa的操作。針對Android設備,Android SDK 版本在17以上的會通過調用Android 系統 UIAutomator 組件的接口來實現相應操作,SDK版本在17以下會通過調用Android系統Senlendroid組件的接口來實現相應操作;針對IOS設備,則通過調用IOS系統Apple Instruments組件的接口來實現相應操作的。
最後對不同系統的設備上應用的自動化操作,同時支持Android 模擬器、真機和IOS真機。
綜上所述,這就使得Appium變得非常靈活。
即,當我在MAC平臺上,通過Python(python-client )編寫了一個Appium自動化測試腳本並執行,請求會首先到 Appium.dmg (Mac下的Appium-Server),Appium-Server通過解析,然後調用IOS系統的Apple Instruments組件的接口從而驅動iOS設備來執行Appium自動化測試腳本。
亦或者,我在Windows平臺上,通過Java( Java-client )編寫了一個Appium自動化腳本並執行,請求會首先到 AppiumForWindow.zip(Window下的Appium-Server),Appium-Server通過解析,然後調用Android模擬器或真機相關組件的接口從而驅動Android模擬器或真機來執行Appium自動化腳本。
四、怎麽才能讓我為你效力
1.如果你需要安裝使用Appium,你必須先要有一個基礎的JAVA環境,即安裝並配置好JDK。具體配置教程的傳送門
2.編程語言,一門你熟悉且運用的比較順手的編程語言。我用的是Python,目前python的下載和安裝已經變得很簡單了,直接去官網下載然後運行安裝就好了。官網下載傳送門
3.有了編程語言,你必須就得有一個用於“搬磚”(寫代碼)的IDE,這個根據個人喜好不同,都會有不同選擇。唯一原則:用著順手就好。
4.下載安裝一個Appium Server
可根據你所使用的計算機系統平臺,選擇一個對應的Appium Server。具體可參考三、我是咋工作的咧
5.下載安裝一個Appium Client
可以在支持多平臺、多語言小節的Client列表內,根據你選擇的語言來選擇下載並安裝對應的Appium Client。
6.最後為了方便調試和更順暢的玩耍安卓應用自動化,你還需要有一個安卓的SDK。Android SDK配置教程
Ps:在編寫過程中對蟲師大大的相關文章有所借鑒,在此表示感謝
Appium之自我介紹