Macaca [基于 Node.js 的自动化测试-Macaca] - Macaca 如何实现多任务

达峰的夏天 · 2016年06月08日 · 最后由 Totoro 回复于 2018年05月04日 · 2443 次阅读

上一篇 - macaca-electron 模块的独立使用

在日常的测试场景中经常会遇到多个驱动混用的情况。例如测试手机 APP 时,需要填写验证码,验证码又需要从某些 PC 端方可获取,还有很多情况需要手机,PC 端联动,我们来举个简单的例子如何来解决此类。

思路

Macaca 支持一个任务中同一端口创建多 session,不同的 session 处理不同 driver 的任务即可。

代码如下:

var _ = require('macaca-utils');
var webdriverClient = require('webdriver-client');

var AndroidChromeOpts = {
  platformName: 'Android',
  browserName: 'Chrome'
};

var ElectronOpts = {
  platformName: 'desktop',
  browserName: 'electron'
};


function initElectron() {
  var electron_wd = webdriverClient(ElectronOpts);
  return electron_wd.initPromiseChain();
}

function initAndroidChrome() {
  var android_chrome_wd = webdriverClient(AndroidChromeOpts);
  return android_chrome_wd.initPromiseChain();
}

describe('macaca mobile sample', function() {

  this.timeout(5 * 60 * 1000);

  var driver2 = initElectron();

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

  after(function() {
    return driver2
      .quit();
  });

  it('#0 should get url', function() {
    return driver2
      .setWindowSize(800, 600)
      .get('http://www.weibo.com')
      .sleep(5000)
      .elementByCss('input.W_input')
      .sendKeys('达峰的夏天')
      .sleep(3000)
      .elementByCss('[node-type="searchSubmit"]')
      .click()
      .sleep(5000)
      .elementByCss('#pl_weibo_directtop .star_card')
      .text()
      .then(content => {
        var arr = content.split(' ');
        var url = arr[arr.length - 1];
        console.log(`get url: ${url}`);

        const driver1 = initAndroidChrome();
        return driver1
          .initDriver()
          .get(url)
          .sleep(5000);
      });
  });

});

示例

示例中先打开 PC 端页面拿到 url,然后进入 Android 模拟器调用浏览器再次打开移动版。

持续集成

本示例添加了持续集成,可以通过 log 看到执行效果,加深理解。

builds/136067202

本示例源代码:macaca-multi-driver-sample


欢迎讨论,互相学习。

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

下一篇 - Macaca 获取 Android 应用的性能

共收到 8 条回复 时间 点赞

作者好勤奋

#1 楼 @codeskyblue 哈哈,欢迎交流

@xdf 多多交流,我现在在网易杭州

#3 楼 @codeskyblue 幸会幸会,哈哈

达峰的夏天 [该话题已被删除] 中提及了此贴 06月27日 11:17
达峰的夏天 [该话题已被删除] 中提及了此贴 07月01日 20:05
达峰的夏天 [该话题已被删除] 中提及了此贴 07月08日 17:13

有 java 版本的 多任务测试示例吗

adfghzhang 使用 Macaca 进行 Android 多设备测试 中提及了此贴 12月08日 00:02
达峰的夏天 macaca 的多端测试的业务场景有什么? 中提及了此贴 03月11日 14:02

@xdf 如何改为调用某 app 应用呢?尝试了两天还是没有解决,主要是不太熟悉 nodejs,可否提供一下 demo,如果有 py 更好了,主要是去 web 端获取验证码和下发指令

@xdf 研究好几天了还是没研究明白怎么改成调用第三方程序,求 xdf 老师指点

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册