multi-automator
Version:
Multi terminal automation
236 lines (235 loc) • 6.23 kB
TypeScript
/// <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 {};