1. 程式人生 > 其它 >Appium自動化測試框架

Appium自動化測試框架

1.基礎

--appium是一款開源的移動端自動化測試工具,支援ios和android平臺上開發的APP

--appium支援跨平臺使用,可使用同一套API來寫自動化測試指令碼,在ios/android平臺上測試,加大了程式碼的複用性

--appium支援多語言,Python/Java/Ruby等

--appium真正的工作引擎其實是第三方自動化框架,無需在APP中植入appium特地程式碼或第三方程式碼

iOS:蘋果的UIAutomation框架

android 4.2+:Google的UIAutomator框架

android 2.3+:Google的Instrumentation框架

--appium把第三方框架封裝成一套API,稱為WebDriver(Selenium WebDriver),指定了客戶端到伺服器的協議

--appium擴充了WebDriver的協議,添加了與移動測試自動化相關的API方法

--appium相關概念

C/S架構:客戶-伺服器架構,只要客戶端能傳送HTTP請求給伺服器,客戶端就可使用多種程式語言實現;appium核心是一個Web伺服器,該伺服器提供了一套REST介面。伺服器在收到客戶端命令後,會在移動裝置上執行這些命令,後將執行結果放在HTTP響應中並返回客戶端。

會話:自動化總是在名為會話的上下文中進行。客戶端將初始化一個用來和伺服器互動的會話,然後傳送附有Desired Capabilities的JSON物件引數的POST請求/會話給伺服器,伺服器就會開始一個自動化的會話,返回一個會話ID,客戶端在得到這個ID後便開始傳送後續命令。

Desired Capabilities:一些鍵值對的集合,告訴伺服器要啟動怎樣的自動化會話。

Appium伺服器:使用Node.js編寫,功能是監聽介面,接收PC客戶端傳送的指令,將其轉換為移動裝置能識別的指令,後傳送給移動裝置進行操作,再等待移動裝置返回操作結果,併發送給客戶端。伺服器可放在PC客戶端,也可放在雲端,預設埠號4723

Appium客戶端:主要指實現了Appium功能的WebDriver協議的客戶端庫,其中提供了一些封裝好的API以支援訪問移動端。客戶端提供了很多語言庫以支援JAVA等程式語言,這些語言庫讓Appium實現了對WebDriver協議的擴充套件。當使用Appium時,只需要使用這些語言庫代替常規的WebDriver庫就可以了

Appium Desktop:不僅封裝了執行Appium伺服器所需的所有依賴元素,還提供了Inspector工具,以方便使用者檢查應用的介面元素的層級,從而簡化測試用例編寫

--Appium工作原理:(Appium基於WebDriver協議,並利用Bootstrap.jar來呼叫UIAutomator框架,進而執行指令)

編寫客戶端指令碼-->開啟Appium伺服器-->Appium伺服器在收到客戶端請求後,將請求解析為UIAutomator可識別的指令,再將這些指令轉發給Android裝置的Bootstrap.jar服務,預設使用4724埠-->呼叫UIAutomator,在裝置上執行自動化測試並將結果返回給Appium伺服器-->Appium伺服器將執行結果返回給Appium客戶端

--Appium與Selenium

Appium類庫封裝了標準的Selenium客戶端類庫,為使用者提供了所有常見的JSON格式的Selenium命令以及額外的與移動裝置控制相關的命令;Appium擴充套件了WebDriver協議,以前WebDriver API可繼承,Selenium WebDriver可直接拿來用

2.環境搭建

--需要:程式語言(java),appium client, appium server, android sdk, android studio/idea, android模擬器/android手機/iphone手機

--安裝Android SDK

Android SDK是android應用的軟體開發工具包,提供了android api庫和開發工具構建。 https://www.jianshu.com/p/2078112331fb Android SDK的安裝與環境變數配置

http://www.testclass.net/appium_base/appium-base-sdk

--.apk files are for android apps. / .ipa for iOS / Xcode是IOS的開發環境

--安裝java->安裝Android sdk->安裝Android studio(包含了Android sdk和Android模擬器)/IDEA->安裝appium客戶端-->安裝appium(伺服器)->安裝android手機驅動(adb devices) / 開啟模擬器

3.定位Appium元素的3個利器

--UI Automator Viewer:僅限Android系統

--Inspector:Android & IOS

--Chrome瀏覽器的ADB外掛,主要用於基於瀏覽器的Web應用

4.Desired Capabilities

--Desired Capabilities在啟動session時必須提供

--Desired Capabilities本質上是key value的物件,客戶端將這些鍵值對發給服務端,告訴服務端啟動怎樣的會話

--Appium的Desired Capabilities是擴充套件了webdriver的Desired Capabilities的,一般需指定以下配置

platformName---使用哪種移動平臺,ios, Android, FirefoxOS

deviceName--指定真機或模擬器的裝置名稱,如Nexus_5X_API_29

automationName---使用哪種自動化引擎,appium(預設)or Selendroid (非必須)

platformVersion---指定平臺的系統版本,如Android平臺,版本為5.1

appPackage---待測app的包名, 如com.example.android.myapp, com.android.settings

appActivity---待測app的活動名,如MainActivity, .Setting。注意:原生app的話要在activity前加"."

app---安裝包路徑,若android指定了appPackage和appActivity,則不需要該引數(非必須)

browserName---使用的瀏覽器名稱,Chrome/Safari(非必須)

noReset---不重置應用,false(預設)或true(非必須)

--如何獲取platformVersion

cmd-->adb shell getprop ro.build.version.release

--如何獲取appPackage/appActivity

情況一:提供被測應用的APK包(適用於Android系統)

使用AAPT構建工具(C:\Users\yoyo\Android-SDK\build-tools\31.0.0\aapt.exe)

命令:cmd->aapt dump badging apk 包名,如 aapt dump badging apk fengkuangshuiguodazhan_112.apk

情況二:提供安裝了被測應用的手機裝置

cmd-->adb shell dumpsys window | findstr mCurrentFocus

5.Android Studio學習教程

Android Studio 簡介丨慕課網教程 (imooc.com)