This repository was archived by the owner on Sep 16, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathIPage.ts
More file actions
67 lines (60 loc) · 2.67 KB
/
IPage.ts
File metadata and controls
67 lines (60 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import type IRegisteredEventListener from '@ulixee/commons/interfaces/IRegisteredEventListener';
import type ITypedEventEmitter from '@ulixee/commons/interfaces/ITypedEventEmitter';
import { IJsPath } from '@ulixee/js-path';
import { IFrame, IFrameManagerEvents } from './IFrame';
import { IKeyboard, IMouse } from '../interact/IInput';
import { IBrowserNetworkEvents } from './IBrowserNetworkEvents';
import { IWorker } from './IWorker';
import IDevtoolsSession from './IDevtoolsSession';
import IDialog from './IDialog';
import IBrowserContext from './IBrowserContext';
import IScreenshotOptions from './IScreenshotOptions';
import IExecJsPathResult from './IExecJsPathResult';
import IFileChooserPrompt from './IFileChooserPrompt';
import { IInteractionGroups } from '../interact/IInteractions';
export interface IPage extends ITypedEventEmitter<IPageEvents> {
id: string;
tabId: number; /// assigned id
devtoolsSession: IDevtoolsSession;
browserContext: IBrowserContext;
mouse: IMouse;
keyboard: IKeyboard;
frames: IFrame[];
workers: IWorker[];
mainFrame: IFrame;
opener?: IPage | null;
isClosed: boolean;
interact(...interactionGroups: IInteractionGroups): Promise<void>;
click(jsPathOrSelector: IJsPath | string): Promise<void>;
type(text: string): Promise<void>;
navigate(url: string, options?: { referrer?: string }): Promise<{ loaderId: string }>;
close(options?: { timeoutMs?: number }): Promise<void>;
bringToFront(): Promise<void>;
screenshot(options: IScreenshotOptions): Promise<Buffer>;
execJsPath<T>(jsPath: IJsPath): Promise<IExecJsPathResult<T>>;
setJavaScriptEnabled(enabled: boolean): Promise<void>;
evaluate<T>(expression: string): Promise<T>;
addNewDocumentScript(
script: string,
isolateFromWebPageEnvironment: boolean,
devtoolsSession?: IDevtoolsSession,
): Promise<{ identifier: string }>;
removeDocumentScript(identifier: string, devtoolsSession?: IDevtoolsSession): Promise<void>;
addPageCallback(
name: string,
onCallback?: (payload: string, frame: IFrame) => any,
isolateFromWebPageEnvironment?: boolean,
devtoolsSession?: IDevtoolsSession,
): Promise<IRegisteredEventListener>;
}
export interface IPageEvents extends IFrameManagerEvents, IBrowserNetworkEvents {
close: void;
worker: { worker: IWorker };
crashed: { error: Error; fatal?: boolean };
console: { frameId: number; type: string; message: string; location: string };
'dialog-opening': { dialog: IDialog };
filechooser: { prompt: IFileChooserPrompt };
'page-error': { frameId: number; error: Error };
'page-callback-triggered': { name: string; frameId: number; payload: string };
screenshot: { imageBase64: string; timestamp: number };
}