selenium-webdriver 4.44.0 → 4.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGES.md +13 -0
  2. package/bidi/browsingContextInspector.js +1 -1
  3. package/bidi/generated/bluetooth.d.ts +223 -0
  4. package/bidi/generated/bluetooth.js +154 -0
  5. package/bidi/generated/browser.d.ts +104 -0
  6. package/bidi/generated/browser.js +107 -0
  7. package/bidi/generated/browsing_context.d.ts +394 -0
  8. package/bidi/generated/browsing_context.js +260 -0
  9. package/bidi/generated/common.d.ts +38 -0
  10. package/bidi/generated/common.js +30 -0
  11. package/bidi/generated/emulation.d.ts +176 -0
  12. package/bidi/generated/emulation.js +133 -0
  13. package/bidi/generated/input.d.ts +151 -0
  14. package/bidi/generated/input.js +81 -0
  15. package/bidi/generated/log.d.ts +39 -0
  16. package/bidi/generated/log.js +67 -0
  17. package/bidi/generated/network.d.ts +359 -0
  18. package/bidi/generated/network.js +230 -0
  19. package/bidi/generated/permissions.d.ts +22 -0
  20. package/bidi/generated/permissions.js +43 -0
  21. package/bidi/generated/script.d.ts +410 -0
  22. package/bidi/generated/script.js +146 -0
  23. package/bidi/generated/session.d.ts +119 -0
  24. package/bidi/generated/session.js +82 -0
  25. package/bidi/generated/speculation.d.ts +17 -0
  26. package/bidi/generated/speculation.js +40 -0
  27. package/bidi/generated/storage.d.ts +84 -0
  28. package/bidi/generated/storage.js +70 -0
  29. package/bidi/generated/user_agent_client_hints.d.ts +33 -0
  30. package/bidi/generated/user_agent_client_hints.js +43 -0
  31. package/bidi/generated/webextension.d.ts +42 -0
  32. package/bidi/generated/webextension.js +53 -0
  33. package/bidi/index.js +24 -3
  34. package/bin/linux/selenium-manager +0 -0
  35. package/bin/macos/selenium-manager +0 -0
  36. package/bin/windows/selenium-manager.exe +0 -0
  37. package/common/driverFinder.js +2 -1
  38. package/common/seleniumManager.js +1 -1
  39. package/eslint.config.js +5 -5
  40. package/io/zip.js +1 -1
  41. package/lib/atoms/find-elements.js +272 -68
  42. package/lib/atoms/get-attribute.js +152 -17
  43. package/lib/atoms/is-displayed.js +385 -39
  44. package/lib/http.js +2 -1
  45. package/lib/pinnedScript.js +0 -1
  46. package/lib/webdriver.js +2 -2
  47. package/package.json +16 -14
@@ -0,0 +1,394 @@
1
+ import type { BrowserClientWindow, BrowserUserContext } from './browser.js';
2
+ import type { EmptyResult, JsInt, JsUint } from './common.js';
3
+ import type { ScriptNodeRemoteValue, ScriptSerializationOptions, ScriptSharedReference } from './script.js';
4
+ import type { SessionUserPromptHandlerType } from './session.js';
5
+ export type BrowsingContextCommand = BrowsingContextActivate | BrowsingContextCaptureScreenshot | BrowsingContextClose | BrowsingContextCreate | BrowsingContextGetTree | BrowsingContextHandleUserPrompt | BrowsingContextLocateNodes | BrowsingContextNavigate | BrowsingContextPrint | BrowsingContextReload | BrowsingContextSetBypassCsp | BrowsingContextSetViewport | BrowsingContextTraverseHistory;
6
+ export type BrowsingContextResult = BrowsingContextActivateResult | BrowsingContextCaptureScreenshotResult | BrowsingContextCloseResult | BrowsingContextCreateResult | BrowsingContextGetTreeResult | BrowsingContextHandleUserPromptResult | BrowsingContextLocateNodesResult | BrowsingContextNavigateResult | BrowsingContextPrintResult | BrowsingContextReloadResult | BrowsingContextSetBypassCspResult | BrowsingContextSetViewportResult | BrowsingContextTraverseHistoryResult;
7
+ export type BrowsingContextEvent = BrowsingContextContextCreated | BrowsingContextContextDestroyed | BrowsingContextDomContentLoaded | BrowsingContextDownloadEnd | BrowsingContextDownloadWillBegin | BrowsingContextFragmentNavigated | BrowsingContextHistoryUpdated | BrowsingContextLoad | BrowsingContextNavigationAborted | BrowsingContextNavigationCommitted | BrowsingContextNavigationFailed | BrowsingContextNavigationStarted | BrowsingContextUserPromptClosed | BrowsingContextUserPromptOpened;
8
+ export type BrowsingContextBrowsingContext = string;
9
+ export type BrowsingContextInfoList = BrowsingContextInfo[];
10
+ export interface BrowsingContextInfo {
11
+ children: BrowsingContextInfoList | null;
12
+ clientWindow: BrowserClientWindow;
13
+ context: BrowsingContextBrowsingContext;
14
+ originalOpener: BrowsingContextBrowsingContext | null;
15
+ url: string;
16
+ userContext: BrowserUserContext;
17
+ parent?: BrowsingContextBrowsingContext | null;
18
+ }
19
+ export type BrowsingContextLocator = BrowsingContextAccessibilityLocator | BrowsingContextCssLocator | BrowsingContextContextLocator | BrowsingContextInnerTextLocator | BrowsingContextXPathLocator;
20
+ export interface BrowsingContextAccessibilityLocator {
21
+ type: "accessibility";
22
+ value: {
23
+ name?: string;
24
+ role?: string;
25
+ };
26
+ }
27
+ export interface BrowsingContextCssLocator {
28
+ type: "css";
29
+ value: string;
30
+ }
31
+ export interface BrowsingContextContextLocator {
32
+ type: "context";
33
+ value: {
34
+ context: BrowsingContextBrowsingContext;
35
+ };
36
+ }
37
+ export interface BrowsingContextInnerTextLocator {
38
+ type: "innerText";
39
+ value: string;
40
+ ignoreCase?: boolean;
41
+ matchType?: "full" | "partial";
42
+ maxDepth?: JsUint;
43
+ }
44
+ export interface BrowsingContextXPathLocator {
45
+ type: "xpath";
46
+ value: string;
47
+ }
48
+ export type BrowsingContextNavigation = string;
49
+ export interface BrowsingContextBaseNavigationInfo {
50
+ context: BrowsingContextBrowsingContext;
51
+ navigation: BrowsingContextNavigation | null;
52
+ timestamp: JsUint;
53
+ url: string;
54
+ userContext?: BrowserUserContext;
55
+ }
56
+ export type BrowsingContextNavigationInfo = BrowsingContextBaseNavigationInfo;
57
+ export type BrowsingContextReadinessState = "none" | "interactive" | "complete";
58
+ export type BrowsingContextUserPromptType = "alert" | "beforeunload" | "confirm" | "prompt";
59
+ export interface BrowsingContextActivate {
60
+ method: "browsingContext.activate";
61
+ params: BrowsingContextActivateParameters;
62
+ }
63
+ export interface BrowsingContextActivateParameters {
64
+ context: BrowsingContextBrowsingContext;
65
+ }
66
+ export type BrowsingContextActivateResult = EmptyResult;
67
+ export interface BrowsingContextCaptureScreenshot {
68
+ method: "browsingContext.captureScreenshot";
69
+ params: BrowsingContextCaptureScreenshotParameters;
70
+ }
71
+ export interface BrowsingContextCaptureScreenshotParameters {
72
+ context: BrowsingContextBrowsingContext;
73
+ /**
74
+ * @default 'viewport'
75
+ */
76
+ origin?: "viewport" | "document";
77
+ format?: BrowsingContextImageFormat;
78
+ clip?: BrowsingContextClipRectangle;
79
+ }
80
+ export interface BrowsingContextImageFormat {
81
+ type: string;
82
+ quality?: number;
83
+ }
84
+ export type BrowsingContextClipRectangle = BrowsingContextBoxClipRectangle | BrowsingContextElementClipRectangle;
85
+ export interface BrowsingContextElementClipRectangle {
86
+ type: "element";
87
+ element: ScriptSharedReference;
88
+ }
89
+ export interface BrowsingContextBoxClipRectangle {
90
+ type: "box";
91
+ x: number;
92
+ y: number;
93
+ width: number;
94
+ height: number;
95
+ }
96
+ export interface BrowsingContextCaptureScreenshotResult {
97
+ data: string;
98
+ }
99
+ export interface BrowsingContextClose {
100
+ method: "browsingContext.close";
101
+ params: BrowsingContextCloseParameters;
102
+ }
103
+ export interface BrowsingContextCloseParameters {
104
+ context: BrowsingContextBrowsingContext;
105
+ promptUnload?: boolean;
106
+ }
107
+ export type BrowsingContextCloseResult = EmptyResult;
108
+ export interface BrowsingContextCreate {
109
+ method: "browsingContext.create";
110
+ params: BrowsingContextCreateParameters;
111
+ }
112
+ export type BrowsingContextCreateType = "tab" | "window";
113
+ export interface BrowsingContextCreateParameters {
114
+ type: BrowsingContextCreateType;
115
+ referenceContext?: BrowsingContextBrowsingContext;
116
+ background?: boolean;
117
+ userContext?: BrowserUserContext;
118
+ }
119
+ export interface BrowsingContextCreateResult {
120
+ context: BrowsingContextBrowsingContext;
121
+ userContext?: BrowserUserContext;
122
+ }
123
+ export interface BrowsingContextGetTree {
124
+ method: "browsingContext.getTree";
125
+ params: BrowsingContextGetTreeParameters;
126
+ }
127
+ export interface BrowsingContextGetTreeParameters {
128
+ maxDepth?: JsUint;
129
+ root?: BrowsingContextBrowsingContext;
130
+ }
131
+ export interface BrowsingContextGetTreeResult {
132
+ contexts: BrowsingContextInfoList;
133
+ }
134
+ export interface BrowsingContextHandleUserPrompt {
135
+ method: "browsingContext.handleUserPrompt";
136
+ params: BrowsingContextHandleUserPromptParameters;
137
+ }
138
+ export interface BrowsingContextHandleUserPromptParameters {
139
+ context: BrowsingContextBrowsingContext;
140
+ accept?: boolean;
141
+ userText?: string;
142
+ }
143
+ export type BrowsingContextHandleUserPromptResult = EmptyResult;
144
+ export interface BrowsingContextLocateNodes {
145
+ method: "browsingContext.locateNodes";
146
+ params: BrowsingContextLocateNodesParameters;
147
+ }
148
+ export interface BrowsingContextLocateNodesParameters {
149
+ context: BrowsingContextBrowsingContext;
150
+ locator: BrowsingContextLocator;
151
+ maxNodeCount?: JsUint;
152
+ serializationOptions?: ScriptSerializationOptions;
153
+ startNodes?: ScriptSharedReference[];
154
+ }
155
+ export interface BrowsingContextLocateNodesResult {
156
+ nodes: ScriptNodeRemoteValue[];
157
+ }
158
+ export interface BrowsingContextNavigate {
159
+ method: "browsingContext.navigate";
160
+ params: BrowsingContextNavigateParameters;
161
+ }
162
+ export interface BrowsingContextNavigateParameters {
163
+ context: BrowsingContextBrowsingContext;
164
+ url: string;
165
+ wait?: BrowsingContextReadinessState;
166
+ }
167
+ export interface BrowsingContextNavigateResult {
168
+ navigation: BrowsingContextNavigation | null;
169
+ url: string;
170
+ }
171
+ export interface BrowsingContextPrint {
172
+ method: "browsingContext.print";
173
+ params: BrowsingContextPrintParameters;
174
+ }
175
+ export interface BrowsingContextPrintParameters {
176
+ context: BrowsingContextBrowsingContext;
177
+ background?: boolean;
178
+ margin?: BrowsingContextPrintMarginParameters;
179
+ /**
180
+ * @default 'portrait'
181
+ */
182
+ orientation?: "portrait" | "landscape";
183
+ page?: BrowsingContextPrintPageParameters;
184
+ pageRanges?: (JsUint | string)[];
185
+ /**
186
+ * @default 1
187
+ */
188
+ scale?: number;
189
+ /**
190
+ * @default true
191
+ */
192
+ shrinkToFit?: boolean;
193
+ }
194
+ export interface BrowsingContextPrintMarginParameters {
195
+ /**
196
+ * @default 1
197
+ */
198
+ bottom?: number;
199
+ /**
200
+ * @default 1
201
+ */
202
+ left?: number;
203
+ /**
204
+ * @default 1
205
+ */
206
+ right?: number;
207
+ /**
208
+ * @default 1
209
+ */
210
+ top?: number;
211
+ }
212
+ export interface BrowsingContextPrintPageParameters {
213
+ /**
214
+ * @default 27.94
215
+ */
216
+ height?: number;
217
+ /**
218
+ * @default 21.59
219
+ */
220
+ width?: number;
221
+ }
222
+ export interface BrowsingContextPrintResult {
223
+ data: string;
224
+ }
225
+ export interface BrowsingContextReload {
226
+ method: "browsingContext.reload";
227
+ params: BrowsingContextReloadParameters;
228
+ }
229
+ export interface BrowsingContextReloadParameters {
230
+ context: BrowsingContextBrowsingContext;
231
+ ignoreCache?: boolean;
232
+ wait?: BrowsingContextReadinessState;
233
+ }
234
+ export type BrowsingContextReloadResult = BrowsingContextNavigateResult;
235
+ export interface BrowsingContextSetBypassCsp {
236
+ method: "browsingContext.setBypassCSP";
237
+ params: BrowsingContextSetBypassCspParameters;
238
+ }
239
+ export interface BrowsingContextSetBypassCspParameters {
240
+ bypass: true | null;
241
+ contexts?: BrowsingContextBrowsingContext[];
242
+ userContexts?: BrowserUserContext[];
243
+ }
244
+ export type BrowsingContextSetBypassCspResult = EmptyResult;
245
+ export interface BrowsingContextSetViewport {
246
+ method: "browsingContext.setViewport";
247
+ params: BrowsingContextSetViewportParameters;
248
+ }
249
+ export interface BrowsingContextSetViewportParameters {
250
+ context?: BrowsingContextBrowsingContext;
251
+ viewport?: BrowsingContextViewport | null;
252
+ devicePixelRatio?: number | null;
253
+ userContexts?: BrowserUserContext[];
254
+ }
255
+ export interface BrowsingContextViewport {
256
+ width: JsUint;
257
+ height: JsUint;
258
+ }
259
+ export type BrowsingContextSetViewportResult = EmptyResult;
260
+ export interface BrowsingContextTraverseHistory {
261
+ method: "browsingContext.traverseHistory";
262
+ params: BrowsingContextTraverseHistoryParameters;
263
+ }
264
+ export interface BrowsingContextTraverseHistoryParameters {
265
+ context: BrowsingContextBrowsingContext;
266
+ delta: JsInt;
267
+ }
268
+ export type BrowsingContextTraverseHistoryResult = EmptyResult;
269
+ export interface BrowsingContextContextCreated {
270
+ method: "browsingContext.contextCreated";
271
+ params: BrowsingContextInfo;
272
+ }
273
+ export interface BrowsingContextContextDestroyed {
274
+ method: "browsingContext.contextDestroyed";
275
+ params: BrowsingContextInfo;
276
+ }
277
+ export interface BrowsingContextNavigationStarted {
278
+ method: "browsingContext.navigationStarted";
279
+ params: BrowsingContextNavigationInfo;
280
+ }
281
+ export interface BrowsingContextFragmentNavigated {
282
+ method: "browsingContext.fragmentNavigated";
283
+ params: BrowsingContextNavigationInfo;
284
+ }
285
+ export interface BrowsingContextHistoryUpdated {
286
+ method: "browsingContext.historyUpdated";
287
+ params: BrowsingContextHistoryUpdatedParameters;
288
+ }
289
+ export interface BrowsingContextHistoryUpdatedParameters {
290
+ context: BrowsingContextBrowsingContext;
291
+ timestamp: JsUint;
292
+ url: string;
293
+ userContext?: BrowserUserContext;
294
+ }
295
+ export interface BrowsingContextDomContentLoaded {
296
+ method: "browsingContext.domContentLoaded";
297
+ params: BrowsingContextNavigationInfo;
298
+ }
299
+ export interface BrowsingContextLoad {
300
+ method: "browsingContext.load";
301
+ params: BrowsingContextNavigationInfo;
302
+ }
303
+ export interface BrowsingContextDownloadWillBegin {
304
+ method: "browsingContext.downloadWillBegin";
305
+ params: BrowsingContextDownloadWillBeginParams;
306
+ }
307
+ export type BrowsingContextDownloadWillBeginParams = BrowsingContextBaseNavigationInfo & {
308
+ suggestedFilename: string;
309
+ };
310
+ export interface BrowsingContextDownloadEnd {
311
+ method: "browsingContext.downloadEnd";
312
+ params: BrowsingContextDownloadEndParams;
313
+ }
314
+ export type BrowsingContextDownloadEndParams = (BrowsingContextDownloadCanceledParams | BrowsingContextDownloadCompleteParams);
315
+ export type BrowsingContextDownloadCanceledParams = BrowsingContextBaseNavigationInfo & {
316
+ status: "canceled";
317
+ };
318
+ export type BrowsingContextDownloadCompleteParams = BrowsingContextBaseNavigationInfo & {
319
+ status: "complete";
320
+ filepath: string | null;
321
+ };
322
+ export interface BrowsingContextNavigationAborted {
323
+ method: "browsingContext.navigationAborted";
324
+ params: BrowsingContextNavigationInfo;
325
+ }
326
+ export interface BrowsingContextNavigationCommitted {
327
+ method: "browsingContext.navigationCommitted";
328
+ params: BrowsingContextNavigationInfo;
329
+ }
330
+ export interface BrowsingContextNavigationFailed {
331
+ method: "browsingContext.navigationFailed";
332
+ params: BrowsingContextNavigationInfo;
333
+ }
334
+ export interface BrowsingContextUserPromptClosed {
335
+ method: "browsingContext.userPromptClosed";
336
+ params: BrowsingContextUserPromptClosedParameters;
337
+ }
338
+ export interface BrowsingContextUserPromptClosedParameters {
339
+ context: BrowsingContextBrowsingContext;
340
+ accepted: boolean;
341
+ type: BrowsingContextUserPromptType;
342
+ userContext?: BrowserUserContext;
343
+ userText?: string;
344
+ }
345
+ export interface BrowsingContextUserPromptOpened {
346
+ method: "browsingContext.userPromptOpened";
347
+ params: BrowsingContextUserPromptOpenedParameters;
348
+ }
349
+ export interface BrowsingContextUserPromptOpenedParameters {
350
+ context: BrowsingContextBrowsingContext;
351
+ handler: SessionUserPromptHandlerType;
352
+ message: string;
353
+ type: BrowsingContextUserPromptType;
354
+ userContext?: BrowserUserContext;
355
+ defaultValue?: string;
356
+ }
357
+ /** @deprecated Use {@link BrowsingContext.create} instead — will be removed in a future major version. */
358
+ export declare function getBrowsingContextInstance(driver: unknown): Promise<BrowsingContext>;
359
+ export declare class BrowsingContext {
360
+ private readonly bidi;
361
+ private constructor();
362
+ static create(driver: unknown): Promise<BrowsingContext>;
363
+ activate(params: BrowsingContextActivateParameters): Promise<void>;
364
+ captureScreenshot(params: BrowsingContextCaptureScreenshotParameters): Promise<BrowsingContextCaptureScreenshotResult>;
365
+ close(params: BrowsingContextCloseParameters): Promise<void>;
366
+ create(params: BrowsingContextCreateParameters): Promise<BrowsingContextCreateResult>;
367
+ getTree(params: BrowsingContextGetTreeParameters): Promise<BrowsingContextGetTreeResult>;
368
+ handleUserPrompt(params: BrowsingContextHandleUserPromptParameters): Promise<void>;
369
+ locateNodes(params: BrowsingContextLocateNodesParameters): Promise<BrowsingContextLocateNodesResult>;
370
+ navigate(params: BrowsingContextNavigateParameters): Promise<BrowsingContextNavigateResult>;
371
+ print(params: BrowsingContextPrintParameters): Promise<BrowsingContextPrintResult>;
372
+ reload(params: BrowsingContextReloadParameters): Promise<BrowsingContextReloadResult>;
373
+ setBypassCSP(params: BrowsingContextSetBypassCspParameters): Promise<void>;
374
+ setViewport(params: BrowsingContextSetViewportParameters): Promise<void>;
375
+ traverseHistory(params: BrowsingContextTraverseHistoryParameters): Promise<void>;
376
+ onContextCreated(callback: (params: BrowsingContextInfo) => void): Promise<void>;
377
+ onContextDestroyed(callback: (params: BrowsingContextInfo) => void): Promise<void>;
378
+ onDomContentLoaded(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
379
+ onDownloadEnd(callback: (params: BrowsingContextDownloadEndParams) => void): Promise<void>;
380
+ onDownloadWillBegin(callback: (params: BrowsingContextDownloadWillBeginParams) => void): Promise<void>;
381
+ onFragmentNavigated(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
382
+ onHistoryUpdated(callback: (params: BrowsingContextHistoryUpdatedParameters) => void): Promise<void>;
383
+ onLoad(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
384
+ onNavigationAborted(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
385
+ onNavigationCommitted(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
386
+ onNavigationFailed(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
387
+ onNavigationStarted(callback: (params: BrowsingContextNavigationInfo) => void): Promise<void>;
388
+ onUserPromptClosed(callback: (params: BrowsingContextUserPromptClosedParameters) => void): Promise<void>;
389
+ onUserPromptOpened(callback: (params: BrowsingContextUserPromptOpenedParameters) => void): Promise<void>;
390
+ back(context: BrowsingContextBrowsingContext): Promise<void>;
391
+ forward(context: BrowsingContextBrowsingContext): Promise<void>;
392
+ getTopLevelContexts(): Promise<BrowsingContextGetTreeResult>;
393
+ printPage(params: BrowsingContextPrintParameters): Promise<BrowsingContextPrintResult>;
394
+ }
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ // Licensed to the Software Freedom Conservancy (SFC) under one
3
+ // or more contributor license agreements. See the NOTICE file
4
+ // distributed with this work for additional information
5
+ // regarding copyright ownership. The SFC licenses this file
6
+ // to you under the Apache License, Version 2.0 (the
7
+ // "License"); you may not use this file except in compliance
8
+ // with the License. You may obtain a copy of the License at
9
+ //
10
+ // http://www.apache.org/licenses/LICENSE-2.0
11
+ //
12
+ // Unless required by applicable law or agreed to in writing,
13
+ // software distributed under the License is distributed on an
14
+ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ // KIND, either express or implied. See the License for the
16
+ // specific language governing permissions and limitations
17
+ // under the License.
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.BrowsingContext = exports.getBrowsingContextInstance = void 0;
20
+ // --- Additional Types ---
21
+ /** @deprecated Use {@link BrowsingContext.create} instead — will be removed in a future major version. */
22
+ async function getBrowsingContextInstance(driver) {
23
+ return BrowsingContext.create(driver);
24
+ }
25
+ exports.getBrowsingContextInstance = getBrowsingContextInstance;
26
+ // --- Implementation ---
27
+ class BrowsingContext {
28
+ constructor(bidi) {
29
+ this.bidi = bidi;
30
+ }
31
+ static async create(driver) {
32
+ const caps = await driver.getCapabilities();
33
+ if (!caps.get('webSocketUrl')) {
34
+ throw new Error('WebDriver instance must support BiDi protocol');
35
+ }
36
+ const bidi = await driver.getBidi();
37
+ return new BrowsingContext(bidi);
38
+ }
39
+ async activate(params) {
40
+ const response = await this.bidi.send({
41
+ method: 'browsingContext.activate',
42
+ params: params,
43
+ });
44
+ if (response['type'] === 'error') {
45
+ throw new Error(`${response['error']}: ${response['message']}`);
46
+ }
47
+ }
48
+ async captureScreenshot(params) {
49
+ const response = await this.bidi.send({
50
+ method: 'browsingContext.captureScreenshot',
51
+ params: params,
52
+ });
53
+ if (response['type'] === 'error') {
54
+ throw new Error(`${response['error']}: ${response['message']}`);
55
+ }
56
+ return response.result;
57
+ }
58
+ async close(params) {
59
+ const response = await this.bidi.send({
60
+ method: 'browsingContext.close',
61
+ params: params,
62
+ });
63
+ if (response['type'] === 'error') {
64
+ throw new Error(`${response['error']}: ${response['message']}`);
65
+ }
66
+ }
67
+ async create(params) {
68
+ const response = await this.bidi.send({
69
+ method: 'browsingContext.create',
70
+ params: params,
71
+ });
72
+ if (response['type'] === 'error') {
73
+ throw new Error(`${response['error']}: ${response['message']}`);
74
+ }
75
+ return response.result;
76
+ }
77
+ async getTree(params) {
78
+ const response = await this.bidi.send({
79
+ method: 'browsingContext.getTree',
80
+ params: params,
81
+ });
82
+ if (response['type'] === 'error') {
83
+ throw new Error(`${response['error']}: ${response['message']}`);
84
+ }
85
+ return response.result;
86
+ }
87
+ async handleUserPrompt(params) {
88
+ const response = await this.bidi.send({
89
+ method: 'browsingContext.handleUserPrompt',
90
+ params: params,
91
+ });
92
+ if (response['type'] === 'error') {
93
+ throw new Error(`${response['error']}: ${response['message']}`);
94
+ }
95
+ }
96
+ async locateNodes(params) {
97
+ const response = await this.bidi.send({
98
+ method: 'browsingContext.locateNodes',
99
+ params: params,
100
+ });
101
+ if (response['type'] === 'error') {
102
+ throw new Error(`${response['error']}: ${response['message']}`);
103
+ }
104
+ return response.result;
105
+ }
106
+ async navigate(params) {
107
+ const response = await this.bidi.send({
108
+ method: 'browsingContext.navigate',
109
+ params: params,
110
+ });
111
+ if (response['type'] === 'error') {
112
+ throw new Error(`${response['error']}: ${response['message']}`);
113
+ }
114
+ return response.result;
115
+ }
116
+ async print(params) {
117
+ const response = await this.bidi.send({
118
+ method: 'browsingContext.print',
119
+ params: params,
120
+ });
121
+ if (response['type'] === 'error') {
122
+ throw new Error(`${response['error']}: ${response['message']}`);
123
+ }
124
+ return response.result;
125
+ }
126
+ async reload(params) {
127
+ const response = await this.bidi.send({
128
+ method: 'browsingContext.reload',
129
+ params: params,
130
+ });
131
+ if (response['type'] === 'error') {
132
+ throw new Error(`${response['error']}: ${response['message']}`);
133
+ }
134
+ return response.result;
135
+ }
136
+ async setBypassCSP(params) {
137
+ const response = await this.bidi.send({
138
+ method: 'browsingContext.setBypassCSP',
139
+ params: params,
140
+ });
141
+ if (response['type'] === 'error') {
142
+ throw new Error(`${response['error']}: ${response['message']}`);
143
+ }
144
+ }
145
+ async setViewport(params) {
146
+ const response = await this.bidi.send({
147
+ method: 'browsingContext.setViewport',
148
+ params: params,
149
+ });
150
+ if (response['type'] === 'error') {
151
+ throw new Error(`${response['error']}: ${response['message']}`);
152
+ }
153
+ }
154
+ async traverseHistory(params) {
155
+ const response = await this.bidi.send({
156
+ method: 'browsingContext.traverseHistory',
157
+ params: params,
158
+ });
159
+ if (response['type'] === 'error') {
160
+ throw new Error(`${response['error']}: ${response['message']}`);
161
+ }
162
+ }
163
+ async onContextCreated(callback) {
164
+ await this.bidi.subscribe('browsingContext.contextCreated');
165
+ this.bidi.on('browsingContext.contextCreated', (params) => {
166
+ callback(params);
167
+ });
168
+ }
169
+ async onContextDestroyed(callback) {
170
+ await this.bidi.subscribe('browsingContext.contextDestroyed');
171
+ this.bidi.on('browsingContext.contextDestroyed', (params) => {
172
+ callback(params);
173
+ });
174
+ }
175
+ async onDomContentLoaded(callback) {
176
+ await this.bidi.subscribe('browsingContext.domContentLoaded');
177
+ this.bidi.on('browsingContext.domContentLoaded', (params) => {
178
+ callback(params);
179
+ });
180
+ }
181
+ async onDownloadEnd(callback) {
182
+ await this.bidi.subscribe('browsingContext.downloadEnd');
183
+ this.bidi.on('browsingContext.downloadEnd', (params) => {
184
+ callback(params);
185
+ });
186
+ }
187
+ async onDownloadWillBegin(callback) {
188
+ await this.bidi.subscribe('browsingContext.downloadWillBegin');
189
+ this.bidi.on('browsingContext.downloadWillBegin', (params) => {
190
+ callback(params);
191
+ });
192
+ }
193
+ async onFragmentNavigated(callback) {
194
+ await this.bidi.subscribe('browsingContext.fragmentNavigated');
195
+ this.bidi.on('browsingContext.fragmentNavigated', (params) => {
196
+ callback(params);
197
+ });
198
+ }
199
+ async onHistoryUpdated(callback) {
200
+ await this.bidi.subscribe('browsingContext.historyUpdated');
201
+ this.bidi.on('browsingContext.historyUpdated', (params) => {
202
+ callback(params);
203
+ });
204
+ }
205
+ async onLoad(callback) {
206
+ await this.bidi.subscribe('browsingContext.load');
207
+ this.bidi.on('browsingContext.load', (params) => {
208
+ callback(params);
209
+ });
210
+ }
211
+ async onNavigationAborted(callback) {
212
+ await this.bidi.subscribe('browsingContext.navigationAborted');
213
+ this.bidi.on('browsingContext.navigationAborted', (params) => {
214
+ callback(params);
215
+ });
216
+ }
217
+ async onNavigationCommitted(callback) {
218
+ await this.bidi.subscribe('browsingContext.navigationCommitted');
219
+ this.bidi.on('browsingContext.navigationCommitted', (params) => {
220
+ callback(params);
221
+ });
222
+ }
223
+ async onNavigationFailed(callback) {
224
+ await this.bidi.subscribe('browsingContext.navigationFailed');
225
+ this.bidi.on('browsingContext.navigationFailed', (params) => {
226
+ callback(params);
227
+ });
228
+ }
229
+ async onNavigationStarted(callback) {
230
+ await this.bidi.subscribe('browsingContext.navigationStarted');
231
+ this.bidi.on('browsingContext.navigationStarted', (params) => {
232
+ callback(params);
233
+ });
234
+ }
235
+ async onUserPromptClosed(callback) {
236
+ await this.bidi.subscribe('browsingContext.userPromptClosed');
237
+ this.bidi.on('browsingContext.userPromptClosed', (params) => {
238
+ callback(params);
239
+ });
240
+ }
241
+ async onUserPromptOpened(callback) {
242
+ await this.bidi.subscribe('browsingContext.userPromptOpened');
243
+ this.bidi.on('browsingContext.userPromptOpened', (params) => {
244
+ callback(params);
245
+ });
246
+ }
247
+ async back(context) {
248
+ await this.traverseHistory({ context, delta: -1 });
249
+ }
250
+ async forward(context) {
251
+ await this.traverseHistory({ context, delta: 1 });
252
+ }
253
+ async getTopLevelContexts() {
254
+ return this.getTree({});
255
+ }
256
+ async printPage(params) {
257
+ return this.print(params);
258
+ }
259
+ }
260
+ exports.BrowsingContext = BrowsingContext;
@@ -0,0 +1,38 @@
1
+ import type { BrowserCommand, BrowserResult } from './browser.js';
2
+ import type { BrowsingContextCommand, BrowsingContextEvent, BrowsingContextResult } from './browsing_context.js';
3
+ import type { EmulationCommand, EmulationResult } from './emulation.js';
4
+ import type { InputCommand, InputEvent, InputResult } from './input.js';
5
+ import type { LogEvent } from './log.js';
6
+ import type { NetworkCommand, NetworkEvent, NetworkResult } from './network.js';
7
+ import type { ScriptCommand, ScriptEvent, ScriptResult } from './script.js';
8
+ import type { SessionCommand, SessionResult } from './session.js';
9
+ import type { StorageCommand, StorageResult } from './storage.js';
10
+ import type { WebExtensionCommand, WebExtensionResult } from './webextension.js';
11
+ export type Command = CommandData & Extensible & {
12
+ id: JsUint;
13
+ };
14
+ export type CommandData = BrowserCommand | BrowsingContextCommand | EmulationCommand | InputCommand | NetworkCommand | ScriptCommand | SessionCommand | StorageCommand | WebExtensionCommand;
15
+ export type EmptyParams = Extensible;
16
+ export type Message = CommandResponse | ErrorResponse | Event;
17
+ export type CommandResponse = Extensible & {
18
+ type: "success";
19
+ id: JsUint;
20
+ result: ResultData;
21
+ };
22
+ export type ErrorResponse = Extensible & {
23
+ type: "error";
24
+ id: JsUint | null;
25
+ error: ErrorCode;
26
+ message: string;
27
+ stacktrace?: string;
28
+ };
29
+ export type ResultData = BrowserResult | BrowsingContextResult | EmulationResult | InputResult | NetworkResult | ScriptResult | SessionResult | StorageResult | WebExtensionResult;
30
+ export type EmptyResult = Extensible;
31
+ export type Event = EventData & Extensible & {
32
+ type: "event";
33
+ };
34
+ export type EventData = BrowsingContextEvent | InputEvent | LogEvent | NetworkEvent | ScriptEvent;
35
+ export type Extensible = Record<string, unknown>;
36
+ export type JsInt = number;
37
+ export type JsUint = number;
38
+ export type ErrorCode = "invalid argument" | "invalid selector" | "invalid session id" | "invalid web extension" | "move target out of bounds" | "no such alert" | "no such network collector" | "no such element" | "no such frame" | "no such handle" | "no such history entry" | "no such intercept" | "no such network data" | "no such node" | "no such request" | "no such script" | "no such storage partition" | "no such user context" | "no such web extension" | "session not created" | "unable to capture screen" | "unable to close browser" | "unable to set cookie" | "unable to set file input" | "unavailable network data" | "underspecified storage partition" | "unknown command" | "unknown error" | "unsupported operation";