Appium入門指導

Appium入門指導

讀音:[ æpi’ʌm ] 挨批額目

github:https://github.com/appium/appium

博客:http://www.yangyanxing.com/article/1266.html

Appium介紹


Appium是一個移動端的自動化框架,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。

可用於IOS和Android以及firefox的操作系統。

原生的應用是指用android或ios的sdk編寫的應用,移動網頁應用是指網頁應用,類似於ios中safari應用或者Chrome應用或者類瀏覽器的應用。

混合應用是指一種包裹webview的應用,原生應用於網頁內容交互性的應用。

重要的是Appium是跨平臺的,何爲跨平臺,意思就是可以針對不同的平臺用一套api來編寫測試用例。

Appium的哲學


Appium遵循下面幾個原則(其實也是appium的特點):
  1. 使用自動化來測試一個app,但是不需要重新編譯
  2. 寫自動化case,不需要學習特定的語言
  3. 一個自動化框架不需要重複造輪子
  4. 一個自動化框架需要開源,在精神和實踐上實現開源

Appium的設計


爲了遵循上面的原則,appium的解決方法分別如下:
  1. 第一條:採用底層驅動商提供的自動化框架。

    IOS:蘋果的UIAutomation

    Android 4.2+:谷歌的 UiAutomator

    Android 2.3+:谷歌的Instrumentation(已被selendroid取代)

  2. 第二條:採用底層驅動商提供統一API,就是WebDriver API。

    WebDriver(也稱Selenium WebDriver)其實是一個C/S架構的協議,叫做JSON Wire Protocol。通過這個協議,用任何語言寫成的客戶端都可以發送HTTP請求給服務器。這就意味着你可以自由選擇你想要使用的測試框架和執行器,也可以將任何包含HTTP客戶端的庫文件加入到你的代碼中。換句話說,Appium的WebDriver不是一個技術上的測試框架,而是一個自動化庫。

  3. 第三條:因爲WebDriver是一個非常**的網頁協議且已經正在起草W3C的標準。

    我們爲什麼還要創造其他東西呢?相反,我們在WebDriver的基礎上,擴展了一些適合移動端自動化協議的API。

  4. 第四條:你之所以能讀到這篇文章,就是因爲我們開源啦。

Appium概念


C/S 架構

Appium的核心是一個遵守REST設計風格的web 服務器,它接受客戶端的連接,接收客戶端的命令,在手機設備上執行命令,然後通過HTTP的響應收集命令執行的結果。這種架構給我們提供了很好的開放特性:只要某種語言有http 客戶端的api,我們就可以通過這個語言寫我們的測試代碼。

C/S 架構

Session

自動化的過程通常在session上下文中執行。客戶端初始化一個session會話,雖然不同的語言初始化的方式不同,但是他們都要發送POST/session 請求到服務器端,這些請求裏面都會帶有一個對象:desired capabilities ,這個時候服務器端會啓動自動化session然後返回一個session ID,以後的命令都會用這個seesion ID去匹配。

Desired Capabilities

desired capabilities 這個對象其實是一個key-value的集合,裏面包含了各種各樣的信息,發送到服務器端後,服務器解析這些信息就知道了客戶端對哪種session感興趣,然後就會啓動相應的session。這裏面的信息會影響着服務器端啓動session的類型。比如你platformName的值爲ios,就是告訴服務器啓動一個ios的session,而不是android seesion。如果safariAllowPopups的值爲true,這是告訴safari類的自動化session,可以使用js打開新窗口。具體信息查看capabilities doc 詳細瞭解。

Appium Server

Appium server使用node.js寫的http服務器,遵守REST風格

Appium Clients

客戶端的概念不是我們傳統意義上的客戶端,這裏客戶端更好的理解是一個擴展WebDriver 協議的庫,你在用自己喜歡的語言寫case的時候,將該語言擴展WebDrvier的庫添加到你的環境中,你就可以理解這是個客戶端。具體的庫可以參見下面的內容:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章