Appium概念介紹(Introduction to Appium)

Appium是一種開源的工具,用于在iOS mobile、Android mobile和Windows桌面平臺上自動化本地、移動web和混合應(yīng)用程序。本機應(yīng)用程序是使用iOS、Android或Windows sdk編寫的。移動web應(yīng)用程序是使用移動瀏覽器訪問的web應(yīng)用程序(Appium在iOS和Chrome上支持Safari瀏覽器,或者Android上內(nèi)置的“瀏覽器”應(yīng)用程序)。混合應(yīng)用程序有一個圍繞“webview”的包裝,這是一個本地控件,可以與web內(nèi)容進行交互。像Phonegap這樣的項目,可以很容易地使用web技術(shù)構(gòu)建應(yīng)用程序,然后將這些技術(shù)捆綁到一個本機包裝器中,創(chuàng)建一個混合應(yīng)用程序。

重要的是,Appium是“跨平臺的”:它允許您使用相同的API編寫針對多個平臺(iOS、Android、Windows)的測試。這允許在iOS、Android和Windows testsuite之間進行代碼重用

對于“支持”其平臺和自動化方式的應(yīng)用程序的具體信息,請參見平臺支持文檔


Appium哲學(xué)(Appium Philosophy)

Appium的設(shè)計是為了滿足移動自動化需求,根據(jù)以下四項原則概述的一種哲學(xué):

1、您不必重新編譯應(yīng)用程序或以任何方式修改它以使其自動化。

2、您不應(yīng)該將其鎖定為編寫和運行測試的特定語言或框架。

3、當(dāng)涉及到自動化api時,移動自動化框架不應(yīng)該重新發(fā)明輪子。

A mobile automation framework shouldn't reinvent the wheel when it comes to automation APIs.

4、一個移動自動化框架應(yīng)該是開源的,在精神和實踐以及名字!

Appium Design

那么Appium項目的結(jié)構(gòu)是如何實現(xiàn)這種理念的呢?我們通過在引擎蓋下使用供應(yīng)商提供的自動化框架來滿足需求# 1。這樣的話,我們就不需要在你的應(yīng)用程序中使用任何特定的或第三方的代碼或框架來編譯,這意味著你正在測試你正在發(fā)送的同一個應(yīng)用程序。我們使用的供應(yīng)商提供的框架是:

1、iOS 9.3及以上:蘋果的XCUITest

2、iOS 9.3和更低:蘋果的UIAutomation

3、Android 4.2 +:谷歌UiAutomator

4、Android 2.3 +:谷歌的Instrumentation。(通過捆綁一個單獨的項目Selendroid來提供測試支持)

5、Windows:微軟的WinAppDriver

我們通過在一個API中封裝供應(yīng)商提供的框架來滿足需求# 2,這是WebDriverAPI。WebDriver(又名“Selenium WebDriver”)指定了一個客戶機-服務(wù)器協(xié)議(稱為JSON協(xié)議)。考慮到這種客戶機-服務(wù)器架構(gòu),使用任何語言編寫的客戶端都可以用于向服務(wù)器發(fā)送適當(dāng)?shù)腍TTP請求。在所有流行的編程語言中都有客戶端。這也意味著您可以自由使用您想要的測試運行器和測試框架;客戶端庫僅僅是HTTP客戶端,可以任意混合到您的代碼中。換句話說,Appium & WebDriver客戶端并不是技術(shù)上的“測試框架”——它們是“自動化庫”。您可以任意管理您的測試環(huán)境!

我們以同樣的方式滿足需求# 3:WebDriver已經(jīng)成為自動化web瀏覽器的實際標(biāo)準(zhǔn),并且是W3C的工作草案。為什么對于手機來說,有些東西是完全不同的呢?相反,我們已經(jīng)將該協(xié)議擴展到適用于移動自動化的額外API方法。

很明顯,需求# 4是給定的——你讀這篇文章是因為Appium是開源的


Appium概念(Appium Concepts)

Client/Server Architecture

Appium在它的核心是一個提供REST API的webserver。它接收來自客戶機的連接,偵聽命令,在移動設(shè)備上執(zhí)行這些命令,并響應(yīng)表示命令執(zhí)行結(jié)果的HTTP響應(yīng)。我們有一個客戶端/服務(wù)器架構(gòu),這打開了很多可能性:我們可以用任何具有http客戶端API的語言來編寫測試代碼,但是使用Appium客戶端庫比較容易。我們可以將服務(wù)器放在不同的機器上,而不是我們的測試運行。我們可以編寫測試代碼,并依賴像Sauce Labs這樣的云服務(wù)來接收和解釋這些命令。

Session

自動化總是在會話的上下文中執(zhí)行。客戶端以特定于每個庫的方式向服務(wù)器發(fā)起一個會話,但他們最終都會向服務(wù)器發(fā)送一個POST / session請求,并使用一個名為“desired capabilities”對象的JSON對象。此時,服務(wù)器將啟動自動化會話,并使用用于發(fā)送進一步命令的會話ID來響應(yīng)

Desired Capabilities

Desired capabilities是一組鍵和值(i.e.,a map or hash)發(fā)送到Appium服務(wù)器,告訴服務(wù)器我們有興趣啟動什么樣的自動化會話。還有各種功能(capabilities)可以在自動化過程中修改服務(wù)器的行為。例如,我們可以將platformName的功能(capabilities)設(shè)置為iOS,告訴Appium我們想要一個iOS會話,而不是Android或Windows系統(tǒng)。或者,我們可以將safariAllowPopups功能(capabilities)設(shè)置為true,以確保在Safari自動化會話期間,允許我們使用JavaScript打開新窗口。請參閱功能文檔(capabilities doc),了解Appium可用的完整功能列表。

Appium Server

Appium是用node . js編寫的服務(wù)器。它可以由NPM直接安裝和安裝:

$ npm install -g appium

$ appium


Appium Clients

有客戶庫(Java、Ruby、Python、PHP、JavaScript和c#)支持Appium對WebDriver協(xié)議的擴展。當(dāng)使用Appium時,您希望使用這些客戶端庫而不是常規(guī)的WebDriver客戶端。您可以在這里查看完整的庫列表。


Appium.app??Appium.exe

在Appium服務(wù)器上存在可以下載的GUI包裝器。這些與運行Appium服務(wù)器所需的所有內(nèi)容捆綁在一起,因此您不必?fù)?dān)心節(jié)點。他們還配備了一個檢查器(Inspector),讓你可以查看應(yīng)用程序的層次結(jié)構(gòu),這在編寫測試用例時很有用。


Getting Started

恭喜你!你現(xiàn)在擁有足夠的知識來開始使用Appium。為什么不去開始更詳細的需求和說明?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 前言:本篇文章并非我的原創(chuàng),而是翻譯自英文原著。這里的每一句話我都仔細揣摩過并且加以實踐,著實花了一些時間,在此記...
    顧顧314閱讀 22,095評論 0 19
  • Appium介紹 Appium 是一個自動化測試開源工具,支持 iOS 平臺和 Android 平臺上的原生應(yīng)用,...
    一直小魚閱讀 1,735評論 0 2
  • Appium Appium是一個開源的、跨平臺的測試自動化工具,用于本地、混合和移動web和桌面應(yīng)用程序,在模擬器...
    顧顧314閱讀 1,811評論 0 0
  • 前言 要想深入地掌握任何一門測試工具,對工具本身的架構(gòu)、原理、使用的協(xié)議及相關(guān)知識點都必須要有相關(guān)的了解和認(rèn)識,才...
    0xAI閱讀 4,773評論 3 55