UNPKG

multi-automator

Version:
236 lines (235 loc) 6.23 kB
/// <reference types="node" /> import WebElement from './web/Element'; import IOSElement from './iOS/Element'; import AndroidElement from './android/Element'; import { AppInfo, ScreenSize, SwipeOptions } from './types'; /** * Device Options */ export interface DeviceOptions { deviceId?: string; deviceType: string; } interface SourceOptions { timeout?: number; format?: SourceFormat; path?: string; } type SourceFormat = 'string' | 'json' | 'object'; /** * 设备操控类 */ export default class Device { /** * 设备ID */ id: string; /** * 设备类型 */ type: string; /** * 设备对象 */ handler: any; /** * 构造函数 * * @param {string} deviceId 设备 ID * @param {string} deviceType 设备类型 */ constructor(options: DeviceOptions); /** * 初始化函数 * * @param {Promise{any}} handler 设备处理对象 */ init(handler: any): Promise<void>; /** * 跳转页面 * * @param {string} path url 地址 * @returns {string} */ goto(path: string): Promise<string>; /** * home 键 */ home(): Promise<void>; /** * 获取当前设备页面 dom 树 * * @param {string} path 存储路径 * @param {string} format 返回格式 * @param {number} timeout 操作超时时间(ms) * @return {Promise{string}} */ source(options?: SourceOptions): Promise<string | object>; /** * 通过 xpath 获取设备元素 * * @param {string} expression XPath表达式 * @param {object} options * @param {number} options.loop 轮询次数,默认 3 * @param {number} options.duration 轮询时间间隔(ms),默认 1000 * @param {number} options.retry 查询异常重试次数,默认 3 * @returns {Promise{Array{WebElement}}} */ $x(expression: string, options?: { loop: number; duration: number; retry: number; }): Promise<WebElement[] | IOSElement[] | AndroidElement[]>; /** * 通过 CSS 选择器获取元素操作对象 - 仅支持 web 设备 * * @param selector CSS 选择器 * @param {object} options * @param {number} options.loop 轮询次数,默认 3 * @param {number} options.duration 轮询时间间隔(ms),默认 1000 * @param {number} options.retry 查询异常重试次数,默认 3 * @returns @returns {Promise{WebElement|null}}} */ $(selector: string, options?: { loop: number; duration: number; retry: number; }): Promise<WebElement | null>; /** * 通过 CSS 选择器获取元素操作对象列表 - 仅支持 web 设备 * * @param selector CSS 选择器 * @param {object} options * @param {number} options.loop 轮询次数,默认 3 * @param {number} options.duration 轮询时间间隔(ms),默认 1000 * @param {number} options.retry 查询异常重试次数,默认 3 * @returns @returns {Promise{Array{WebElement}}} */ $$(selector: string, options?: { loop: number; duration: number; retry: number; }): Promise<WebElement[]>; /** * 设备截图 * * @param {string} path 图片路径 * @returns {Promise{Buffer|String}} */ screenshot(options?: { path?: string; }): Promise<Buffer | string>; /** * 获取设备屏幕宽高 * * @return {object} screenInfo * @return {number} screenInfo.width 真实宽 * @return {number} screenInfo.height 真实高 */ getScreenSize(): Promise<ScreenSize>; /** * 屏幕点击 * * @param {number} x 横坐标 * @param {number} y 纵坐标 * @return {Promise} */ tap(x: number, y: number): Promise<void>; /** * 长按屏幕 * * @param {number} x 横坐标 * @param {number} y 纵坐标 * @param {number} duration 长按时间(ms) */ longpress(x: number, y: number, duration?: number): Promise<void>; /** * 屏幕滑动 * * @param {number} fx 起点横坐标 * @param {number} fy 起点纵坐标 * @param {number} tx 终点横坐标 * @param {number} ty 终点纵坐标 * @param {Object} options * @return {Promise} */ swipe(fx: number, fy: number, tx: number, ty: number, options?: SwipeOptions): Promise<any>; /** * 输入文本 * * @param {string} text 文本 */ input(text: string): Promise<any>; /** * 获取版本信息 * * @returns {Promise} */ version(): Promise<string>; /** * 获取应用列表 * * @returns {Promise{Array{AppInfo}}} */ appList(): Promise<AppInfo[]>; /** * 获取应用信息 * * @param {string} packageName 包名 * @returns {Promise{AppInfo}} */ appInfo(packageName: string): Promise<AppInfo>; /** * 判断应用是否已安装 * * @param {string} appId 应用ID * @returns {Promise{boolean}} */ isInstalled(packageName: string): Promise<boolean>; /** * 安装应用 * * @param {string} appPath 应用路径 * @returns {Promise} */ install(appPath: string): Promise<void>; /** * 卸载应用 * * @param {string} appId 应用ID * @returns {Promise} */ uninstall(appId: string): Promise<void>; /** * 启动 APP * * @param packageName 包名 * @param {string} activity 启动 Activity * @returns {Promise} */ launchApp(packageName: string, activity?: string): Promise<void>; /** * 终止 APP * * @param packageName 包名 */ terminateApp(packageName: string): Promise<void>; /** * 激活 APP * * @param packageName 包名 */ activateApp(packageName: string): Promise<void>; /** * 重新启动 APP * * @param packageName 包名 */ relaunchApp(packageName: string): Promise<void>; /** * 关闭设备操控实例 */ close(): Promise<void>; private formatResponse; } export {};