- 参数设置
- 初始化参数
- 入参示例
- 常见的参数
- App 相关参数
- Android 的参数介绍
- iOS 的参数介绍
- Electron 的参数介绍
- Puppeteer 的参数介绍
- Keycode 支持
- 按键映射
- Android 按键扩展映射
- iOS 按键映射
- 选择器说明 Locator
- 手势操作
参数设置
初始化参数
Desired Capabilities 是用来在启动时配置服务器的参数。
入参示例
const wd = require('macaca-wd');const driver = wd.promiseChainRemote({ host: 'localhost', port: 3456});const desiredCaps = { platformName: 'ios', deviceName: 'iPhone 6s', app: 'path/to/app'}driver.init(desiredCaps);
常见的参数
| 键 |
类型 |
描述 |
| platformName |
String |
当前用例运行的平台 { iOS / Android / Desktop } |
| browserName |
String |
当前测试的浏览器名称 { iOS: Safari } { Android: Chrome } { Desktop: Chrome / Electron } |
App 相关参数
| 键 |
类型 |
描述 |
| reuse |
Number |
0: 启动并安装 app。1 (默认): 卸载并重装 app。 2: 仅重装 app。3: 在测试结束后保持 app 状态。 |
| deviceName |
String |
模拟器的名称,例如 ‘iPhone 6’ 或者 ‘Nexus 5x’。 |
| app |
Stirng |
.ipa,.app 或者 .apk 文件的绝对地址或者远程地址,或者是包含上述文件格式的 Zip 文件。 |
| udid |
String |
测试设备的唯一设备 ID。 |
| autoAcceptAlerts |
Boolean |
自动接受所有的系统弹窗信息。默认是 false。 |
| autoDismissAlerts |
Boolean |
自动拒绝所有的系统弹窗信息。默认是 false。 |
Android 的参数介绍
| 键 |
类型 |
描述 |
| package |
String |
Android app 的 package name。 |
| activity |
String |
启动时的 Activity name。 |
| androidProcess |
String |
使用 chromedriver 测试 webview 时需要的自定义的进程名。 |
| isWaitActivity |
Boolean |
是否等待传入 App 的 Acitivity 加载完成。 默认是 false。 |
iOS 的参数介绍
| 键 |
类型 |
描述 |
| bundleId |
String |
应用的 Bundle ID,例如 com.apple.Maps。 |
Electron 的参数介绍
| 键 |
类型 |
描述 |
| uesrAgent |
String |
自定义 UA |
| extraHeaders |
String |
自定义头 |
Puppeteer 的参数介绍
| 键 |
类型 |
描述 |
| uesrAgent |
String |
自定义 UA |
Keycode 支持
按键映射
PC 默认都支持
\uE002“HELP” => 259 (0x00000103)\uE003“BACK_SPACE” => 67 (0x00000043)\uE004“TAB” => 61 (0x0000003d)\uE005“CLEAR” => 28 (0x0000001c)\uE007“ENTER” => 66 (0x00000042)\uE008“SHIFT” => 59 (0x0000003b)\uE009“CONTROL” => 113 (0x00000071)\uE00A“ALT” => 57 (0x00000039)\uE00B“PAUSE” => 121 (0x00000079)\uE00C“ESCAPE” => 111 (0x0000006f)\uE00E“PAGE_UP” => 92 (0x0000005c)\uE00F“PAGE_DOWN” => 93 (0x0000005d)\uE010“END” => 123 (0x0000007b)\uE011“HOME” => 122 (0x0000007a)\uE012“ARROW_LEFT” => 21 (0x00000015)\uE013“ARROW_UP” => 19 (0x00000013)\uE014“ARROW_RIGHT” => 22 (0x00000016)\uE015“ARROW_DOWN” => 20 (0x00000014)\uE016“INSERT” => 124 (0x0000007c)\uE017“DELETE” => 112 (0x00000070)\uE031“F1” => 131 (0x00000083)\uE032“F2” => 132 (0x00000084)\uE033“F3” => 133 (0x00000085)\uE034“F4” => 134 (0x00000086)\uE035“F5” => 135 (0x00000087)\uE036“F6” => 136 (0x00000088)\uE037“F7” => 137 (0x00000089)\uE038“F8” => 138 (0x0000008a)\uE039“F9” => 139 (0x0000008b)\uE03A“F10” => 140 (0x0000008c)\uE03B“F11” => 141 (0x0000008d)\uE03C“F12” => 142 (0x0000008e)\uE03D“META” => 117 (0x00000075)
Android 按键扩展映射
Android 平台扩展的按键
\uE101 “POWER 电源键” => 26 (0x0000001a)\uE102 “VOLUME_UP 音量加” => 24 (0x00000018)\uE103 “VOLUME_DOWN 音量减” => 25 (0x00000019)\uE104 “VOLUME_MUTE 禁音” => 164 (0x000000a4)\uE105 “HOME_SCREEN HOME键” => 3 (0x00000003)\uE106 “BACK BACK键” => 4 (0x00000004)\uE107 “MENU MENU键” => 82 (0x00000052)\uE108 “CAMERA 拍照键” => 27 (0x0000001b)\uE109 “CALL 电话键” => 5 (0x00000005)\uE10A “END_CALL 结束电话键” => 6 (0x00000006)\uE10B “SEARCH 搜索键” => 84 (0x00000054)\uE10C “DPAD_LEFT 导航左键” => 21 (0x00000015)\uE10D “DPAD_UP 导航上键” => 19 (0x00000013)\uE10E “DPAD_RIGHT 导航右键” => 22 (0x00000016)\uE10F “DPAD_DOWN 导航下键” => 20 (0x00000014)\uE110 “DPAD_CENTER 导航确定键” => 23 (0x00000017)
android-reference-KeyEvent
iOS 按键映射
iOS 平台扩展的按键
\uE105 “HOME_SCREEN HOME键”
选择器说明 Locator
| Locator |
iOS |
Android |
PC |
| name |
label or value |
content-desc or rawtext |
element name |
| xpath |
xpath |
xpath |
xpath |
| class name |
class/type |
class |
element node name |
| id |
accessibility Id |
resource Id |
element id |
| css |
native unsupport |
nativeunsupport |
element css |
手势操作
| Type |
Params |
Example |
Description |
| tap |
{ x: 100, y: 100 } |
driver.touch(‘tap’, { x: 100, y: 100}) |
element.touch(‘tap’) |
点击某个坐标或者当前元素 |
| doubleTap |
{ x: 100, y: 100 } |
driver.touch(‘doubleTap’, { x: 100, y: 100}) |
element.touch(‘doubleTap’) |
双击某个坐标或者当前元素 |
| press |
{ x: 100, y: 100, duration: 2 (单位 S) } |
driver.touch(‘press’, { x: 100, y: 100}) |
element.touch(‘press’, { duration: 2 }) |
长按某个坐标或者当前元素 |
| pinch |
{ x: 100, y: 100,scale: 2 (iOS), velocity: 1(iOS), direction: “in” or “out”(Android), percent: 200(Android), duration: 100(Android) } |
iOS: element.touch(‘pinch’, { scale: 2 }), Android: element.touch(‘pinch’, { direction: “in”, percent: 50 }) |
两只手指放大或者缩小当前元素 |
| rotate (iOS Only) |
{ rotation: 6(弧度), velocity: 1 } |
element.touch(‘rotate’, { rotation: 6, velocity: 1 }) |
旋转当前元素 |
| drag |
{ fromX: 100, fromY: 100, toX: 200, toY: 200, duration: 2(单位 S)} |
driver.touch(‘drag’, { fromX: 100, fromY: 100, toX: 200, toY: 200 }) |
element.touch(‘drag’, { toX: 200, toY: 200 }) |
拖拽一个元素或者在多个坐标之间移动 |
连续操作
连续执行多个 touch 操作,类似于下图的密码解锁。
driver.touch([{ type: 'drag', fromX: 265, fromY: 860, toX: 825, toY: 860, steps: 200}, { type: 'drag', toX: 265, toY: 1460, duration: 3}, { type: 'drag', toX: 825, toY: 1460, duration: 3}]);


原文: https://macacajs.github.io/zh/helpful-settings