[基于Node.js的自动化测试-Macaca] – 原来程序员都是这么聊天的

本帖已被设为精华帖!,

上一篇 – Android 输入中文的实现

经常有用户朋友问到 Macaca 是否支持多机,多流程等问题,本文刚好做个演示。

[基于Node.js的自动化测试-Macaca] - 原来程序员都是这么聊天的

在设计之初,Macaca 就已经考虑了如何支持多设备同时运行。与Macaca 实现混合流程任务这篇介绍的原理不同,多机使用多个 Macaca 命令运行即可。

示例

这里通过一段简单的代码实现多机聊天:


const wd = webdriverClient(options);

wd.addPromiseChainMethod('chat', function() {
var _historyNum = 0;
var _send = (reject, num) => {
return this
.native()
.waitForElementByClassName('android.widget.EditText')
.sendKeys(`${data.getRandom()}\n`)
.sleep(1000)
.then(() => {
_historyNum += num;
reject();
});
};

return _.retry(() => {
return new Promise((resolve, reject) => {
this
.webview()
.source()
.then(html => {
const json = xml2map.tojson(html);
const li = json.html.body.div[0].div[1].ul.li;

if (li) {
const historyNum = li.length || 1;

if (historyNum > _historyNum) {
return _send(reject, 2);
}
reject();
} else {
_send(reject, 1);
}
});
});
}, 100, Infinity);
});

const driver = wd.initPromiseChain();

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

after(function() {
return driver
//.quit();
});

it('should chat now haha~', function() {
return driver
.chat();
});

示例源码请见:macaca-multi-task-sample

如何运行

不同流程通过不同的端口驱动设备,所以在运行前指定就好了,就这么简单。

$ MACACA_SERVER_PORT=3457 MACACA_CHROMEDRIVER_PORT=9516 macaca run -p 3457

演示代码一并放出。

  • 演示客户端Socket源码websocket-sample
  • 演示客户端Android源码simple-chat-android-client

写在最后

相信以后应该不会有人问 Macaca 是不是支持多机了,哈哈~,另外,你身边如果有程序员朋友请不要伤害他们,因为他们忙到得靠程序自动跟你聊天啦、


欢迎讨论,互相学习。

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

下一篇 – 如何查找界面元素

* 注:本文来自网络投稿,不代表本站立场,如若侵犯版权,请及时知会删除