@avilabs/ghost-cursor-playwright
Version:
Move your mouse like a human in playwright or generate realistic movements on any 2D plane
55 lines (54 loc) • 2.08 kB
TypeScript
import playwright from 'playwright-core';
import { Vector, BoundingBox } from './math';
export declare type createCursorOptions = {
overshootSpread?: number;
overshootRadius?: number;
debug?: boolean;
};
export declare function createCursor(page: playwright.Page, createCursorOptions?: createCursorOptions): Promise<Cursor>;
export interface Cursor {
page: playwright.Page;
previous: Vector;
overshootSpread: number;
overshootRadius: number;
overshootThreshold: number;
shouldOvershoot(a: Vector, b: Vector): boolean;
getElemBoundingBox(selector: string): Promise<BoundingBox>;
getViewportBoundingBox(): Promise<BoundingBox>;
getRandomPointOnViewport(paddingPercentage: number): Promise<Vector>;
getRandomPointInsideElem({ x, y, width, height }: BoundingBox, paddingPercentage?: number): Vector;
tracePath(vectors: Iterable<Vector>): Promise<void>;
performRandomMove(): Promise<void>;
addMousePositionTracker(): void;
addMouseTargetTracker(): void;
getActualPosOfMouse(): Promise<Vector>;
compareTargetOfMouse(selector: string): Promise<boolean>;
}
export interface Actions {
click(clickOptions?: clickOptions, moveOptions?: moveOptions): Promise<void>;
move(target: string | BoundingBox | Vector, moveOptions?: moveOptions): Promise<void>;
}
export declare type clickOptions = {
target?: string | BoundingBox | Vector;
waitBeforeClick?: [number, number];
waitBetweenClick?: [number, number];
doubleClick?: boolean;
};
export declare type moveOptions = {
paddingPercentage?: number;
waitForSelector?: number;
waitBeforeMove?: [number, number];
};
export declare function getRandomStartPoint(page: playwright.Page): Promise<{
x: number;
y: number;
}>;
export declare class Cursor {
page: playwright.Page;
previous: Vector;
overshootSpread: number;
overshootRadius: number;
overshootThreshold: number;
constructor(page: playwright.Page, randomStartPoint: Vector, overshootSpread: number, overshootRadius: number);
actions: Actions;
}