天天看點

Appium知多少

2021-06-25 23:33  蟲師  閱讀(0)  評論(0)  編輯  收藏  舉報

appium 基本概念介紹

appium我想大家都不陌生,這是主流的移動自動化工具,但你對它真的了解麼?為什麼很多同學搭建環境時碰到各種問題也而不知該如何解決。

appium是一個合成詞,分别取自“application”的前三個字母和“selenium”的後三個字母。application為“應用”,我們一般把移動平台上的應用簡稱為app,而selenium是目前主流的web ui自動化測試工具;而appium與selenium之間有着許多聯系。appium是寓意為:移動端的selenium自動化測試工具。因為appium是合成詞,是以未找到标準讀音,個人更傾向于發音:[ æpi'ʌm ]

我們知道ios和android是兩個完全不同的系統。ios屬于類unix的商業作業系統,而android是一種基于linux的自由及開放源代碼的作業系統;ios的開發主要使用的objective-c和swift語言,而android開發主要使用的java和kotlin。為什麼appium 可以做到對這兩大平台的支援?

Appium知多少

xcuitest

xcuitest蘋果公司在ios 9.3版推出的自動化架構。從ios 10及更高版本開始,它是唯一受支援的自動化架構。

appium 1.6.0使用蘋果新的xcuitest架構,它支援ios 10/xcode 8。appium内部使用facebook的webdriveragent項目來支援xcuitest。 對于較舊的ios版本(<= 9.3),appium使用apple的uiautomation庫。典型用法是在所需功能中傳遞以下内容:

<code>automationname:xcuitest</code>

facebook webdriveragent是ios的webdriver伺服器實作。它用于遠端控制連接配接的裝置或模拟器,并允許啟動應用程式,執行指令(如點選和滾動),并終止應用程式。

uiautomator 2

uiautomator 2是基于android工具的自動化架構,允許使用者建構和運作ui測試。appium使用google的uiautomator在真實裝置和模拟器上執行指令。uiautomator是google在ui級别為本地應用程式自動化測試架構。典型的用法是在所需的功能中傳遞以下内容:

<code>automationname:uiautomator2</code>

在appium 1.6版本中,appium為uiautomator 2提供了支援。appium使用appium-android-bootstrap子產品與uiautomator進行互動。它允許将指令發送到裝置,然後使用android的uiautomator測試架構在真實裝置上執行指令。

當appium用戶端請求建立新的androiddriver會話時,用戶端将所需的功能傳遞給appium節點伺服器。 uiautomator2驅動程式子產品建立會話。然後,在連接配接的android裝置上安裝uiautomator2伺服器apk,啟動netty伺服器并啟動會話。netty伺服器會話啟動後,uiautomator2伺服器繼續在裝置上偵聽請求并作出響應。

appium 為什麼即支援web應用,又支援原生應用,還支援混合應用?

移動應用的類型主要分以下幾類:

native app:原生應用

mobile web app:移動web應用

hybrid app:混合應用

Appium知多少

如果不知道什麼是原生應用,請打開你的手機電腦。appium将操作解析為uiautomator測試庫的方法并執行(僅android)。

如果不知道什麼是web應用,請打開你的手機浏覽器。appium将操作交給chromedriver執行。熟悉selenium的同學知道,它是chrome浏覽器驅動,因為appium也遵循 webdriver 規範,在appium處理之後把請求轉發給chromedriver執行(僅android)。

如果不知道什麼是混合應用,請打開支付寶,關掉網絡在“我的”和“口碑”頁面切換。在它下面運作測試會兼具用到uiautomator和chromedriver 來解析和運作腳本。

appium 為什麼支援多語言?

appium是針對每一種語言都開發了相應的client庫,友善不同的語言使用者的使用。這些都不同語言編寫的腳本的執行最終會由appium server/desktop 進行解析,并交由驅動相應的環境運作。