点击此链接看视频
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
就可以看了