58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
export type Platform = 'ios' | 'android';
|
|
|
|
export interface ElementLocator {
|
|
name: string;
|
|
ios?: { using: 'name' | 'predicate string' | 'class name'; value: string };
|
|
android?: { using: 'id' | 'text' | 'content-desc' | '-android uiautomator'; value: string };
|
|
}
|
|
|
|
export interface Rect {
|
|
x: number;
|
|
y: number;
|
|
width: number;
|
|
height: number;
|
|
}
|
|
|
|
export interface DeviceDriver {
|
|
readonly platform: Platform;
|
|
|
|
createSession(): Promise<void>;
|
|
destroySession(): Promise<void>;
|
|
|
|
/** 激活/拉起指定 app(Android appPackage / iOS bundleId)。用于切到系统设置再切回。 */
|
|
activateApp(appId: string): Promise<void>;
|
|
|
|
findElement(locator: ElementLocator): Promise<string | null>;
|
|
findElements(locator: ElementLocator): Promise<string[]>;
|
|
findElementRaw(using: string, value: string): Promise<string | null>;
|
|
findElementsRaw(using: string, value: string): Promise<string[]>;
|
|
getElementRect(elementId: string): Promise<Rect>;
|
|
getElementAttribute(elementId: string, attr: string): Promise<string>;
|
|
|
|
tap(x: number, y: number): Promise<void>;
|
|
doubleTap(x: number, y: number): Promise<void>;
|
|
longPress(x: number, y: number, duration?: number): Promise<void>;
|
|
tapElement(elementId: string): Promise<void>;
|
|
clickElement(elementId: string): Promise<void>;
|
|
typeText(elementId: string, text: string): Promise<void>;
|
|
clearText(elementId: string): Promise<void>;
|
|
swipe(fromX: number, fromY: number, toX: number, toY: number, duration?: number): Promise<void>;
|
|
scrollDown(distance?: number): Promise<void>;
|
|
scrollUp(distance?: number): Promise<void>;
|
|
|
|
goBack(): Promise<void>;
|
|
getSource(): Promise<string>;
|
|
getWindowSize(): Promise<{ width: number; height: number }>;
|
|
screenshot(): Promise<string>;
|
|
|
|
tapByLocator(locator: ElementLocator): Promise<boolean>;
|
|
waitForElement(locator: ElementLocator, timeoutMs?: number): Promise<string | null>;
|
|
isElementVisible(locator: ElementLocator): Promise<boolean>;
|
|
|
|
findBotCard(): Promise<string | null>;
|
|
findDeviceCard(deviceName: string): Promise<string | null>;
|
|
isOnHomepage(): Promise<boolean>;
|
|
goBackToHomepage(): Promise<boolean>;
|
|
dismissPopupIfPresent(): Promise<boolean>;
|
|
}
|