点击此链接看视频

Android 模拟器效果 链接

先下载我们的 sample app 安卓包。

目录结构:

| -- app
|     | -- android-app-bootstrap.zip
| -- macaca-test
|     | -- myapp.test.js
| -- package.json

新建 app 文件夹,将 sample app 打包好放到下面。新建 macaca-test 文件夹,macaca run --server 时默认会跑这个文件夹下以 .test.js 为后缀名的用例文件。

新建 package.json 文件,设置好你的 nodejs 模块依赖,然后执行命令行 cnpm i ,执行完以后你会发现会多出一个 node_modules 目录,这就是下载下来的 node 模块。我的 package.json 文件:

{
  "name": "macaca-android-test-sample",
  "version": "0.1.0",
  "description": "macaca-android-test-sample",
  "devDependencies": {
    "macaca-chromedriver": "*",
    "wd": "*"
  }
}

查询 wdjs API 正式开始编写用例代码, myapp.test.js 文件如下:

const path = require('path');
const wd = require('wd'); // 引用 wd 模块

describe('macaca mobile sample', function() {
  this.timeout(5 * 60 * 1000); // mocha 设置超时时间

  var driver = wd.promiseChainRemote({ // 初始化 webdriver
    host: 'localhost',
    port: 3456
  });

  before(function() { // 所有测试用例的统一前置动作
    return driver.init({ // 
      platformName: 'Android',
      app: path.join(__dirname, '..', 'app', `android-app-bootstrap.zip`), // 指定到你打包好的 app 目录,也可以是个 url
      udid: "06022ee300696cb6" // 如果你是真机测试,请设置 udid ,不设置则走模拟器
    });
  });

  after(function() { // 所有测试用例的统一后置动作
    return driver 
      .sleep(1000)
      .quit();
  });

  it('#1 should login success', function() { // 测试一下 login
    return driver
      .waitForElementsByClassName('android.widget.EditText', {}, 120000)
      .then(function(els) {
        return els[0];
      })
      .sendKeys(username)
      .sleep(1000)
      .elementsByClassName('android.widget.EditText')
      .then(function(els) {
        return els[1];
      })
      .sendKeys(password)
      .sleep(1000)
      .waitForElementByName('Login')
      .click()
      .sleep(1000);
  });

});

最后运行 macaca run --server 就可以看了


↙↙↙阅读原文可查看相关链接,并与作者交流