Macaca [视频] 使用 iOS 真机演示 Macaca 测试

小帅 · 2016年04月01日 · 最后由 老马 回复于 2016年08月05日 · 4141 次阅读

点击此链接看视频

iOS 模拟器效果 链接

iOS 真机与 Android 真机步骤基本一致(Android 真机下跑 macaca 用例点此),最大不同是需要将你的 iOS APP 装到真机上并且能运行。

目录结构:

| -- macaca-test
|     | -- myapp.test.js
| -- package.json

package.json 文件:

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

查询 wdjs API 正式开始编写用例代码, myapp.test.js 文件如下,代码上与 Android 不同之处在于无需指定 APP 文件地址,因为你已经将 APP 装入真机了,另外在初始化 driver 的时候需要传设备的 udid 和 APP 的 bundleId

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() { // 与 Android 最大不同是无需指定 APP 的路径,需要传 udid 和 bundleId
    return driver.init({ 
      platformName: 'Android',
      udid: 'xxxxx',
      bundleId: 'xxxxx'
    });
  });

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

  it('#1 should login success', function() { // 测试一下 login
    return driver
        .waitForElementByXPath('//UIATextField[1]')
        .sendKeys(username)
        .waitForElementByXPath('//UIASecureTextField[1]')
        .sendKeys(password)
        .sleep(1000)
        .sendKeys('\n')
        .waitForElementByName('Login')
        .click()
        .sleep(5000);
  });

});

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

共收到 8 条回复 时间 点赞

@tsj1107 妹子要不要这么给力,还放个猴子。

一跑真机,就抛这个错,求解,自己的代码里指定的 bundle id 肯定不是 com.facebook.xctweb-driver-agent,这是代理驱动吗?
@xdf 有什么解决方法嘛

Testing failed:
No matching provisioning profiles found: No provisioning profiles with a valid signing identity (i.e. certificate and private key pair) matching the bundle identifier “com.facebook.xctweb-driver-agent” were found.
** TEST FAILED **

The following build commands failed:
Check dependencies
(1 failure)

xctest-client.js:227:14 [master] pid:941 xctest client exit with code: 65, signal: null

最后一句确定正确吗?我看到的是:
Usage:

macaca [options] [arguments]

Commands:

server start webdriver server
doctor detect environment
run run test

Options:

-h, --help output usage information
-v, --versions show version and exit
--verbose show more debugging information
你这个--server 怎么出现在 Options 的部分呢?

#3 楼 @legendsnow 我也遇到这个问题,你怎么解决的?

#2 楼 @legendsnow 这个问题是 provisioning file 导致,如果签名下加了设备就需要在 xcode-preferance--account 中点击 view detail,然后,重新 download 下所有的数据到本地来就解决了。我已经解决了。

#6 楼 @ftvbftvbq 好的谢谢,之前也是遇到证书问题,前一阵子忙,也就放旁边了,一会儿我也去试试

@tsj1107 请问 想 ios 手机真机跑。
xdf @xudafeng 4 月 19 10:43
不需要越狱,需要你的 app 和https://github.com/xudafeng/webdriveragent 这两个地方都是用你本地的签名,就可以跑了。

请问 怎么设置这两个地方的签名。。。没弄过求教程。。。

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