上一篇 - 搭建自己的自动化测试平台

这是 Macaca 的官方 repo alibaba/macaca,目前已开源,欢迎提 issue、star。

初次使用 Macaca一文中,只贴出了 iOS 平台的 sample,有用户会有些疑惑,我快速赶了个 App 例子出来,与 iOS 实现基本一致,以便于描述。有兴趣可以看源码

效果如下

android

如何运行

# 安装 macaca 客户端
$ cnpm i macaca-cli -g

# clone 示例用例到本地
$ git clone git@github.com:macacajs/macaca-test-sample.git

# 安装依赖

$ cnpm i

当然,iOS 与 Android 是同一份测试用例,只是 Android 运行起来需要加个区别参数。

这里很重要

由于网络原因,下载所依赖的chromedriver 会有问题,使用如下方式解决。

export CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver
# iOS

make test

# Android

platform=android make test

用例编写

Macaca 的上下文切换非常稳定,同时用例写起来也比较简单。

describe('macaca test sample', function() {
  this.timeout(5 * 60 * 1000);

  var driver = wd.initPromiseChain();

  before(function() {
    return driver.initDriver();
  });

  after(function() {
    return driver
      .sleep(1000)
      .quit();
  });

  it('#1 should login success', function() {
    return driver
      .login('12345678', '111111')
      .sleep(1000);
  });

  it('#2 should display home', function() {
    return driver
      .takeScreenshot();
  });

  it('#3 should display webview', function() {
    return driver
      .elementByName('Webview')
      .click()
      .sleep(3000)
      .takeScreenshot();
  });

  it('#4 should go into webview', function() {
    return driver
      .webview()
      .elementById('pushView')
      .tap()
      .sleep(5000)
      .webview()
      .elementById('popView')
      .tap()
      .sleep(5000)
      .takeScreenshot();
  });

  it('#5 should go into test', function() {
    return driver
      .native()
      .elementByName('Baidu')
      .click()
      .sleep(5000)
      .takeScreenshot();
  });

  it('#6 should works with web', function() {
    return driver
      .webview()
      .elementById('index-kw')
      .sendKeys('TesterHome')
      .elementById('index-bn')
      .tap()
      .sleep(5000)
      .source()
      .then(function(html) {
        html.should.containEql('TesterHome');
      })
      .takeScreenshot();
  });

  it('#7 should logout success', function() {
    return driver
      .native()
      .elementByName('PERSONAL')
      .click()
      .sleep(1000)
      .takeScreenshot()
      .elementByName('Logout')
      .click()
      .sleep(1000)
      .takeScreenshot();
  });
});

一些问题

顺便贴几个问题,有朋友在部署平台时遇到 Docker 相关的问题和疑惑。

使用 docker-compose 的原因
Docker 遇到网络环境问题
Guide 文档在快速准备中

欢迎讨论,互相学习。

微博: http://weibo.com/xudafeng
Github: https://github.com/xudafeng

下一篇 - 使用 Macaca 测试 PC 端应用


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