参数设置
初始化参数
Desired Capabilities 是用来在启动时配置服务器的参数。
入参示例
常见的参数
| 键 | 类型 | 描述 |
| 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 (opens new window)
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 | native unsupport | 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 操作,类似于下图的密码解锁。

