1、我是誰,個人特色是什麼php
Appium是一款開源測試自動化框架,可用於原生、混合和移動Web應用程序。它使用WebDriver協議驅動iOS,Android和Windows應用程序。重要的是,Appium是「跨平臺」的:它容許您使用相同的API針對多個平臺(iOS,Android,Windows)編寫測試。這使得iOS,Android和Windows測試套件之間的代碼重用成爲可能。 html
「原生應用」是指那些用iOS或者 Android SDK 寫的應用(Application簡稱app)。java
「移動web應用」是指使用移動瀏覽器訪問的應用(appium支持iOS上的Safari和Android上的 Chrome)。python
「混合應用」是指原生代碼封裝網頁視圖——原生代碼和 web 內容交互。好比,像 Phonegap,能夠幫助開發者使用網頁技術開發應用,而後用原生代碼封裝,這些就是混合應用。git
Appium哲學github
根據如下四條原則概述的理念,Appium的設計旨在知足移動自動化需求:web
支持多平臺、多語言objective-c
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 |
2、我和selenium的關係
Appium類庫封裝了標準Selenium客戶端類庫,爲用戶提供全部常見的JSON格式selenium命令以及額外的移動設備控制相關的命令,如多點觸控手勢和屏幕朝向。
Appium客戶端類庫實現了Mobile JSON Wire Protocol(一個標準協議的官方擴展草稿)和W3C WebDriver spec(一個傳輸不可預知的自動化協議,該協議定義了MultiAction 接口)的元素。
Appium服務端定義了官方協議的擴展,爲appium 用戶提供了方便的接口來執行各類設備動做,例如在測試過程當中安裝/卸載App。這就是爲何咱們須要appium特定的客戶端,而不是通用的Selenium 客戶端。固然,appium 客戶端類庫只是增長了一些功能,而實際上這些功能就是簡單的擴展了Selenium 客戶端,因此他們仍然能夠用來運行通用的Selenium會話。
3、我是咋工做的咧
我這麼厲害,那我是怎麼工做的呢?經過下圖簡單的展現出了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自動化腳本。
4、怎麼才能讓我爲你效力
1.若是你須要安裝使用Appium,你必須先要有一個基礎的JAVA環境,即安裝並配置好JDK。具體配置教程的傳送門
2.編程語言,一門你熟悉且運用的比較順手的編程語言。我用的是Python,目前python的下載和安裝已經變得很簡單了,直接去官網下載而後運行安裝就行了。官網下載傳送門
3.有了編程語言,你必須就得有一個用於「搬磚」(寫代碼)的IDE,這個根據我的喜愛不一樣,都會有不一樣選擇。惟一原則:用着順手就好。
4.下載安裝一個Appium Server
可根據你所使用的計算機系統平臺,選擇一個對應的Appium Server。具體可參考3、我是咋工做的咧
5.下載安裝一個Appium Client
能夠在支持多平臺、多語言小節的Client列表內,根據你選擇的語言來選擇下載並安裝對應的Appium Client。
6.最後爲了方便調試和更順暢的玩耍安卓應用自動化,你還須要有一個安卓的SDK。Android SDK配置教程
Ps:在編寫過程當中對蟲師大大的相關文章有所借鑑,在此表示感謝