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

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

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

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

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

在這裏client其實就是發起command的設備,通常來講就是咱們代碼執行的機器,執行appium測試代碼的機器。狹義點理解,能夠把client理解成是代碼,這些代碼能夠是java/ruby/python/js的,只要它實現了webdriver標準協議就能夠。python

如何部署和使用Appium,一塊兒來看看吧!linux

---------------------------------------------------安裝各類組件----------------------------------------------------android

1、安裝nodejs0.8版本及以上ios

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

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

        

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

        

2、安裝配置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程序。

       一、JAVA_HOME

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

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

        建立好後則能夠利用%JAVA_HOME%做爲JDK安裝目錄的統一引用路徑;

        二、PATH

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

        三、CLASSPATH

         新建一個名叫「CLASSPATH」的用戶變量, 變量值爲    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

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

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

        

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

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

        僅下載SDK TOOLS安裝工具便可,沒必要安裝ANDROID STUDIO,咱們的測試代碼寫在Eclipse裏;打開頁面後首先看到的是Android studio,拉到頁面底部,能夠看到Android SDK。

    

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

        一、ANDROID_HOME

        新建一個名叫「ANDROID_HOME」的用戶變量

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

        二、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,確定是安裝成功了,不妨再檢查一下)

        

3、安裝Appium

        地址:http://appium.io/

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

        

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

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

        一、PATH

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

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

        

4、安裝Eclipse

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

        選擇Eclipse IDE for Java EE Developers,下載合適本身機型的IDE,Eclipse不須要安裝,直接將下載的安裝包解壓,並打開eclipse.exe,選擇一個工做目錄便可;

        

---------------------------------------------------測試前的準備----------------------------------------------------

1、啓動一個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沒法啓動被測試應用程序;啓動後的手機屏幕以下:

            

2、打開Appium

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

    

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

3、在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這樣一些事情:

    一、本次測試是啓動瀏覽器仍是啓動移動設備?

    二、是啓動andorid仍是啓動ios?

    三、啓動android時,app的package是什麼?

    四、啓動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名字,要用什麼工具呢?

1、monitor.bat

        該文件位於SDK安裝目錄tools下,如筆者在「C:\Program Files (x86)\Android\android-sdk\tools」下,雙擊運行monitor.bat便可運行,該工具能夠幫咱們找到android控件的content-description,爲之後的find_element_by_accessibility_id 定位方法作參數使用,也可查看被測app的appPackage,以下圖。

    

2、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建立一個帶有控件信息的截圖,將鼠標放在想要的地方,便可看到控件的相關屬性:

   

相關文章
相關標籤/搜索