Macaca環境搭建全教程


首先想要會Macaca,還得先會用github,不然你得死……因為各種例子都在git上,官網也一樣,蛋疼的很……

#基礎環境

1.JDK:jdk1.8-配置變量

2.Android SDK:sdk  25.0.2-配置變量

3.Cnpm:切換淘寶源,因為國外資源訪問很慢,而且有些資源還無法下載(如果npm可以滿足你的安裝需求,可跳過此步):

npm install -g cnpm --registry=https://registry.npm.taobao.org 
$ npm i -g macaca-cli 
// 等價替換
$ cnpm i -g macaca-cli 

4.Node.js:要求v4.0及以上(據說v7.0的也不行,所以建議7.0以下)

5.XCode :要求v7.3及以上(用Mac的同學直接從AppStore安裝就可以

 

#Macaca安裝

1.macaca-cli:

cnpm i macaca-cli -g

6.webdriver-client:

cnpm install webdriver-client

7.各種驅動:

$ npm i macaca-ios -g
$ npm i macaca-android -g $ npm i macaca-chrome -g $ npm i macaca-electron -g  (desktop應用)

8.安裝app-inspector,用於控件查找

$ npm i app-inspector -g

9.完成以上安裝后,macaca doctor 校驗安裝環境

坑位總結

1.如果提示以下信息,請檢查JDK版本。Version 52.0對應的是JDK1.8版本,於是更新本地JDK版本為1.8 問題成功解決。

[dx] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0

2..Android SDK問題,Macaca支持Android最低版本為API18, 請注意,另外build-tool請不要安裝預覽版。

 

3.關於pom.xml中引用macaca的jar包問題,這里需要去設置一下你在maven中引用的鏡像地址,我在maven配置的文章中有介紹。如果不設置的話,在引用的時候會發現無法加載

 

測試用例編寫

1.下載官方提供的Java版Demo用例

https://github.com/macaca-sample/sample-java

2.腳本分析

通過導入Maven項目,發現只有一個SampleTest.java類,后期官方更新版本只需要修改pom.xml中的版本號即可,便於維護。

SetUP()實例,針對於PC端:

@Before
public void setUp() throws Exception {
   // 在setUp()中配置被測應用的基礎信息,如平台版本,安裝包地址等
    Logger logger = Logger.getLogger(getClass());
    JSONObject porps = new JSONObject();
    porps.put("autoAcceptAlerts", true);
    porps.put("browserName", "electron");
    porps.put("platformName", "desktop");
    porps.put("version", "");
    porps.put("javascriptEnabled", true);
    porps.put("platform", "ANY");
    JSONObject desiredCapabilities = new JSONObject();
    desiredCapabilities.put("desiredCapabilities", porps);
    driver.initDriver(desiredCapabilities).setWindowSize(1280, 800).get("https://www.baidu.com");
}

針對移動端:

@Before
public void setUp() throws Exception {

    JSONObject porps = new JSONObject();
    porps.put("autoAcceptAlerts", true);
    porps.put("platformVersion", "9.3");
    porps.put("deviceName", "iPhone 5s");
    porps.put("platformName", "iOS");
    // 指定待測應用的安裝包
    porps.put("app", "**/**/targetApp.zip"); 
    JSONObject desiredCapabilities = new JSONObject();
    desiredCapabilities.put("desiredCapabilities", porps);
    driver.initDriver(desiredCapabilities);
    driver.platform = "ios"; 
    }

需要注意的是,對於iOS平台,app的安裝包需要基於.app包壓縮后的zip包,而不能用.ipa包進行壓縮,對於模擬器,可以直接安裝使用,但是對於真機,則需要涉及證書簽名等問題,后期介紹。

另外,對於配置參數,iOS與安卓有各自特有的參數請結合官方文檔使用。

用例編寫

@Test
public void test_case_1() throws Exception {
    driver
        .elementById("kw")
        .sendKeys("macaca")
        .sleep(1000)
        .elementById("su")
        .click()
        .sleep(3000);
      
    String html = driver.source();

    Assert.assertThat(html, containsString("<html>"));

    driver
        .elementByCss("#head > div.head_wrapper")
        .elementByXPath("//*[@id=\"kw\"]")
        .sendKeys(" elementByXPath")
        .elementById("su")
        .click()
        .takeScreenshot();
}

 以上是JavaScript寫法,更簡潔。

執行用例

Javascript版本的用例可以直接通過一條命令啟動macaca server並運行case,而Java版的用例則需要單獨啟動Macaca server,然后執行測試用例

1.進工程目錄:

$cd path/to/macaca-test-sample-java

2.啟動Macaca Server:

$macaca server
追加--verbose,可查看啟動詳情
$macaca server --verbose

3.當前工程的目錄下cmd

$mvn -s settings.xml clean install  (下載依賴包)
$mvn test    (執行用例)

 

UI控件-Inspector

早期,查找控件依賴於Android自帶的UIAutomator viewer,iOS則依賴於XCode中的Accessibility Inspector,但是這兩種工具查找起來相對麻煩,效率相對低下,針對這個問題,Macaca團隊提供了統一的Inspector工具,可以以Web的方式,方便的查看不論是安卓還是iOS的控件。

常用鏈接

Macaca官方教程

TestHome社區-Macaca一些技術貼

Macaca源碼


免責聲明!

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



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