首先想要會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的控件。
常用鏈接
TestHome社區-Macaca一些技術貼