Windows下部署Appium教程(Android App自動化測試框架搭建)


摘要: 1,appium是開源的移動端自動化測試框架; 2,appium可以測試原生的、混合的、以及移動端的web項目; 3,appium可以測試ios、android、firefox os; 4,appium是跨平台的,可以用在osx,windows以及linux系統上;

----------------------------------------------appium的一些基本概念----------------------------------------------

appium的核心其實是一個暴露了一系列REST API的server。

這個server的功能其實很簡單:監聽一個端口,然后接收由client發送來的command。翻譯這些command,把這些command轉成移動設備可以理解的形式發送給移動設備,然后移動設備執行完這些command后把執行結果返回給appium server,appium server再把執行結果返回給client。

在這里client其實就是發起command的設備,一般來說就是我們代碼執行的機器,執行appium測試代碼的機器。狹義點理解,可以把client理解成是代碼,這些代碼可以是java/ruby/python/js的,只要它實現了webdriver標准協議就可以。

如何部署和使用Appium,一起來看看吧!

---------------------------------------------------安裝各種組件----------------------------------------------------

一、安裝nodejs0.8版本及以上

        地址:http://nodejs.cn/download/

        下載合適自己機型的版本,Windows下安裝很簡單,一直下一步;

        

        驗證安裝是否成功,Win+R>>cmd->>node - v,如出現類似以下提示,證明安裝成功!

        

二、安裝配置Java的JDK(Java軟件開發工具包)

     地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

     下載合適自己機型的版本,Windows下安裝很簡單,一直下一步;

      打開jdk的安裝目錄下的bin目錄,里面有許多后綴名為exe的可執行程序,這些都是JDK包含的工具。通過配置JDK的環境變量,我們可以方便地調用這些工具及它們的命令:

        javac:Java編譯器,將源代碼轉成字節碼。

        jar:打包工具,將相關的類文件打包成一個文件。

        javadoc:文檔生成器,從源碼注釋中提取文檔。

        jdb:debugger,調試查錯工具。

        java:運行編譯后的java程序。

       1、JAVA_HOME

        新建一個名叫“JAVA_HOME”的用戶變量,如不會請參考:http://my.oschina.net/u/563250/blog/490614

        變量值為JDK的安裝目錄,筆者為    C:\Program Files\Java\jdk1.8.0_51

        創建好后則可以利用%JAVA_HOME%作為JDK安裝目錄的統一引用路徑;

        2、PATH

        在已有的環境變量PATH變量值的最后追加     ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

        3、CLASSPATH

         新建一個名叫“CLASSPATH”的用戶變量, 變量值為    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

        注意變量值字符串前面有一個"."表示當前目錄,設置CLASSPATH 的目的,在於告訴Java執行環境,在哪些目錄下可以找到您所要執行的Java程序所需要的類或者包;

        驗證安裝是否成功,Win+R>>cmd->>java -version,如出現類似以下提示,證明安裝成功!

        

三、安裝配置Android的SDK(Android軟件開發工具包)

        地址:http://developer.android.com/studio/installing/index.html

        僅下載SDK TOOLS安裝工具即可,不必安裝ANDROID STUDIO,我們的測試代碼寫在Eclipse里;打開頁面后首先看到的是Android studio,拉到頁面底部,可以看到Android SDK。

    

        安裝完成后,配置環境變量:

        1、ANDROID_HOME

        新建一個名叫“ANDROID_HOME”的用戶變量

        變量值為Android SDK的安裝目錄,筆者為    C:\Program Files (x86)\android-sdk-windows

        2、PATH

         在已有的環境變量PATH變量值的最后追加     ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

         在安裝目錄或開始菜單中找到SDK Manager.exe並打開,工具會自動檢測系統當前安了哪些SDK工具,並獲取各個版本可安裝的SDK,默認情況下只安裝了Tools下的Android SDK Tools;圖中Android SDK          Platform-tools是我自行安裝的。除默認已安裝選項外,其他選項可全部選中安裝,也可以選擇相同選項中的一項進行安裝。

         

         獲取可安裝的SDK版本時,國內有牆,有時候會出現獲取失敗的情況,如下圖:

         

        可以通過如下設置解決問題,選擇Tools->>Options打開Android SDK Manager - Settings

        將HTTP Proxy Server和HTTP Proxy Port,連接服務器使用的代理地址和端口分別修改為“mirrors.opencas.cn”“80”;

        若該地址仍然無法解決問題不正確,請參考該網站獲得更多代理地址,或從該網站上直接手動下載:http://www.androiddevtools.cn/

        或者遇到這種錯誤:

        Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated

        Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-7.xml, reason: SSLPeerUnverified peer not authenticated

        遇到這種錯誤一般是因為在公司內網,公司內網設置了代理,需要在Android SDK Manager中設置代理為公司代理。

       

       修改代理地址和端口后,選擇Packages->>Reload,重新獲取,等待Android SDK Tools下方提示Done loading packages,即加載完成。選擇需要安裝的SDK,Appium官方推薦API 17及以上的版本都支          持,可以任意安裝一個API 17及以上的版本,選擇右側的Install xx packages;

       

       驗證安裝是否成功,Win+R>>cmd->>android -h,如出現類似以下提示,證明安裝成功!(當然,已經可以正常運行Android SDK Tools,肯定是安裝成功了,不妨再檢查一下)

        

三、安裝Appium

        地址:http://appium.io/

        點擊Download Appium,默認就下載的是AppiumForWindows安裝包,下載完成后,解壓安裝包,運行appium-installer.exe進行安裝;

        

       注:還可以使用node.js的模塊管理工具npm,輸入命令在線安裝(Win+R->>cmd->>npm install -g appium),但在線安裝失敗的幾率比較大,貌似是因為網絡不穩或權限問題無法解壓,還是推薦直接下          載Windows安裝包;

        安裝完成后,配置環境變量:

        1、PATH

        在已有的環境變量PATH變量值的最后追加Appium的安裝bin目錄,筆者為    C:\Program Files (x86)\Appium\node_modules\.bin

        驗證安裝是否成功,Win+R>>cmd->>appium,如出現類似以下提示,證明安裝成功!

        

四、安裝Eclipse

        地址:http://www.eclipse.org/downloads/

        選擇Eclipse IDE for Java EE Developers,下載合適自己機型的IDE,Eclipse不需要安裝,直接將下載的安裝包解壓,並打開eclipse.exe,選擇一個工作目錄即可;

        

---------------------------------------------------測試前的准備----------------------------------------------------

一、啟動一個Android模擬器或者連接上一個API 17以上的android真機

        (1)打開Android SDK Tools中的AVD Manager,點擊右側的create,新建一個新的AVD(Android Virtual Device),設置AVD的各個屬性,點擊OK;

        注:若SDK下載安裝完整,但CPU/ABI一欄無法選擇,被灰掉或禁用,則可能是SDK安裝目錄太長,將SDK拷貝到別的目錄,再次打開AVD Manager.exe,新建一個AVD,CPU/ABI一欄就可以選擇了;

        

        (2)點擊右側的start,選擇Launch,啟動模擬器;

        

        (3)點擊launch后,可能會遇到下圖中的錯誤:(如果沒有遇到請忽略這步)

            

            這是因為電腦系統中Intel Virtualization Technology(VT-x)沒有打開,解決辦法為,在BIOS中開啟Intel Virtualization Technology:在開機時按esc,選擇F10(每個人電腦進入BIOS方法可能不同),選擇Advanced->device->勾上interl virtualization Technology,保存退出。然后到Android SDK安裝文件夾下的extras\intel\Hardware_Accelerated_Execution_Manager運行一下                         intelhaxm-android.exe,我的目錄是C:\Program Files (x86)\android-sdk-windows\extras\intel\Hardware_Accelerated_Execution_Manager。再點擊launch就沒有報這個錯誤了,模擬器進入連接狀態,等待一會,可以看到一個手機屏幕。

            注:如果手機屏幕為鎖定狀態,一定要滑動屏幕解鎖,否則Appium無法啟動被測試應用程序;啟動后的手機屏幕如下:

            

二、打開Appium

    雙擊桌面上Appium圖標,點擊右上角的Launch the Appium Node Server按鈕;

    

    或:Win+R->>cmd->>appium,啟動Appium Server服務(和上訴方法二選一即可);

三、在Eclipse中配置Selenium、Appium類庫

(1)下載Selenium類庫

    client地址:http://selenium-release.storage.googleapis.com/3.0.1/selenium-java-3.0.1.zip 

    server地址:https://goo.gl/Lyo36k

    (確認2016.11.14有效,如無效請訪問http://docs.seleniumhq.org/download/ 進行下載)

(2)下載Appium java版類庫

    地址:http://appium.io/downloads.html

    選擇java,下載jar包;

    

    

(3)在Eclipse中導入

        打開Eclipse,新建一個java Project

        

   在新項目上,新建一個Folder,命名為“lib”,將下載的三個類庫“selenium-java-3.0.1.zip”、“selenium-server-standalone-3.0.1.jar”、“java-client-4.1.2.jar”,從文件夾中直接拖放到“lib”下;

         

 

    全選lib文件夾下的3個類包文件,右鍵->>Build Path->>add to Build Path,這3個類包就會加到Reference Libraries中;

    

-------------------------------------------------------開始測試--------------------------------------------------------

    (1)在項目的src下,新建一個package,在package下新建一個class(筆者的命名分別為“appiumtest”和“demo2”);

    

    在類中輸入以下代碼,代碼內容為,啟動Android模擬器上自帶的Calculator計算器,並分別點擊“1+2=”;  

package appiumtest;

import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class demo2 {

private AndroidDriver driver;

@Before
public void calc() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
//capabilities.setCapability(CapabilityType.BROWSER_NAME, "");// 這句不是必須的
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
}

@After
public void tearDown() throws Exception {
driver.quit();
}

@Test
public void add() {
driver.findElementByName("1").click();
driver.findElementByName("+").click();
driver.findElementByName("2").click();
driver.findElementByName("=").click();
driver.quit();
}
}

    (2)在項目上右鍵->>Run As->>JUnit Test;

    

(3)測試用例正在運行,查看Appium,輸出了很多運行的日志,查看模擬器,Appium控制模擬器打開了自帶的計算器,並分別點擊“1+2=”,至此部署Appium測試環境已完成並測試成功!接下來就可以開發真正的自動化測試用例啦!

 

--------------------------------------分割線(Desired Capabilities詳解)-------------------------------------

        Desired Capabilities在啟動session的時候是必須提供的,它本質上是key value的對象,它告訴appium server這樣一些事情:

    1、本次測試是啟動瀏覽器還是啟動移動設備?

    2、是啟動andorid還是啟動ios?

    3、啟動android時,app的package是什么?

    4、啟動android時,app的activity是什么?

  Appium的Desired Capabilities是擴展了webdriver的Desired Capabilities的,下面的一些通用配置是需要指定的:

Capability名稱 描述 可能的值舉例
automationName 使用哪種自動化引擎(默認:Appium) Appium   ,Selendroid
platformName 使用哪種移動平台 iOS,Android,FirefoxOS
platformVersion 移動平台版本 7.1,4.4
deviceName 啟動哪種設備?真機還是模擬器 iPhone   Simulator, iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy   S4,etc…. On iOS,this should be one of the valid devices returned by   instruments with instruments -s devices. On Android this capability is   currently ignored.
app 應用(.ipa   .apk .zip)的絕對路徑或遠程的Http URL /abs/path/to/my.apk   , http://myapp.com/app.ipa
browserName 移動瀏覽器的名稱(如果被測應用程序已安裝到移動設備,則可設置為空字符串) ‘Safari’   for iOS and ‘Chrome’, ‘Chromium’, or ‘Browser’ for Android
newCommandTimeout 客戶端退出和結束會話之前,Appium等待從客戶端發來一個新命令的時間,即超時時間(秒) 60
autoLaunch 是否自動安裝和啟動被測app(默認:true) true,   false
language (Sim/Emu-only)   Language to set for the simulator / emulator fr
locale (Sim/Emu-only)   Locale to set for the simulator / emulator fr_CA
udid 物理機的id 1ae203187fc012g
orientation (Sim/Emu-only)   start in a certain orientation LANDSCAPE,PORTRAIT
autoWebview Move   directly into Webview context(默認:false) true,   false
noReset 在測試前不重置app的狀態(默認:false) true,   false
fullReset IOS:刪除整個模擬器目錄;Android:通過卸載app的方式重置app的狀態,而不是僅清除app的數據,在Android設備上,當測試結束后,也會徹底移除app(默認:false) true, false

下面這些屬性是android平台特定的(還有很多沒有列出來的可以查看:http://appium.io/documentation.html):

Capability名稱 描述 可能的值舉例
appActivity 待測試的app的Activity名字,原生app的話要在activity前加個"." MainActivity,   .Settings
appPackage 待測試的app的java   package com.example.android.myApp,   com.android.settings

 

 

--------------------------------------分割線(工具的使用)-------------------------------------

通過上一節我們發現,要獲取app的package和activity名字,要用什么工具呢?

一、monitor.bat

        該文件位於SDK安裝目錄tools下,如筆者在“C:\Program Files (x86)\Android\android-sdk\tools”下,雙擊運行monitor.bat即可運行,該工具可以幫我們找到android控件的content-description,為以后的find_element_by_accessibility_id 定位方法做參數使用,也可查看被測app的appPackage,如下圖。

    

二、uiautomatorviewer.bat

        該文件位於SDK安裝目錄tools下,如筆者在“C:\Program Files (x86)\Android\android-sdk\tools”下,雙擊uiautomatorviewer.bat即可運行,該工具主要用來查看控件的屬性,比如resource id,class name等,也可查看被測app的appPackage(Desired Capabilities中使用)。

        使用方法(以計算器為例):將模擬器的打開,點擊左上角綠色的Android小圖標(Device ScreenShot),可以為當前界面UI創建一個帶有控件信息的截圖,將鼠標放在想要的地方,即可看到控件的相關屬性:

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM