@appium/types 1.0.0-rc.1 → 1.0.1
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.
- package/build/lib/capabilities.d.ts +1 -2
- package/build/lib/capabilities.d.ts.map +1 -1
- package/build/lib/{command.d.ts → command-maps.d.ts} +1 -1
- package/build/lib/command-maps.d.ts.map +1 -0
- package/build/lib/command-maps.js +4 -0
- package/build/lib/command-maps.js.map +1 -0
- package/build/lib/commands/appium.d.ts +100 -0
- package/build/lib/commands/appium.d.ts.map +1 -0
- package/build/lib/{command.js → commands/appium.js} +1 -2
- package/build/lib/commands/appium.js.map +1 -0
- package/build/lib/commands/basedriver.d.ts +370 -0
- package/build/lib/commands/basedriver.d.ts.map +1 -0
- package/build/lib/commands/basedriver.js +3 -0
- package/build/lib/commands/basedriver.js.map +1 -0
- package/build/lib/commands/index.d.ts +7 -0
- package/build/lib/commands/index.d.ts.map +1 -0
- package/build/lib/commands/index.js +23 -0
- package/build/lib/commands/index.js.map +1 -0
- package/build/lib/commands/jsonwp.d.ts +37 -0
- package/build/lib/commands/jsonwp.d.ts.map +1 -0
- package/build/lib/commands/jsonwp.js +3 -0
- package/build/lib/commands/jsonwp.js.map +1 -0
- package/build/lib/commands/mjsonwp.d.ts +65 -0
- package/build/lib/commands/mjsonwp.d.ts.map +1 -0
- package/build/lib/commands/mjsonwp.js +3 -0
- package/build/lib/commands/mjsonwp.js.map +1 -0
- package/build/lib/commands/other-protocols.d.ts +85 -0
- package/build/lib/commands/other-protocols.d.ts.map +1 -0
- package/build/lib/commands/other-protocols.js +3 -0
- package/build/lib/commands/other-protocols.js.map +1 -0
- package/build/lib/commands/webdriver.d.ts +418 -0
- package/build/lib/commands/webdriver.d.ts.map +1 -0
- package/build/lib/commands/webdriver.js +3 -0
- package/build/lib/commands/webdriver.js.map +1 -0
- package/build/lib/constraints.d.ts +19 -0
- package/build/lib/constraints.d.ts.map +1 -1
- package/build/lib/constraints.js.map +1 -1
- package/build/lib/driver.d.ts +9 -1056
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/index.d.ts +2 -1
- package/build/lib/index.d.ts.map +1 -1
- package/build/lib/index.js +2 -1
- package/build/lib/index.js.map +1 -1
- package/build/lib/plugin.d.ts +1 -1
- package/build/lib/plugin.d.ts.map +1 -1
- package/lib/capabilities.ts +1 -2
- package/lib/commands/appium.ts +115 -0
- package/lib/commands/basedriver.ts +476 -0
- package/lib/commands/index.ts +6 -0
- package/lib/commands/jsonwp.ts +41 -0
- package/lib/commands/mjsonwp.ts +71 -0
- package/lib/commands/other-protocols.ts +113 -0
- package/lib/commands/webdriver.ts +475 -0
- package/lib/constraints.ts +18 -1
- package/lib/driver.ts +25 -1279
- package/lib/index.ts +2 -1
- package/lib/plugin.ts +1 -1
- package/package.json +6 -7
- package/build/lib/command.d.ts.map +0 -1
- package/build/lib/command.js.map +0 -1
- /package/lib/{command.ts → command-maps.ts} +0 -0
package/lib/driver.ts
CHANGED
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
import type {EventEmitter} from 'node:events';
|
|
2
2
|
import type {Merge} from 'type-fest';
|
|
3
|
-
import type {
|
|
4
|
-
import type {Capabilities, DriverCaps, W3CCapabilities, W3CDriverCaps} from './capabilities';
|
|
3
|
+
import type {Capabilities, DriverCaps, W3CCapabilities} from './capabilities';
|
|
5
4
|
import type {
|
|
6
5
|
BidiModuleMap,
|
|
7
6
|
BiDiResultData,
|
|
8
7
|
ExecuteMethodMap,
|
|
9
8
|
MethodMap,
|
|
10
|
-
} from './command';
|
|
9
|
+
} from './command-maps';
|
|
10
|
+
import type {
|
|
11
|
+
DefaultCreateSessionResult,
|
|
12
|
+
DefaultDeleteSessionResult,
|
|
13
|
+
DriverData,
|
|
14
|
+
EventHistory,
|
|
15
|
+
IImplementedCommands,
|
|
16
|
+
IWDClassicCommands,
|
|
17
|
+
IAppiumCommands,
|
|
18
|
+
IJSONWPCommands,
|
|
19
|
+
IMJSONWPCommands,
|
|
20
|
+
IOtherProtocolCommands,
|
|
21
|
+
} from './commands';
|
|
22
|
+
import type {Constraints} from './constraints';
|
|
11
23
|
import type {ServerArgs} from './config';
|
|
12
24
|
import type {HTTPHeaders, HTTPMethod} from './http';
|
|
13
25
|
import type {AppiumLogger} from './logger';
|
|
14
26
|
import type {AppiumServer, UpdateServerCallback} from './server';
|
|
15
|
-
import type {Class,
|
|
27
|
+
import type {Class, StringRecord} from './util';
|
|
16
28
|
import type internal from 'node:stream';
|
|
17
29
|
|
|
18
30
|
/**
|
|
@@ -23,456 +35,6 @@ export interface IDeviceSettings<T extends StringRecord> {
|
|
|
23
35
|
getSettings(): T;
|
|
24
36
|
}
|
|
25
37
|
|
|
26
|
-
export interface ITimeoutCommands {
|
|
27
|
-
/**
|
|
28
|
-
* Set the various timeouts associated with a session
|
|
29
|
-
* @see {@link https://w3c.github.io/webdriver/#set-timeouts}
|
|
30
|
-
*
|
|
31
|
-
* @param type - used only for the old (JSONWP) command, the type of the timeout
|
|
32
|
-
* @param ms - used only for the old (JSONWP) command, the ms for the timeout
|
|
33
|
-
* @param script - the number in ms for the script timeout, used for the W3C command
|
|
34
|
-
* @param pageLoad - the number in ms for the pageLoad timeout, used for the W3C command
|
|
35
|
-
* @param implicit - the number in ms for the implicit wait timeout, used for the W3C command
|
|
36
|
-
*/
|
|
37
|
-
timeouts(
|
|
38
|
-
type?: string,
|
|
39
|
-
ms?: number | string,
|
|
40
|
-
script?: number,
|
|
41
|
-
pageLoad?: number,
|
|
42
|
-
implicit?: number | string,
|
|
43
|
-
): Promise<void>;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Set the new command timeout
|
|
47
|
-
*
|
|
48
|
-
* @param ms - the timeout in ms
|
|
49
|
-
*/
|
|
50
|
-
setNewCommandTimeout(ms: number): void;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* A helper method (not a command) used to set the implicit wait value
|
|
54
|
-
*
|
|
55
|
-
* @param ms - the implicit wait in ms
|
|
56
|
-
*/
|
|
57
|
-
setImplicitWait(ms: number): void;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Periodically retry an async function up until the currently set implicit wait timeout
|
|
61
|
-
*
|
|
62
|
-
* @param condition - the behaviour to retry until it returns truthy
|
|
63
|
-
*
|
|
64
|
-
* @returns The return value of the condition
|
|
65
|
-
*/
|
|
66
|
-
implicitWaitForCondition(condition: (...args: any[]) => Promise<any>): Promise<unknown>;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Get the current timeouts
|
|
70
|
-
* @see {@link https://w3c.github.io/webdriver/#get-timeouts}
|
|
71
|
-
*
|
|
72
|
-
* @returns A map of timeout names to ms values
|
|
73
|
-
*/
|
|
74
|
-
getTimeouts(): Promise<Record<string, number>>;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Set the implicit wait value that was sent in via the W3C protocol
|
|
78
|
-
*
|
|
79
|
-
* @param ms - the timeout in ms
|
|
80
|
-
*/
|
|
81
|
-
implicitWaitW3C(ms: number): Promise<void>;
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Set the page load timeout value that was sent in via the W3C protocol
|
|
85
|
-
*
|
|
86
|
-
* @param ms - the timeout in ms
|
|
87
|
-
*/
|
|
88
|
-
pageLoadTimeoutW3C(ms: number): Promise<void>;
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Set the script timeout value that was sent in via the W3C protocol
|
|
92
|
-
*
|
|
93
|
-
* @param ms - the timeout in ms
|
|
94
|
-
*/
|
|
95
|
-
scriptTimeoutW3C(ms: number): Promise<void>;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Set Appium's new command timeout
|
|
99
|
-
*
|
|
100
|
-
* @param ms - the timeout in ms
|
|
101
|
-
*/
|
|
102
|
-
newCommandTimeout(ms: number): Promise<void>;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Get a timeout value from a number or a string
|
|
106
|
-
*
|
|
107
|
-
* @param ms - the timeout value as a number or a string
|
|
108
|
-
*
|
|
109
|
-
* @returns The timeout as a number in ms
|
|
110
|
-
*/
|
|
111
|
-
parseTimeoutArgument(ms: number | string): number;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export interface IEventCommands {
|
|
115
|
-
/**
|
|
116
|
-
* Add a custom-named event to the Appium event log
|
|
117
|
-
*
|
|
118
|
-
* @param vendor - the name of the vendor or tool the event belongs to, to namespace the event
|
|
119
|
-
* @param event - the name of the event itself
|
|
120
|
-
*/
|
|
121
|
-
logCustomEvent(vendor: string, event: string): Promise<void>;
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Get a list of events that have occurred in the current session
|
|
125
|
-
*
|
|
126
|
-
* @param type - filter the returned events by including one or more types
|
|
127
|
-
*
|
|
128
|
-
* @returns The event history for the session
|
|
129
|
-
*/
|
|
130
|
-
getLogEvents(type?: string | string[]): Promise<EventHistory | Record<string, number>>;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export interface IExecuteCommands {
|
|
134
|
-
/**
|
|
135
|
-
* Call an `Execute Method` by its name with the given arguments. This method will check that the
|
|
136
|
-
* driver has registered the method matching the name, and send it the arguments.
|
|
137
|
-
*
|
|
138
|
-
* @param script - the name of the Execute Method
|
|
139
|
-
* @param args - a singleton array containing an arguments object
|
|
140
|
-
*
|
|
141
|
-
* @returns The result of calling the Execute Method
|
|
142
|
-
*/
|
|
143
|
-
executeMethod<
|
|
144
|
-
TArgs extends readonly any[] | readonly [StringRecord<unknown>] = unknown[],
|
|
145
|
-
TReturn = unknown,
|
|
146
|
-
>(
|
|
147
|
-
script: string,
|
|
148
|
-
args: TArgs,
|
|
149
|
-
): Promise<TReturn>;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Data returned by `AppiumDriver.getAppiumSessions`
|
|
154
|
-
*
|
|
155
|
-
* @typeParam C - The driver's constraints
|
|
156
|
-
*/
|
|
157
|
-
export interface TimestampedMultiSessionData<C extends Constraints = Constraints> {
|
|
158
|
-
id: string;
|
|
159
|
-
created: number; // Unix timestamp in milliseconds
|
|
160
|
-
capabilities: DriverCaps<C>;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Data returned by {@linkcode ISessionHandler.getSession}.
|
|
165
|
-
*
|
|
166
|
-
* @typeParam C - The driver's constraints
|
|
167
|
-
* @typeParam T - Any extra data the driver stuffs in here
|
|
168
|
-
* @privateRemarks The content of this object looks implementation-specific and in practice is not well-defined. It's _possible_ to fully type this in the future.
|
|
169
|
-
*/
|
|
170
|
-
export type SingularSessionData<
|
|
171
|
-
C extends Constraints = Constraints,
|
|
172
|
-
T extends StringRecord = StringRecord,
|
|
173
|
-
> = DriverCaps<C> & {
|
|
174
|
-
events?: EventHistory;
|
|
175
|
-
error?: string;
|
|
176
|
-
} & T;
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Data returned by {@linkcode ISessionCommands.getAppiumSessionCapabilities}.
|
|
180
|
-
*
|
|
181
|
-
* @typeParam C - The driver's constraints
|
|
182
|
-
* @typeParam T - Any extra data the driver stuffs in here
|
|
183
|
-
*/
|
|
184
|
-
export type SessionCapabilities<
|
|
185
|
-
C extends Constraints = Constraints,
|
|
186
|
-
T extends StringRecord = StringRecord,
|
|
187
|
-
> = {
|
|
188
|
-
capabilities: DriverCaps<C>;
|
|
189
|
-
} & T;
|
|
190
|
-
|
|
191
|
-
export interface IFindCommands {
|
|
192
|
-
/**
|
|
193
|
-
* Find a UI element given a locator strategy and a selector, erroring if it can't be found
|
|
194
|
-
* @see {@link https://w3c.github.io/webdriver/#find-element}
|
|
195
|
-
*
|
|
196
|
-
* @param strategy - the locator strategy
|
|
197
|
-
* @param selector - the selector to combine with the strategy to find the specific element
|
|
198
|
-
*
|
|
199
|
-
* @returns The element object encoding the element id which can be used in element-related
|
|
200
|
-
* commands
|
|
201
|
-
*/
|
|
202
|
-
findElement(strategy: string, selector: string): Promise<Element>;
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Find a a list of all UI elements matching a given a locator strategy and a selector
|
|
206
|
-
* @see {@link https://w3c.github.io/webdriver/#find-elements}
|
|
207
|
-
*
|
|
208
|
-
* @param strategy - the locator strategy
|
|
209
|
-
* @param selector - the selector to combine with the strategy to find the specific elements
|
|
210
|
-
*
|
|
211
|
-
* @returns A possibly-empty list of element objects
|
|
212
|
-
*/
|
|
213
|
-
findElements(strategy: string, selector: string): Promise<Element[]>;
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Find a UI element given a locator strategy and a selector, erroring if it can't be found. Only
|
|
217
|
-
* look for elements among the set of descendants of a given element
|
|
218
|
-
* @see {@link https://w3c.github.io/webdriver/#find-element-from-element}
|
|
219
|
-
*
|
|
220
|
-
* @param strategy - the locator strategy
|
|
221
|
-
* @param selector - the selector to combine with the strategy to find the specific element
|
|
222
|
-
* @param elementId - the id of the element to use as the search basis
|
|
223
|
-
*
|
|
224
|
-
* @returns The element object encoding the element id which can be used in element-related
|
|
225
|
-
* commands
|
|
226
|
-
*/
|
|
227
|
-
findElementFromElement(strategy: string, selector: string, elementId: string): Promise<Element>;
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Find a a list of all UI elements matching a given a locator strategy and a selector. Only
|
|
231
|
-
* look for elements among the set of descendants of a given element
|
|
232
|
-
* @see {@link https://w3c.github.io/webdriver/#find-elements-from-element}
|
|
233
|
-
*
|
|
234
|
-
* @param strategy - the locator strategy
|
|
235
|
-
* @param selector - the selector to combine with the strategy to find the specific elements
|
|
236
|
-
* @param elementId - the id of the element to use as the search basis
|
|
237
|
-
*
|
|
238
|
-
* @returns A possibly-empty list of element objects
|
|
239
|
-
*/
|
|
240
|
-
findElementsFromElement(
|
|
241
|
-
strategy: string,
|
|
242
|
-
selector: string,
|
|
243
|
-
elementId: string,
|
|
244
|
-
): Promise<Element[]>;
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Find an element from a shadow root
|
|
248
|
-
* @see {@link https://w3c.github.io/webdriver/#find-element-from-shadow-root}
|
|
249
|
-
* @param strategy - the locator strategy
|
|
250
|
-
* @param selector - the selector to combine with the strategy to find the specific elements
|
|
251
|
-
* @param shadowId - the id of the element to use as the search basis
|
|
252
|
-
*
|
|
253
|
-
* @returns The element inside the shadow root matching the selector
|
|
254
|
-
*/
|
|
255
|
-
findElementFromShadowRoot?(
|
|
256
|
-
strategy: string,
|
|
257
|
-
selector: string,
|
|
258
|
-
shadowId: string,
|
|
259
|
-
): Promise<Element>;
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Find elements from a shadow root
|
|
263
|
-
* @see {@link https://w3c.github.io/webdriver/#find-element-from-shadow-root}
|
|
264
|
-
* @param strategy - the locator strategy
|
|
265
|
-
* @param selector - the selector to combine with the strategy to find the specific elements
|
|
266
|
-
* @param shadowId - the id of the element to use as the search basis
|
|
267
|
-
*
|
|
268
|
-
* @returns A possibly empty list of elements inside the shadow root matching the selector
|
|
269
|
-
*/
|
|
270
|
-
findElementsFromShadowRoot?(
|
|
271
|
-
strategy: string,
|
|
272
|
-
selector: string,
|
|
273
|
-
shadowId: string,
|
|
274
|
-
): Promise<Element[]>;
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* A helper method that returns one or more UI elements based on the search criteria
|
|
278
|
-
*
|
|
279
|
-
* @param strategy - the locator strategy
|
|
280
|
-
* @param selector - the selector
|
|
281
|
-
* @param mult - whether or not we want to find multiple elements
|
|
282
|
-
* @param context - the element to use as the search context basis if desiredCapabilities
|
|
283
|
-
*
|
|
284
|
-
* @returns A single element or list of elements
|
|
285
|
-
*/
|
|
286
|
-
findElOrEls(strategy: string, selector: string, mult: true, context?: any): Promise<Element[]>;
|
|
287
|
-
findElOrEls(strategy: string, selector: string, mult: false, context?: any): Promise<Element>;
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* This is a wrapper for {@linkcode findElOrEls} that validates locator strategies
|
|
291
|
-
* and implements the `appium:printPageSourceOnFindFailure` capability
|
|
292
|
-
*
|
|
293
|
-
* @param strategy - the locator strategy
|
|
294
|
-
* @param selector - the selector
|
|
295
|
-
* @param mult - whether or not we want to find multiple elements
|
|
296
|
-
* @param context - the element to use as the search context basis if desiredCapabilities
|
|
297
|
-
*
|
|
298
|
-
* @returns A single element or list of elements
|
|
299
|
-
*/
|
|
300
|
-
findElOrElsWithProcessing(
|
|
301
|
-
strategy: string,
|
|
302
|
-
selector: string,
|
|
303
|
-
mult: true,
|
|
304
|
-
context?: any,
|
|
305
|
-
): Promise<Element[]>;
|
|
306
|
-
findElOrElsWithProcessing(
|
|
307
|
-
strategy: string,
|
|
308
|
-
selector: string,
|
|
309
|
-
mult: false,
|
|
310
|
-
context?: any,
|
|
311
|
-
): Promise<Element>;
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Get the current page/app source as HTML/XML
|
|
315
|
-
* @see {@link https://w3c.github.io/webdriver/#get-page-source}
|
|
316
|
-
*
|
|
317
|
-
* @returns The UI hierarchy in a platform-appropriate format (e.g., HTML for a web page)
|
|
318
|
-
*/
|
|
319
|
-
getPageSource(): Promise<string>;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
export interface ILogCommands {
|
|
323
|
-
/**
|
|
324
|
-
* Definition of the available log types
|
|
325
|
-
*/
|
|
326
|
-
supportedLogTypes: Readonly<LogDefRecord>;
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Get available log types as a list of strings
|
|
330
|
-
*/
|
|
331
|
-
getLogTypes(): Promise<string[]>;
|
|
332
|
-
|
|
333
|
-
/**
|
|
334
|
-
* Get the log for a given log type.
|
|
335
|
-
*
|
|
336
|
-
* @param logType - Name/key of log type as defined in {@linkcode ILogCommands.supportedLogTypes}.
|
|
337
|
-
*/
|
|
338
|
-
getLog(logType: string): Promise<any>;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
export interface IBidiCommands {
|
|
342
|
-
bidiSubscribe(events: string[], contexts: string[]): Promise<void>;
|
|
343
|
-
bidiUnsubscribe(events: string[], contexts: string[]): Promise<void>;
|
|
344
|
-
bidiStatus(): Promise<DriverStatus>;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* A record of {@linkcode LogDef} objects, keyed by the log type name.
|
|
349
|
-
* Used in {@linkcode ILogCommands.supportedLogTypes}
|
|
350
|
-
*/
|
|
351
|
-
export type LogDefRecord = Record<string, LogDef>;
|
|
352
|
-
|
|
353
|
-
/**
|
|
354
|
-
* A definition of a log type
|
|
355
|
-
*/
|
|
356
|
-
export interface LogDef {
|
|
357
|
-
/**
|
|
358
|
-
* Description of the log type.
|
|
359
|
-
*
|
|
360
|
-
* The only place this is used is in error messages if the client provides an invalid log type
|
|
361
|
-
* via {@linkcode ILogCommands.getLog}.
|
|
362
|
-
*/
|
|
363
|
-
description: string;
|
|
364
|
-
/**
|
|
365
|
-
* Returns all the log data for the given type
|
|
366
|
-
*
|
|
367
|
-
* This implementation *should* drain, truncate or otherwise reset the log buffer.
|
|
368
|
-
*/
|
|
369
|
-
getter: (driver: any) => Promise<unknown> | unknown;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
export interface ISettingsCommands<T extends object = object> {
|
|
373
|
-
/**
|
|
374
|
-
* Update the session's settings dictionary with a new settings object
|
|
375
|
-
*
|
|
376
|
-
* @param settings - A key-value map of setting names to values. Settings not named in the map
|
|
377
|
-
* will not have their value adjusted.
|
|
378
|
-
*/
|
|
379
|
-
updateSettings: (settings: T) => Promise<void>;
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* Get the current settings for the session
|
|
383
|
-
*
|
|
384
|
-
* @returns The settings object
|
|
385
|
-
*/
|
|
386
|
-
getSettings(): Promise<T>;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
/**
|
|
390
|
-
* @see {@linkcode ISessionHandler}
|
|
391
|
-
*/
|
|
392
|
-
export type DefaultCreateSessionResult<C extends Constraints> = [
|
|
393
|
-
sessionId: string,
|
|
394
|
-
capabilities: DriverCaps<C>,
|
|
395
|
-
];
|
|
396
|
-
|
|
397
|
-
/**
|
|
398
|
-
* @see {@linkcode ISessionHandler}
|
|
399
|
-
*/
|
|
400
|
-
export type DefaultDeleteSessionResult = void;
|
|
401
|
-
|
|
402
|
-
/**
|
|
403
|
-
* An interface which creates and deletes sessions.
|
|
404
|
-
*/
|
|
405
|
-
export interface ISessionHandler<
|
|
406
|
-
C extends Constraints = Constraints,
|
|
407
|
-
CreateResult = DefaultCreateSessionResult<C>,
|
|
408
|
-
DeleteResult = DefaultDeleteSessionResult,
|
|
409
|
-
SessionData extends StringRecord = StringRecord,
|
|
410
|
-
> {
|
|
411
|
-
/**
|
|
412
|
-
* Start a new automation session
|
|
413
|
-
* @see {@link https://w3c.github.io/webdriver/#new-session}
|
|
414
|
-
*
|
|
415
|
-
* @privateRemarks
|
|
416
|
-
* The shape of this method is strange because it used to support both JSONWP and W3C
|
|
417
|
-
* capabilities. This will likely change in the future to simplify.
|
|
418
|
-
*
|
|
419
|
-
* @param w3cCaps1 - the new session capabilities
|
|
420
|
-
* @param w3cCaps2 - another place the new session capabilities could be sent (typically left undefined)
|
|
421
|
-
* @param w3cCaps3 - another place the new session capabilities could be sent (typically left undefined)
|
|
422
|
-
* @param driverData - a list of DriverData objects representing other sessions running for this
|
|
423
|
-
* driver on the same Appium server. This information can be used to help ensure no conflict of
|
|
424
|
-
* resources
|
|
425
|
-
*
|
|
426
|
-
* @returns The capabilities object representing the created session
|
|
427
|
-
*/
|
|
428
|
-
createSession(
|
|
429
|
-
w3cCaps1: W3CDriverCaps<C>,
|
|
430
|
-
w3cCaps2?: W3CDriverCaps<C>,
|
|
431
|
-
w3cCaps3?: W3CDriverCaps<C>,
|
|
432
|
-
driverData?: DriverData[],
|
|
433
|
-
): Promise<CreateResult>;
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* Stop an automation session
|
|
437
|
-
* @see {@link https://w3c.github.io/webdriver/#delete-session}
|
|
438
|
-
*
|
|
439
|
-
* @param sessionId - the id of the session that is to be deleted
|
|
440
|
-
* @param driverData - the driver data for other currently-running sessions
|
|
441
|
-
*/
|
|
442
|
-
deleteSession(sessionId?: string, driverData?: DriverData[]): Promise<DeleteResult | void>;
|
|
443
|
-
|
|
444
|
-
/**
|
|
445
|
-
* Get the data for the current session
|
|
446
|
-
*
|
|
447
|
-
* @returns A session data object
|
|
448
|
-
*/
|
|
449
|
-
getSession(): Promise<SingularSessionData<C, SessionData>>;
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* Custom session data for a driver.
|
|
454
|
-
*/
|
|
455
|
-
export type DriverData = Record<string, unknown>;
|
|
456
|
-
|
|
457
|
-
export interface Constraint {
|
|
458
|
-
readonly presence?: boolean | Readonly<{allowEmpty: boolean}>;
|
|
459
|
-
readonly isString?: boolean;
|
|
460
|
-
readonly isNumber?: boolean;
|
|
461
|
-
readonly isBoolean?: boolean;
|
|
462
|
-
readonly isObject?: boolean;
|
|
463
|
-
readonly isArray?: boolean;
|
|
464
|
-
readonly deprecated?: boolean;
|
|
465
|
-
readonly inclusion?: Readonly<[string, ...string[]]>;
|
|
466
|
-
readonly inclusionCaseInsensitive?: Readonly<[string, ...string[]]>;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/**
|
|
470
|
-
* A collection of constraints describing the allowed capabilities for a driver.
|
|
471
|
-
*/
|
|
472
|
-
export type Constraints = {
|
|
473
|
-
readonly [name: string]: Constraint;
|
|
474
|
-
};
|
|
475
|
-
|
|
476
38
|
export interface DriverHelpers {
|
|
477
39
|
configureApp: (
|
|
478
40
|
app: string,
|
|
@@ -490,83 +52,8 @@ export type SettingsUpdateListener<T extends Record<string, unknown> = Record<st
|
|
|
490
52
|
curValue: unknown,
|
|
491
53
|
) => Promise<void>;
|
|
492
54
|
|
|
493
|
-
// WebDriver
|
|
494
|
-
|
|
495
|
-
export interface Rect {
|
|
496
|
-
x: number;
|
|
497
|
-
y: number;
|
|
498
|
-
width: number;
|
|
499
|
-
height: number;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
export type NewWindowType = 'tab' | 'window';
|
|
503
|
-
|
|
504
|
-
export interface NewWindow {
|
|
505
|
-
handle: string;
|
|
506
|
-
type: NewWindowType;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
export interface Cookie {
|
|
510
|
-
name: string;
|
|
511
|
-
value: string;
|
|
512
|
-
path?: string;
|
|
513
|
-
domain?: string;
|
|
514
|
-
secure?: boolean;
|
|
515
|
-
httpOnly?: boolean;
|
|
516
|
-
expiry?: number;
|
|
517
|
-
sameSite?: 'Lax' | 'Strict';
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
// JSONWP
|
|
521
|
-
export type Size = Pick<Rect, 'width' | 'height'>;
|
|
522
|
-
|
|
523
|
-
export type Position = Pick<Rect, 'x' | 'y'>;
|
|
524
|
-
|
|
525
|
-
export interface Location {
|
|
526
|
-
latitude: number;
|
|
527
|
-
longitude: number;
|
|
528
|
-
altitude?: number;
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
export interface Rotation {
|
|
532
|
-
x: number;
|
|
533
|
-
y: number;
|
|
534
|
-
z: number;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
// Web Authentication
|
|
538
|
-
|
|
539
|
-
export interface Credential {
|
|
540
|
-
credentialId: string;
|
|
541
|
-
isResidentCredential: boolean;
|
|
542
|
-
rpId: string;
|
|
543
|
-
privateKey: string;
|
|
544
|
-
userHandle?: string;
|
|
545
|
-
signCount: number;
|
|
546
|
-
largeBlob?: string;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
export type Orientation = 'LANDSCAPE' | 'PORTRAIT';
|
|
550
|
-
|
|
551
|
-
export interface EventHistory {
|
|
552
|
-
commands: EventHistoryCommand[];
|
|
553
|
-
[key: string]: any;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
export interface EventHistoryCommand {
|
|
557
|
-
cmd: string;
|
|
558
|
-
startTime: number;
|
|
559
|
-
endTime: number;
|
|
560
|
-
}
|
|
561
|
-
|
|
562
55
|
export type Protocol = 'MJSONWP' | 'W3C';
|
|
563
56
|
|
|
564
|
-
export interface DriverStatus {
|
|
565
|
-
ready: boolean,
|
|
566
|
-
message: string,
|
|
567
|
-
[key: string]: any;
|
|
568
|
-
}
|
|
569
|
-
|
|
570
57
|
/**
|
|
571
58
|
* Methods and properties which both `AppiumDriver` and `BaseDriver` inherit.
|
|
572
59
|
*
|
|
@@ -662,13 +149,7 @@ export interface Driver<
|
|
|
662
149
|
CreateResult = DefaultCreateSessionResult<C>,
|
|
663
150
|
DeleteResult = DefaultDeleteSessionResult,
|
|
664
151
|
SessionData extends StringRecord = StringRecord,
|
|
665
|
-
> extends
|
|
666
|
-
IFindCommands,
|
|
667
|
-
ISettingsCommands<Settings>,
|
|
668
|
-
ITimeoutCommands,
|
|
669
|
-
IEventCommands,
|
|
670
|
-
IExecuteCommands,
|
|
671
|
-
ISessionHandler<C, CreateResult, DeleteResult, SessionData>,
|
|
152
|
+
> extends IImplementedCommands<C, Settings, CreateResult, DeleteResult, SessionData>,
|
|
672
153
|
Core<C, Settings> {
|
|
673
154
|
/**
|
|
674
155
|
* The set of command line arguments set for this driver
|
|
@@ -773,8 +254,8 @@ export interface Driver<
|
|
|
773
254
|
}
|
|
774
255
|
|
|
775
256
|
/**
|
|
776
|
-
* External drivers must subclass `BaseDriver`, and can implement any
|
|
777
|
-
* None of these are implemented within Appium itself.
|
|
257
|
+
* External drivers must subclass `BaseDriver`, and can implement any methods from this interface.
|
|
258
|
+
* None of these methods are implemented within Appium itself.
|
|
778
259
|
*/
|
|
779
260
|
export interface ExternalDriver<
|
|
780
261
|
C extends Constraints = Constraints,
|
|
@@ -784,747 +265,12 @@ export interface ExternalDriver<
|
|
|
784
265
|
CreateResult = DefaultCreateSessionResult<C>,
|
|
785
266
|
DeleteResult = DefaultDeleteSessionResult,
|
|
786
267
|
SessionData extends StringRecord = StringRecord,
|
|
787
|
-
> extends Driver<C, CArgs, Settings, CreateResult, DeleteResult, SessionData
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
*
|
|
794
|
-
* @param url - the url
|
|
795
|
-
*/
|
|
796
|
-
setUrl?(url: string): Promise<void>;
|
|
797
|
-
|
|
798
|
-
/**
|
|
799
|
-
* Get the current url
|
|
800
|
-
* @see {@link https://w3c.github.io/webdriver/#get-current-url}
|
|
801
|
-
*
|
|
802
|
-
* @returns The url
|
|
803
|
-
*/
|
|
804
|
-
getUrl?(): Promise<string>;
|
|
805
|
-
|
|
806
|
-
/**
|
|
807
|
-
* Navigate back in the page history
|
|
808
|
-
* @see {@link https://w3c.github.io/webdriver/#back}
|
|
809
|
-
*/
|
|
810
|
-
back?(): Promise<void>;
|
|
811
|
-
|
|
812
|
-
/**
|
|
813
|
-
* Navigate forward in the page history
|
|
814
|
-
* @see {@link https://w3c.github.io/webdriver/#forward}
|
|
815
|
-
*/
|
|
816
|
-
forward?(): Promise<void>;
|
|
817
|
-
|
|
818
|
-
/**
|
|
819
|
-
* Refresh the page
|
|
820
|
-
* @see {@link https://w3c.github.io/webdriver/#refresh}
|
|
821
|
-
*/
|
|
822
|
-
refresh?(): Promise<void>;
|
|
823
|
-
|
|
824
|
-
/**
|
|
825
|
-
* Get the current page title
|
|
826
|
-
* @see {@link https://w3c.github.io/webdriver/#get-title}
|
|
827
|
-
*
|
|
828
|
-
* @returns The title
|
|
829
|
-
*
|
|
830
|
-
* @example
|
|
831
|
-
* ```js
|
|
832
|
-
* await driver.getTitle()
|
|
833
|
-
* ```
|
|
834
|
-
* ```py
|
|
835
|
-
* driver.title
|
|
836
|
-
* ```
|
|
837
|
-
* ```java
|
|
838
|
-
* driver.getTitle();
|
|
839
|
-
* ```
|
|
840
|
-
*/
|
|
841
|
-
title?(): Promise<string>;
|
|
842
|
-
|
|
843
|
-
/**
|
|
844
|
-
* Get the handle (id) associated with the current browser window
|
|
845
|
-
* @see {@link https://w3c.github.io/webdriver/#get-window-handle}
|
|
846
|
-
*
|
|
847
|
-
* @returns The handle string
|
|
848
|
-
*/
|
|
849
|
-
getWindowHandle?(): Promise<string>;
|
|
850
|
-
|
|
851
|
-
/**
|
|
852
|
-
* Close the current browsing context (window)
|
|
853
|
-
* @see {@link https://w3c.github.io/webdriver/#close-window}
|
|
854
|
-
*
|
|
855
|
-
* @returns An array of window handles representing currently-open windows
|
|
856
|
-
*/
|
|
857
|
-
closeWindow?(): Promise<string[]>;
|
|
858
|
-
|
|
859
|
-
/**
|
|
860
|
-
* Switch to a specified window
|
|
861
|
-
* @see {@link https://w3c.github.io/webdriver/#switch-to-window}
|
|
862
|
-
*
|
|
863
|
-
* @param handle - the window handle of the window to make active
|
|
864
|
-
*/
|
|
865
|
-
setWindow?(handle: string): Promise<void>;
|
|
866
|
-
|
|
867
|
-
/**
|
|
868
|
-
* Get a set of handles representing open browser windows
|
|
869
|
-
* @see {@link https://w3c.github.io/webdriver/#get-window-handles}
|
|
870
|
-
*
|
|
871
|
-
* @returns An array of window handles representing currently-open windows
|
|
872
|
-
*/
|
|
873
|
-
getWindowHandles?(): Promise<string[]>;
|
|
874
|
-
|
|
875
|
-
/**
|
|
876
|
-
* Create a new browser window
|
|
877
|
-
* @see {@link https://w3c.github.io/webdriver/#new-window}
|
|
878
|
-
*
|
|
879
|
-
* @param type - a hint to the driver whether to create a "tab" or "window"
|
|
880
|
-
*
|
|
881
|
-
* @returns An object containing the handle of the newly created window and its type
|
|
882
|
-
*/
|
|
883
|
-
createNewWindow?(type?: NewWindowType): Promise<NewWindow>;
|
|
884
|
-
|
|
885
|
-
/**
|
|
886
|
-
* Switch the current browsing context to a frame
|
|
887
|
-
* @see {@link https://w3c.github.io/webdriver/#switch-to-frame}
|
|
888
|
-
*
|
|
889
|
-
* @param id - the frame id, index, or `null` (indicating the top-level context)
|
|
890
|
-
*/
|
|
891
|
-
setFrame?(id: null | number | string): Promise<void>;
|
|
892
|
-
|
|
893
|
-
/**
|
|
894
|
-
* Set the current browsing context to the parent of the current context
|
|
895
|
-
* @see {@link https://w3c.github.io/webdriver/#switch-to-parent-frame}
|
|
896
|
-
*/
|
|
897
|
-
switchToParentFrame?(): Promise<void>;
|
|
898
|
-
|
|
899
|
-
/**
|
|
900
|
-
* Get the size and position of the current window
|
|
901
|
-
* @see {@link https://w3c.github.io/webdriver/#get-window-rect}
|
|
902
|
-
*
|
|
903
|
-
* @returns A `Rect` JSON object with x, y, width, and height properties
|
|
904
|
-
*/
|
|
905
|
-
getWindowRect?(): Promise<Rect>;
|
|
906
|
-
|
|
907
|
-
/**
|
|
908
|
-
* Set the current window's size and position
|
|
909
|
-
* @see {@link https://w3c.github.io/webdriver/#set-window-rect}
|
|
910
|
-
*
|
|
911
|
-
* @param x - the screen coordinate for the new left edge of the window
|
|
912
|
-
* @param y - the screen coordinate for the new top edge of the window
|
|
913
|
-
* @param width - the width in pixels to resize the window to
|
|
914
|
-
* @param height - the height in pixels to resize the window to
|
|
915
|
-
*
|
|
916
|
-
* @returns The actual `Rect` of the window after running the command
|
|
917
|
-
*/
|
|
918
|
-
setWindowRect?(x: number, y: number, width: number, height: number): Promise<Rect>;
|
|
919
|
-
|
|
920
|
-
/**
|
|
921
|
-
* Run the window-manager specific 'maximize' operation on the current window
|
|
922
|
-
* @see {@link https://w3c.github.io/webdriver/#maximize-window}
|
|
923
|
-
*
|
|
924
|
-
* @returns The actual `Rect` of the window after running the command
|
|
925
|
-
*/
|
|
926
|
-
maximizeWindow?(): Promise<Rect>;
|
|
927
|
-
|
|
928
|
-
/**
|
|
929
|
-
* Run the window-manager specific 'minimize' operation on the current window
|
|
930
|
-
* @see {@link https://w3c.github.io/webdriver/#minimize-window}
|
|
931
|
-
*
|
|
932
|
-
* @returns The actual `Rect` of the window after running the command
|
|
933
|
-
*/
|
|
934
|
-
minimizeWindow?(): Promise<Rect>;
|
|
935
|
-
|
|
936
|
-
/**
|
|
937
|
-
* Put the current window into full screen mode
|
|
938
|
-
* @see {@link https://w3c.github.io/webdriver/#fullscreen-window}
|
|
939
|
-
*
|
|
940
|
-
* @returns The actual `Rect` of the window after running the command
|
|
941
|
-
*/
|
|
942
|
-
fullScreenWindow?(): Promise<Rect>;
|
|
943
|
-
|
|
944
|
-
/**
|
|
945
|
-
* Get the active element
|
|
946
|
-
* @see {@link https://w3c.github.io/webdriver/#get-active-element}
|
|
947
|
-
*
|
|
948
|
-
* @returns The JSON object encapsulating the active element reference
|
|
949
|
-
*/
|
|
950
|
-
active?(): Promise<Element>;
|
|
951
|
-
|
|
952
|
-
/**
|
|
953
|
-
* Get the shadow root of an element
|
|
954
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-shadow-root}
|
|
955
|
-
*
|
|
956
|
-
* @param elementId - the id of the element to retrieve the shadow root for
|
|
957
|
-
*
|
|
958
|
-
* @returns The shadow root for an element, as an element
|
|
959
|
-
*/
|
|
960
|
-
elementShadowRoot?(elementId: string): Promise<Element>;
|
|
961
|
-
|
|
962
|
-
/**
|
|
963
|
-
* Determine if the reference element is selected or not
|
|
964
|
-
* @see {@link https://w3c.github.io/webdriver/#is-element-selected}
|
|
965
|
-
*
|
|
966
|
-
* @param elementId - the id of the element
|
|
967
|
-
*
|
|
968
|
-
* @returns True if the element is selected, False otherwise
|
|
969
|
-
*/
|
|
970
|
-
elementSelected?(elementId: string): Promise<boolean>;
|
|
971
|
-
|
|
972
|
-
/**
|
|
973
|
-
* Retrieve the value of an element's attribute
|
|
974
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-attribute}
|
|
975
|
-
*
|
|
976
|
-
* @param name - the attribute name
|
|
977
|
-
* @param elementId - the id of the element
|
|
978
|
-
*
|
|
979
|
-
* @returns The attribute value
|
|
980
|
-
*/
|
|
981
|
-
getAttribute?(name: string, elementId: string): Promise<string | null>;
|
|
982
|
-
|
|
983
|
-
/**
|
|
984
|
-
* Retrieve the value of a named property of an element's JS object
|
|
985
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-property}
|
|
986
|
-
*
|
|
987
|
-
* @param name - the object property name
|
|
988
|
-
* @param elementId - the id of the element
|
|
989
|
-
*
|
|
990
|
-
* @returns The property value
|
|
991
|
-
*/
|
|
992
|
-
getProperty?(name: string, elementId: string): Promise<string | null>;
|
|
993
|
-
|
|
994
|
-
/**
|
|
995
|
-
* Retrieve the value of a CSS property of an element
|
|
996
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-css-value}
|
|
997
|
-
*
|
|
998
|
-
* @param name - the CSS property name
|
|
999
|
-
* @param elementId - the id of the element
|
|
1000
|
-
*
|
|
1001
|
-
* @returns The property value
|
|
1002
|
-
*/
|
|
1003
|
-
getCssProperty?(name: string, elementId: string): Promise<string>;
|
|
1004
|
-
|
|
1005
|
-
/**
|
|
1006
|
-
* Get the text of an element as rendered
|
|
1007
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-text}
|
|
1008
|
-
*
|
|
1009
|
-
* @param elementId - the id of the element
|
|
1010
|
-
*
|
|
1011
|
-
* @returns The text rendered for the element
|
|
1012
|
-
*/
|
|
1013
|
-
getText?(elementId: string): Promise<string>;
|
|
1014
|
-
|
|
1015
|
-
/**
|
|
1016
|
-
* Get the tag name of an element
|
|
1017
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-tag-name}
|
|
1018
|
-
*
|
|
1019
|
-
* @param elementId - the id of the element
|
|
1020
|
-
*
|
|
1021
|
-
* @returns The tag name
|
|
1022
|
-
*/
|
|
1023
|
-
getName?(elementId: string): Promise<string>;
|
|
1024
|
-
|
|
1025
|
-
/**
|
|
1026
|
-
* Get the dimensions and position of an element
|
|
1027
|
-
* @see {@link https://w3c.github.io/webdriver/#get-element-rect}
|
|
1028
|
-
*
|
|
1029
|
-
* @param elementId - the id of the element
|
|
1030
|
-
*
|
|
1031
|
-
* @returns The Rect object containing x, y, width, and height properties
|
|
1032
|
-
*/
|
|
1033
|
-
getElementRect?(elementId: string): Promise<Rect>;
|
|
1034
|
-
|
|
1035
|
-
/**
|
|
1036
|
-
* Determine whether an element is enabled
|
|
1037
|
-
* @see {@link https://w3c.github.io/webdriver/#is-element-enabled}
|
|
1038
|
-
*
|
|
1039
|
-
* @param elementId - the id of the element
|
|
1040
|
-
*
|
|
1041
|
-
* @returns True if the element is enabled, False otherwise
|
|
1042
|
-
*/
|
|
1043
|
-
elementEnabled?(elementId: string): Promise<boolean>;
|
|
1044
|
-
|
|
1045
|
-
/**
|
|
1046
|
-
* Get the WAI-ARIA role of an element
|
|
1047
|
-
* @see {@link https://w3c.github.io/webdriver/#get-computed-role}
|
|
1048
|
-
*
|
|
1049
|
-
* @param elementId - the id of the element
|
|
1050
|
-
*
|
|
1051
|
-
* @returns The role
|
|
1052
|
-
*/
|
|
1053
|
-
getComputedRole?(elementId: string): Promise<string | null>;
|
|
1054
|
-
|
|
1055
|
-
/**
|
|
1056
|
-
* Get the accessible name/label of an element
|
|
1057
|
-
* @see {@link https://w3c.github.io/webdriver/#get-computed-label}
|
|
1058
|
-
*
|
|
1059
|
-
* @param elementId - the id of the element
|
|
1060
|
-
*
|
|
1061
|
-
* @returns The accessible name
|
|
1062
|
-
*/
|
|
1063
|
-
getComputedLabel?(elementId: string): Promise<string | null>;
|
|
1064
|
-
|
|
1065
|
-
/**
|
|
1066
|
-
* Determine whether an element is displayed
|
|
1067
|
-
* @see {@link https://w3c.github.io/webdriver/#element-displayedness}
|
|
1068
|
-
*
|
|
1069
|
-
* @param elementId - the id of the element
|
|
1070
|
-
*
|
|
1071
|
-
* @returns True if any part of the element is rendered within the viewport, False otherwise
|
|
1072
|
-
*/
|
|
1073
|
-
elementDisplayed?(elementId: string): Promise<boolean>;
|
|
1074
|
-
|
|
1075
|
-
/**
|
|
1076
|
-
* Click/tap an element
|
|
1077
|
-
* @see {@link https://w3c.github.io/webdriver/#element-click}
|
|
1078
|
-
*
|
|
1079
|
-
* @param elementId - the id of the element
|
|
1080
|
-
*/
|
|
1081
|
-
click?(elementId: string): Promise<void>;
|
|
1082
|
-
|
|
1083
|
-
/**
|
|
1084
|
-
* Clear the text/value of an editable element
|
|
1085
|
-
* @see {@link https://w3c.github.io/webdriver/#element-clear}
|
|
1086
|
-
*
|
|
1087
|
-
* @param elementId - the id of the element
|
|
1088
|
-
*/
|
|
1089
|
-
clear?(elementId: string): Promise<void>;
|
|
1090
|
-
|
|
1091
|
-
/**
|
|
1092
|
-
* Send keystrokes to an element (or otherwise set its value)
|
|
1093
|
-
* @see {@link https://w3c.github.io/webdriver/#element-send-keys}
|
|
1094
|
-
*
|
|
1095
|
-
* @param text - the text to send to the element
|
|
1096
|
-
* @param elementId - the id of the element
|
|
1097
|
-
*/
|
|
1098
|
-
setValue?(text: string, elementId: string): Promise<void>;
|
|
1099
|
-
|
|
1100
|
-
/**
|
|
1101
|
-
* Execute JavaScript (or some other kind of script) in the browser/app context
|
|
1102
|
-
* @see {@link https://w3c.github.io/webdriver/#execute-script}
|
|
1103
|
-
*
|
|
1104
|
-
* @param script - the string to be evaluated as the script, which will be made the body of an
|
|
1105
|
-
* anonymous function in the case of JS
|
|
1106
|
-
* @param args - the list of arguments to be applied to the script as a function
|
|
1107
|
-
*
|
|
1108
|
-
* @returns The return value of the script execution
|
|
1109
|
-
*/
|
|
1110
|
-
execute?(script: string, args: unknown[]): Promise<unknown>;
|
|
1111
|
-
|
|
1112
|
-
/**
|
|
1113
|
-
* Execute JavaScript (or some other kind of script) in the browser/app context, asynchronously
|
|
1114
|
-
* @see {@link https://w3c.github.io/webdriver/#execute-async-script}
|
|
1115
|
-
*
|
|
1116
|
-
* @param script - the string to be evaluated as the script, which will be made the body of an
|
|
1117
|
-
* anonymous function in the case of JS
|
|
1118
|
-
* @param args - the list of arguments to be applied to the script as a function
|
|
1119
|
-
*
|
|
1120
|
-
* @returns The promise resolution of the return value of the script execution (or an error
|
|
1121
|
-
* object if the promise is rejected)
|
|
1122
|
-
*/
|
|
1123
|
-
executeAsync?(script: string, args: unknown[]): Promise<unknown>;
|
|
1124
|
-
|
|
1125
|
-
/**
|
|
1126
|
-
* Get all cookies known to the browsing context
|
|
1127
|
-
* @see {@link https://w3c.github.io/webdriver/#get-all-cookies}
|
|
1128
|
-
*
|
|
1129
|
-
* @returns A list of serialized cookies
|
|
1130
|
-
*/
|
|
1131
|
-
getCookies?(): Promise<Cookie[]>;
|
|
1132
|
-
|
|
1133
|
-
/**
|
|
1134
|
-
* Get a cookie by name
|
|
1135
|
-
* @see {@link https://w3c.github.io/webdriver/#get-named-cookie}
|
|
1136
|
-
*
|
|
1137
|
-
* @param name - the name of the cookie
|
|
1138
|
-
*
|
|
1139
|
-
* @returns A serialized cookie
|
|
1140
|
-
*/
|
|
1141
|
-
getCookie?(name: string): Promise<Cookie>;
|
|
1142
|
-
|
|
1143
|
-
/**
|
|
1144
|
-
* Add a cookie to the browsing context
|
|
1145
|
-
* @see {@link https://w3c.github.io/webdriver/#add-cookie}
|
|
1146
|
-
*
|
|
1147
|
-
* @param cookie - the cookie data including properties like name, value, path, domain,
|
|
1148
|
-
* secure, httpOnly, expiry, and samesite
|
|
1149
|
-
*/
|
|
1150
|
-
setCookie?(cookie: Cookie): Promise<void>;
|
|
1151
|
-
|
|
1152
|
-
/**
|
|
1153
|
-
* Delete a named cookie
|
|
1154
|
-
* @see {@link https://w3c.github.io/webdriver/#delete-cookie}
|
|
1155
|
-
*
|
|
1156
|
-
* @param name - the name of the cookie to delete
|
|
1157
|
-
*/
|
|
1158
|
-
deleteCookie?(name: string): Promise<void>;
|
|
1159
|
-
|
|
1160
|
-
/**
|
|
1161
|
-
* Delete all cookies
|
|
1162
|
-
* @see {@link https://w3c.github.io/webdriver/#delete-all-cookies}
|
|
1163
|
-
*/
|
|
1164
|
-
deleteCookies?(): Promise<void>;
|
|
1165
|
-
|
|
1166
|
-
/**
|
|
1167
|
-
* Perform touch or keyboard actions
|
|
1168
|
-
* @see {@link https://w3c.github.io/webdriver/#perform-actions}
|
|
1169
|
-
*
|
|
1170
|
-
* @param actions - the action sequence
|
|
1171
|
-
*/
|
|
1172
|
-
performActions?(actions: ActionSequence[]): Promise<void>;
|
|
1173
|
-
|
|
1174
|
-
/**
|
|
1175
|
-
* Release all keys or buttons that are currently pressed
|
|
1176
|
-
* @see {@link https://w3c.github.io/webdriver/#release-actions}
|
|
1177
|
-
*/
|
|
1178
|
-
releaseActions?(): Promise<void>;
|
|
1179
|
-
|
|
1180
|
-
/**
|
|
1181
|
-
* Dismiss a simple dialog/alert
|
|
1182
|
-
* @see {@link https://w3c.github.io/webdriver/#dismiss-alert}
|
|
1183
|
-
*/
|
|
1184
|
-
postDismissAlert?(): Promise<void>;
|
|
1185
|
-
|
|
1186
|
-
/**
|
|
1187
|
-
* Accept a simple dialog/alert
|
|
1188
|
-
* @see {@link https://w3c.github.io/webdriver/#accept-alert}
|
|
1189
|
-
*/
|
|
1190
|
-
postAcceptAlert?(): Promise<void>;
|
|
1191
|
-
|
|
1192
|
-
/**
|
|
1193
|
-
* Get the text of the displayed alert
|
|
1194
|
-
* @see {@link https://w3c.github.io/webdriver/#get-alert-text}
|
|
1195
|
-
*
|
|
1196
|
-
* @returns The text of the alert
|
|
1197
|
-
*/
|
|
1198
|
-
getAlertText?(): Promise<string | null>;
|
|
1199
|
-
|
|
1200
|
-
/**
|
|
1201
|
-
* Set the text field of an alert prompt
|
|
1202
|
-
* @see {@link https://w3c.github.io/webdriver/#send-alert-text}
|
|
1203
|
-
*
|
|
1204
|
-
* @param text - the text to send to the prompt
|
|
1205
|
-
*/
|
|
1206
|
-
setAlertText?(text: string): Promise<void>;
|
|
1207
|
-
|
|
1208
|
-
/**
|
|
1209
|
-
* Get a screenshot of the current document as rendered
|
|
1210
|
-
* @see {@link https://w3c.github.io/webdriver/#take-screenshot}
|
|
1211
|
-
*
|
|
1212
|
-
* @returns A base64-encoded string representing the PNG image data
|
|
1213
|
-
*/
|
|
1214
|
-
getScreenshot?(): Promise<string>;
|
|
1215
|
-
|
|
1216
|
-
/**
|
|
1217
|
-
* Get an image of a single element as rendered on screen
|
|
1218
|
-
* @see {@link https://w3c.github.io/webdriver/#take-element-screenshot}
|
|
1219
|
-
*
|
|
1220
|
-
* @param elementId - the id of the element
|
|
1221
|
-
*
|
|
1222
|
-
* @returns A base64-encoded string representing the PNG image data for the element rect
|
|
1223
|
-
*/
|
|
1224
|
-
getElementScreenshot?(elementId: string): Promise<string>;
|
|
1225
|
-
|
|
1226
|
-
// Appium W3C WebDriver Extension
|
|
1227
|
-
|
|
1228
|
-
/**
|
|
1229
|
-
* Get the current time on the device under timeouts
|
|
1230
|
-
*
|
|
1231
|
-
* @param format - the date/time format you would like the response into
|
|
1232
|
-
*
|
|
1233
|
-
* @returns The formatted time
|
|
1234
|
-
*/
|
|
1235
|
-
getDeviceTime?(format?: string): Promise<string>;
|
|
1236
|
-
|
|
1237
|
-
/**
|
|
1238
|
-
* Install an app on a device
|
|
1239
|
-
*
|
|
1240
|
-
* @param appPath - the absolute path to a local app or a URL of a downloadable app bundle
|
|
1241
|
-
* @param options - driver-specific install options
|
|
1242
|
-
*/
|
|
1243
|
-
installApp?(appPath: string, options?: unknown): Promise<void>;
|
|
1244
|
-
|
|
1245
|
-
/**
|
|
1246
|
-
* Launch an app
|
|
1247
|
-
*
|
|
1248
|
-
* @param appId - the package or bundle ID of the application
|
|
1249
|
-
* @param options - driver-specific launch options
|
|
1250
|
-
*/
|
|
1251
|
-
activateApp?(appId: string, options?: unknown): Promise<void>;
|
|
1252
|
-
|
|
1253
|
-
/**
|
|
1254
|
-
* Remove / uninstall an app
|
|
1255
|
-
*
|
|
1256
|
-
* @param appId - the package or bundle ID of the application
|
|
1257
|
-
* @param options - driver-specific launch options
|
|
1258
|
-
*
|
|
1259
|
-
* @returns `true` if successful
|
|
1260
|
-
*/
|
|
1261
|
-
removeApp?(appId: string, options?: unknown): Promise<boolean>;
|
|
1262
|
-
|
|
1263
|
-
/**
|
|
1264
|
-
* Quit / terminate / stop a running application
|
|
1265
|
-
*
|
|
1266
|
-
* @param appId - the package or bundle ID of the application
|
|
1267
|
-
* @param options - driver-specific launch options
|
|
1268
|
-
*/
|
|
1269
|
-
terminateApp?(appId: string, options?: unknown): Promise<boolean>;
|
|
1270
|
-
|
|
1271
|
-
/**
|
|
1272
|
-
* Determine whether an app is installed
|
|
1273
|
-
*
|
|
1274
|
-
* @param appId - the package or bundle ID of the application
|
|
1275
|
-
*/
|
|
1276
|
-
isAppInstalled?(appId: string): Promise<boolean>;
|
|
1277
|
-
|
|
1278
|
-
/**
|
|
1279
|
-
* Get the running state of an app
|
|
1280
|
-
*
|
|
1281
|
-
* @param appId - the package or bundle ID of the application
|
|
1282
|
-
*
|
|
1283
|
-
* @returns A number representing the state. `0` means not installed, `1` means not running, `2`
|
|
1284
|
-
* means running in background but suspended, `3` means running in the background, and `4` means
|
|
1285
|
-
* running in the foreground
|
|
1286
|
-
*/
|
|
1287
|
-
queryAppState?(appId: string): Promise<0 | 1 | 2 | 3 | 4>;
|
|
1288
|
-
|
|
1289
|
-
/**
|
|
1290
|
-
* Attempt to hide a virtual keyboard
|
|
1291
|
-
*
|
|
1292
|
-
* @param strategy - the driver-specific name of a hiding strategy to follow
|
|
1293
|
-
* @param key - the text of a key to use to hide the keyboard
|
|
1294
|
-
* @param keyCode - a key code to trigger to hide the keyboard
|
|
1295
|
-
* @param keyName - the name of a key to use to hide the keyboard
|
|
1296
|
-
*
|
|
1297
|
-
* @returns Whether the keyboard was successfully hidden. May never return `false` on some platforms
|
|
1298
|
-
*/
|
|
1299
|
-
hideKeyboard?(
|
|
1300
|
-
strategy?: string,
|
|
1301
|
-
key?: string,
|
|
1302
|
-
keyCode?: string,
|
|
1303
|
-
keyName?: string,
|
|
1304
|
-
): Promise<boolean>;
|
|
1305
|
-
|
|
1306
|
-
/**
|
|
1307
|
-
* Determine whether the keyboard is shown
|
|
1308
|
-
*
|
|
1309
|
-
* @returns Whether the keyboard is shown
|
|
1310
|
-
*/
|
|
1311
|
-
isKeyboardShown?(): Promise<boolean>;
|
|
1312
|
-
|
|
1313
|
-
/**
|
|
1314
|
-
* Push data to a file at a remote path on the device
|
|
1315
|
-
*
|
|
1316
|
-
* @param path - the remote path on the device to create the file at
|
|
1317
|
-
* @param data - the base64-encoded data which will be decoded and written to `path`
|
|
1318
|
-
*/
|
|
1319
|
-
pushFile?(path: string, data: string): Promise<void>;
|
|
1320
|
-
|
|
1321
|
-
/**
|
|
1322
|
-
* Retrieve the data from a file on the device at a given path
|
|
1323
|
-
*
|
|
1324
|
-
* @param path - the remote path on the device to pull file data from
|
|
1325
|
-
*
|
|
1326
|
-
* @returns The base64-encoded file data
|
|
1327
|
-
*/
|
|
1328
|
-
pullFile?(path: string): Promise<string>;
|
|
1329
|
-
|
|
1330
|
-
/**
|
|
1331
|
-
* Retrieve the data from a folder on the device at a given path
|
|
1332
|
-
*
|
|
1333
|
-
* @param path - the remote path of a directory on the device
|
|
1334
|
-
*
|
|
1335
|
-
* @returns The base64-encoded zip file of the directory contents
|
|
1336
|
-
*/
|
|
1337
|
-
pullFolder?(path: string): Promise<string>;
|
|
1338
|
-
|
|
1339
|
-
/**
|
|
1340
|
-
* Get the device orientation
|
|
1341
|
-
*
|
|
1342
|
-
* @returns The orientation string
|
|
1343
|
-
*/
|
|
1344
|
-
getOrientation?(): Promise<string>;
|
|
1345
|
-
|
|
1346
|
-
/**
|
|
1347
|
-
* Set the device orientation
|
|
1348
|
-
*
|
|
1349
|
-
* @param orientation - the orientation string
|
|
1350
|
-
*/
|
|
1351
|
-
setOrientation?(orientation: string): Promise<void>;
|
|
1352
|
-
|
|
1353
|
-
/**
|
|
1354
|
-
* Get the virtual or real geographical location of a device
|
|
1355
|
-
*
|
|
1356
|
-
* @returns The location
|
|
1357
|
-
*/
|
|
1358
|
-
getGeoLocation?(): Promise<Location>;
|
|
1359
|
-
|
|
1360
|
-
/**
|
|
1361
|
-
* Set the virtual geographical location of a device
|
|
1362
|
-
*
|
|
1363
|
-
* @param location - the location including latitude and longitude
|
|
1364
|
-
* @returns The complete location
|
|
1365
|
-
*/
|
|
1366
|
-
setGeoLocation?(location: Partial<Location>): Promise<Location>;
|
|
1367
|
-
|
|
1368
|
-
// MJSONWIRE
|
|
1369
|
-
|
|
1370
|
-
/**
|
|
1371
|
-
* Get the currently active context
|
|
1372
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts}
|
|
1373
|
-
*
|
|
1374
|
-
* @returns The context name
|
|
1375
|
-
*/
|
|
1376
|
-
getCurrentContext?(): Promise<Ctx | null>;
|
|
1377
|
-
|
|
1378
|
-
/**
|
|
1379
|
-
* Switch to a context by name
|
|
1380
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts}
|
|
1381
|
-
*
|
|
1382
|
-
* @param name - the context name
|
|
1383
|
-
*/
|
|
1384
|
-
setContext?(name: string, ...args: any[]): Promise<void>;
|
|
1385
|
-
|
|
1386
|
-
/**
|
|
1387
|
-
* Get the list of available contexts
|
|
1388
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#webviews-and-other-contexts}
|
|
1389
|
-
*
|
|
1390
|
-
* @returns The list of context names
|
|
1391
|
-
*/
|
|
1392
|
-
getContexts?(): Promise<Ctx[]>;
|
|
1393
|
-
|
|
1394
|
-
/**
|
|
1395
|
-
* Get the network connection state of a device
|
|
1396
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-modes}
|
|
1397
|
-
*
|
|
1398
|
-
* @returns A number which is a bitmask representing categories like Data, Wifi, and Airplane
|
|
1399
|
-
* mode status
|
|
1400
|
-
*/
|
|
1401
|
-
getNetworkConnection?(): Promise<number>;
|
|
1402
|
-
|
|
1403
|
-
/**
|
|
1404
|
-
* Set the network connection of the device
|
|
1405
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-modes}
|
|
1406
|
-
*
|
|
1407
|
-
* @param type - the bitmask representing network state
|
|
1408
|
-
* @returns A number which is a bitmask representing categories like Data, Wifi, and Airplane
|
|
1409
|
-
* mode status
|
|
1410
|
-
*/
|
|
1411
|
-
setNetworkConnection?(type: number): Promise<number>;
|
|
1412
|
-
|
|
1413
|
-
/**
|
|
1414
|
-
* Get the current rotation state of the device
|
|
1415
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-rotation}
|
|
1416
|
-
*
|
|
1417
|
-
* @returns The Rotation object consisting of x, y, and z rotation values (0 <= n <= 360)
|
|
1418
|
-
*/
|
|
1419
|
-
getRotation?(): Promise<Rotation>;
|
|
1420
|
-
|
|
1421
|
-
/**
|
|
1422
|
-
* Set the device rotation state
|
|
1423
|
-
* @see {@link https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#device-rotation}
|
|
1424
|
-
*
|
|
1425
|
-
* @param x - the degree to which the device is rotated around the x axis (0 <= x <= 360)
|
|
1426
|
-
* @param y - the degree to which the device is rotated around the y axis (0 <= y <= 360)
|
|
1427
|
-
* @param z - the degree to which the device is rotated around the z axis (0 <= z <= 360)
|
|
1428
|
-
*/
|
|
1429
|
-
setRotation?(x: number, y: number, z: number): Promise<void>;
|
|
1430
|
-
|
|
1431
|
-
// Chromium DevTools
|
|
1432
|
-
|
|
1433
|
-
/**
|
|
1434
|
-
* Execute a devtools command
|
|
1435
|
-
*
|
|
1436
|
-
* @param cmd - the command
|
|
1437
|
-
* @param params - any command-specific command parameters
|
|
1438
|
-
*
|
|
1439
|
-
* @returns The result of the command execution
|
|
1440
|
-
*/
|
|
1441
|
-
executeCdp?(cmd: string, params: unknown): Promise<unknown>;
|
|
1442
|
-
|
|
1443
|
-
// Web Authentication
|
|
1444
|
-
|
|
1445
|
-
/**
|
|
1446
|
-
* Add a virtual authenticator to a browser
|
|
1447
|
-
* @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-add-virtual-authenticator}
|
|
1448
|
-
*
|
|
1449
|
-
* @param protocol - the protocol
|
|
1450
|
-
* @param transport - a valid AuthenticatorTransport value
|
|
1451
|
-
* @param hasResidentKey - whether there is a resident key
|
|
1452
|
-
* @param hasUserVerification - whether the authenticator has user verification
|
|
1453
|
-
* @param isUserConsenting - whether it is a user consenting authenticator
|
|
1454
|
-
* @param isUserVerified - whether the user is verified
|
|
1455
|
-
*
|
|
1456
|
-
* @returns The authenticator ID
|
|
1457
|
-
*/
|
|
1458
|
-
addVirtualAuthenticator?(
|
|
1459
|
-
protocol: 'ctap/u2f' | 'ctap2' | 'ctap2_1',
|
|
1460
|
-
transport: string,
|
|
1461
|
-
hasResidentKey?: boolean,
|
|
1462
|
-
hasUserVerification?: boolean,
|
|
1463
|
-
isUserConsenting?: boolean,
|
|
1464
|
-
isUserVerified?: boolean,
|
|
1465
|
-
): Promise<string>;
|
|
1466
|
-
|
|
1467
|
-
/**
|
|
1468
|
-
* Remove a virtual authenticator
|
|
1469
|
-
* @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-remove-virtual-authenticator}
|
|
1470
|
-
*
|
|
1471
|
-
* @param authenticatorId - the ID returned in the call to add the authenticator
|
|
1472
|
-
*/
|
|
1473
|
-
removeVirtualAuthenticator?(authenticatorId: string): Promise<void>;
|
|
1474
|
-
|
|
1475
|
-
/**
|
|
1476
|
-
* Inject a public key credential source into a virtual authenticator
|
|
1477
|
-
* @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-add-credential}
|
|
1478
|
-
*
|
|
1479
|
-
* @param credentialId - the base64 encoded credential ID
|
|
1480
|
-
* @param isResidentCredential - if true, a client-side credential, otherwise a server-side
|
|
1481
|
-
* credential
|
|
1482
|
-
* @param rpId - the relying party ID the credential is scoped to
|
|
1483
|
-
* @param privateKey - the base64 encoded private key package
|
|
1484
|
-
* @param userHandle - the base64 encoded user handle
|
|
1485
|
-
* @param signCount - the initial value for a signature counter
|
|
1486
|
-
*/
|
|
1487
|
-
addAuthCredential?(
|
|
1488
|
-
credentialId: string,
|
|
1489
|
-
isResidentCredential: boolean,
|
|
1490
|
-
rpId: string,
|
|
1491
|
-
privateKey: string,
|
|
1492
|
-
userHandle: string,
|
|
1493
|
-
signCount: number,
|
|
1494
|
-
authenticatorId: string,
|
|
1495
|
-
): Promise<void>;
|
|
1496
|
-
|
|
1497
|
-
/**
|
|
1498
|
-
* Get the list of public key credential sources
|
|
1499
|
-
* @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-get-credentials}
|
|
1500
|
-
*
|
|
1501
|
-
* @returns The list of Credentials
|
|
1502
|
-
*/
|
|
1503
|
-
getAuthCredential?(): Promise<Credential[]>;
|
|
1504
|
-
|
|
1505
|
-
/**
|
|
1506
|
-
* Remove all auth credentials
|
|
1507
|
-
* @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-remove-all-credentials}
|
|
1508
|
-
*/
|
|
1509
|
-
removeAllAuthCredentials?(): Promise<void>;
|
|
1510
|
-
|
|
1511
|
-
/**
|
|
1512
|
-
* Remove a specific auth credential
|
|
1513
|
-
*
|
|
1514
|
-
* @param credentialId - the credential ID
|
|
1515
|
-
* @param authenticatorId - the authenticator ID
|
|
1516
|
-
*/
|
|
1517
|
-
removeAuthCredential?(credentialId: string, authenticatorId: string): Promise<void>;
|
|
1518
|
-
|
|
1519
|
-
/**
|
|
1520
|
-
* Set the isUserVerified property of an authenticator
|
|
1521
|
-
* @see {@link https://www.w3.org/TR/webauthn-2/#sctn-automation-set-user-verified}
|
|
1522
|
-
*
|
|
1523
|
-
* @param isUserVerified - the value of the isUserVerified property
|
|
1524
|
-
* @param authenticatorId - the authenticator id
|
|
1525
|
-
*/
|
|
1526
|
-
setUserAuthVerified?(isUserVerified: boolean, authenticatorId: string): Promise<void>;
|
|
1527
|
-
|
|
268
|
+
> extends Driver<C, CArgs, Settings, CreateResult, DeleteResult, SessionData>,
|
|
269
|
+
IWDClassicCommands,
|
|
270
|
+
IAppiumCommands,
|
|
271
|
+
IJSONWPCommands,
|
|
272
|
+
IMJSONWPCommands<Ctx>,
|
|
273
|
+
IOtherProtocolCommands {
|
|
1528
274
|
/**
|
|
1529
275
|
* Proxy a command to a connected WebDriver server
|
|
1530
276
|
*
|