1. 程式人生 > >Appium之自我介紹

Appium之自我介紹

配置 obi roi 調用 load 理念 平臺 屏幕 window

一、我是誰,我的特點是什麽

  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的設計旨在滿足移動自動化需求:

    1. 您不必重新編譯您的應用或以任何方式對其進行修改以實現自動化。
    2. 你不應該被鎖定到特定的語言或框架來編寫和運行你的測試。
    3. 當涉及到自動化API時,移動自動化框架不應該重蹈覆轍。
    4. 一個移動自動化框架應該是開放源代碼,在精神和實踐以及名義上!

  支持多平臺、多語言

    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之自我介紹