@appium/fake-driver 5.2.0 → 5.2.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/LICENSE +1 -1
- package/build/lib/commands/alert.d.ts +12 -40
- package/build/lib/commands/alert.d.ts.map +1 -1
- package/build/lib/commands/alert.js +3 -23
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/contexts.d.ts +12 -42
- package/build/lib/commands/contexts.d.ts.map +1 -1
- package/build/lib/commands/contexts.js +8 -28
- package/build/lib/commands/contexts.js.map +1 -1
- package/build/lib/commands/element.d.ts +25 -74
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js +24 -76
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/find.d.ts +16 -44
- package/build/lib/commands/find.d.ts.map +1 -1
- package/build/lib/commands/find.js +21 -45
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.d.ts +25 -88
- package/build/lib/commands/general.d.ts.map +1 -1
- package/build/lib/commands/general.js +3 -61
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/index.d.ts +13 -5
- package/build/lib/commands/index.d.ts.map +1 -1
- package/build/lib/commands/index.js +26 -13
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/mixin.d.ts +11 -0
- package/build/lib/commands/mixin.d.ts.map +1 -0
- package/build/lib/commands/mixin.js +17 -0
- package/build/lib/commands/mixin.js.map +1 -0
- package/build/lib/driver.d.ts +37 -92
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +26 -73
- package/build/lib/driver.js.map +1 -1
- package/build/lib/fake-app.d.ts +9 -7
- package/build/lib/fake-app.d.ts.map +1 -1
- package/build/lib/fake-app.js +2 -0
- package/build/lib/fake-app.js.map +1 -1
- package/build/lib/fake-element.d.ts +12 -4
- package/build/lib/fake-element.d.ts.map +1 -1
- package/build/lib/fake-element.js +11 -4
- package/build/lib/fake-element.js.map +1 -1
- package/build/lib/scripts/fake-error.d.ts +1 -0
- package/build/lib/scripts/fake-error.js +11 -1
- package/build/lib/scripts/fake-error.js.map +1 -1
- package/build/lib/scripts/fake-stdin.d.ts +2 -0
- package/build/lib/scripts/fake-stdin.d.ts.map +1 -0
- package/build/lib/scripts/fake-stdin.js +13 -0
- package/build/lib/scripts/fake-stdin.js.map +1 -0
- package/lib/commands/alert.ts +70 -0
- package/lib/commands/{contexts.js → contexts.ts} +26 -34
- package/lib/commands/element.ts +138 -0
- package/lib/commands/find.ts +137 -0
- package/lib/commands/general.ts +115 -0
- package/lib/commands/{index.js → index.ts} +14 -5
- package/lib/commands/mixin.ts +13 -0
- package/lib/driver.js +42 -78
- package/lib/fake-app.js +3 -3
- package/lib/fake-element.js +21 -6
- package/lib/scripts/fake-error.js +8 -1
- package/lib/scripts/fake-stdin.js +9 -0
- package/package.json +4 -3
- package/lib/commands/alert.js +0 -73
- package/lib/commands/element.js +0 -161
- package/lib/commands/find.js +0 -118
- package/lib/commands/general.js +0 -147
package/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
|
@@ -1,42 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*/
|
|
9
|
-
function assertAlert(this: import("../driver").FakeDriver): void;
|
|
10
|
-
/**
|
|
11
|
-
* Get the text of an alert
|
|
12
|
-
*
|
|
13
|
-
* @returns {Promise<string>}
|
|
14
|
-
* @this {FakeDriver}
|
|
15
|
-
*/
|
|
16
|
-
function getAlertText(this: import("../driver").FakeDriver): Promise<string>;
|
|
17
|
-
/**
|
|
18
|
-
* Set the text of an alert
|
|
19
|
-
*
|
|
20
|
-
* @param {string} text
|
|
21
|
-
* @returns {Promise<void>}
|
|
22
|
-
* @this {FakeDriver}
|
|
23
|
-
*/
|
|
24
|
-
function setAlertText(this: import("../driver").FakeDriver, text: string): Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Accept an alert
|
|
27
|
-
*
|
|
28
|
-
* @returns {Promise<void>}
|
|
29
|
-
* @this {FakeDriver}
|
|
30
|
-
*/
|
|
31
|
-
function postAcceptAlert(this: import("../driver").FakeDriver): Promise<void>;
|
|
32
|
-
/**
|
|
33
|
-
* Dismiss an alert
|
|
34
|
-
*
|
|
35
|
-
* @returns {Promise<void>}
|
|
36
|
-
* @this {FakeDriver}
|
|
37
|
-
*/
|
|
38
|
-
function postDismissAlert(this: import("../driver").FakeDriver): Promise<void>;
|
|
1
|
+
interface FakeDriverAlertMixin {
|
|
2
|
+
assertNoAlert(): void;
|
|
3
|
+
assertAlert(): void;
|
|
4
|
+
getAlertText(): Promise<string>;
|
|
5
|
+
setAlertText(text: string): Promise<void>;
|
|
6
|
+
postAcceptAlert(): Promise<void>;
|
|
7
|
+
postDismissAlert(): Promise<void>;
|
|
39
8
|
}
|
|
40
|
-
|
|
41
|
-
|
|
9
|
+
declare module '../driver' {
|
|
10
|
+
interface FakeDriver extends FakeDriverAlertMixin {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
42
14
|
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../lib/commands/alert.
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../lib/commands/alert.ts"],"names":[],"mappings":"AAIA,UAAU,oBAAoB;IAC5B,aAAa,IAAI,IAAI,CAAC;IACtB,WAAW,IAAI,IAAI,CAAC;IAEpB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,OAAO,QAAQ,WAAW,CAAC;IACzB,UAAU,UAAW,SAAQ,oBAAoB;KAAG;CACrD"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const driver_1 = require("appium/driver");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* @this {FakeDriver}
|
|
7
|
-
*/
|
|
4
|
+
const mixin_1 = require("./mixin");
|
|
5
|
+
const AlertMixin = {
|
|
8
6
|
assertNoAlert() {
|
|
9
7
|
if (this.appModel.hasAlert()) {
|
|
10
8
|
throw new driver_1.errors.UnexpectedAlertOpenError();
|
|
11
9
|
}
|
|
12
10
|
},
|
|
13
|
-
/**
|
|
14
|
-
* @this {FakeDriver}
|
|
15
|
-
*/
|
|
16
11
|
assertAlert() {
|
|
17
12
|
if (!this.appModel.hasAlert()) {
|
|
18
13
|
throw new driver_1.errors.NoAlertOpenError();
|
|
@@ -20,9 +15,6 @@ exports.default = {
|
|
|
20
15
|
},
|
|
21
16
|
/**
|
|
22
17
|
* Get the text of an alert
|
|
23
|
-
*
|
|
24
|
-
* @returns {Promise<string>}
|
|
25
|
-
* @this {FakeDriver}
|
|
26
18
|
*/
|
|
27
19
|
async getAlertText() {
|
|
28
20
|
this.assertAlert();
|
|
@@ -30,10 +22,6 @@ exports.default = {
|
|
|
30
22
|
},
|
|
31
23
|
/**
|
|
32
24
|
* Set the text of an alert
|
|
33
|
-
*
|
|
34
|
-
* @param {string} text
|
|
35
|
-
* @returns {Promise<void>}
|
|
36
|
-
* @this {FakeDriver}
|
|
37
25
|
*/
|
|
38
26
|
async setAlertText(text) {
|
|
39
27
|
this.assertAlert();
|
|
@@ -46,9 +34,6 @@ exports.default = {
|
|
|
46
34
|
},
|
|
47
35
|
/**
|
|
48
36
|
* Accept an alert
|
|
49
|
-
*
|
|
50
|
-
* @returns {Promise<void>}
|
|
51
|
-
* @this {FakeDriver}
|
|
52
37
|
*/
|
|
53
38
|
async postAcceptAlert() {
|
|
54
39
|
this.assertAlert();
|
|
@@ -56,15 +41,10 @@ exports.default = {
|
|
|
56
41
|
},
|
|
57
42
|
/**
|
|
58
43
|
* Dismiss an alert
|
|
59
|
-
*
|
|
60
|
-
* @returns {Promise<void>}
|
|
61
|
-
* @this {FakeDriver}
|
|
62
44
|
*/
|
|
63
45
|
async postDismissAlert() {
|
|
64
46
|
return this.postAcceptAlert();
|
|
65
47
|
},
|
|
66
48
|
};
|
|
67
|
-
|
|
68
|
-
* @typedef {import('../driver').FakeDriver} FakeDriver
|
|
69
|
-
*/
|
|
49
|
+
(0, mixin_1.mixin)(AlertMixin);
|
|
70
50
|
//# sourceMappingURL=alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../lib/commands/alert.
|
|
1
|
+
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../lib/commands/alert.ts"],"names":[],"mappings":";;AACA,0CAAqC;AACrC,mCAA8B;AAkB9B,MAAM,UAAU,GAAyB;IACvC,aAAa;QACX,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC5B,MAAM,IAAI,eAAM,CAAC,wBAAwB,EAAE,CAAC;SAC7C;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC7B,MAAM,IAAI,eAAM,CAAC,gBAAgB,EAAE,CAAC;SACrC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAmB,IAAY;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAClC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,eAAM,CAAC,wBAAwB,EAAE,CAAC;SAC7C;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;CACF,CAAC;AAEF,IAAA,aAAK,EAAC,UAAU,CAAC,CAAC"}
|
|
@@ -1,44 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* @this {FakeDriver}
|
|
11
|
-
*/
|
|
12
|
-
function assertWebviewContext(this: import("../driver").FakeDriver): void;
|
|
13
|
-
/**
|
|
14
|
-
* @returns {Promise<string>}
|
|
15
|
-
* @this {FakeDriver}
|
|
16
|
-
*/
|
|
17
|
-
function getCurrentContext(this: import("../driver").FakeDriver): Promise<string>;
|
|
18
|
-
/**
|
|
19
|
-
* Get the list of available contexts
|
|
20
|
-
*
|
|
21
|
-
* @returns {Promise<string[]>}
|
|
22
|
-
* @this {FakeDriver}
|
|
23
|
-
*/
|
|
24
|
-
function getContexts(this: import("../driver").FakeDriver): Promise<string[]>;
|
|
25
|
-
/**
|
|
26
|
-
* Set the current context
|
|
27
|
-
*
|
|
28
|
-
* @param {string} context - name of the context
|
|
29
|
-
* @returns {Promise<void>}
|
|
30
|
-
* @this {FakeDriver}
|
|
31
|
-
*/
|
|
32
|
-
function setContext(this: import("../driver").FakeDriver, context: string): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Set the active frame
|
|
35
|
-
*
|
|
36
|
-
* @param {number} frameId
|
|
37
|
-
* @returns {Promise<void>}
|
|
38
|
-
* @this {FakeDriver}
|
|
39
|
-
*/
|
|
40
|
-
function setFrame(this: import("../driver").FakeDriver, frameId: number): Promise<void>;
|
|
1
|
+
interface FakeDriverContextsMixin {
|
|
2
|
+
getRawContexts(): Record<string, any>;
|
|
3
|
+
assertWebviewContext(): void;
|
|
4
|
+
getCurrentContext(): Promise<string>;
|
|
5
|
+
getContexts(): Promise<string[]>;
|
|
6
|
+
setContext(context: string): Promise<void>;
|
|
7
|
+
setFrame(frame: number | null): Promise<void>;
|
|
41
8
|
}
|
|
42
|
-
|
|
43
|
-
|
|
9
|
+
declare module '../driver' {
|
|
10
|
+
interface FakeDriver extends FakeDriverContextsMixin {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
44
14
|
//# sourceMappingURL=contexts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../lib/commands/contexts.
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../lib/commands/contexts.ts"],"names":[],"mappings":"AAIA,UAAU,uBAAuB;IAC/B,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,oBAAoB,IAAI,IAAI,CAAC;IAC7B,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AACD,OAAO,QAAQ,WAAW,CAAC;IACzB,UAAU,UAAW,SAAQ,uBAAuB;KAAG;CACxD"}
|
|
@@ -5,38 +5,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
|
7
7
|
const driver_1 = require("appium/driver");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* @this {FakeDriver}
|
|
11
|
-
*/
|
|
8
|
+
const mixin_1 = require("./mixin");
|
|
9
|
+
const ContextsMixin = {
|
|
12
10
|
getRawContexts() {
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const contexts = { NATIVE_APP: null, PROXY: null };
|
|
12
|
+
const wvs = this.appModel.getWebviews() ?? [];
|
|
15
13
|
for (let i = 1; i < wvs.length + 1; i++) {
|
|
16
14
|
contexts[`WEBVIEW_${i}`] = wvs[i - 1];
|
|
17
15
|
}
|
|
18
16
|
return contexts;
|
|
19
17
|
},
|
|
20
|
-
/**
|
|
21
|
-
* @this {FakeDriver}
|
|
22
|
-
*/
|
|
23
18
|
assertWebviewContext() {
|
|
24
19
|
if (this.curContext === 'NATIVE_APP') {
|
|
25
20
|
throw new driver_1.errors.InvalidContextError();
|
|
26
21
|
}
|
|
27
22
|
},
|
|
28
|
-
/**
|
|
29
|
-
* @returns {Promise<string>}
|
|
30
|
-
* @this {FakeDriver}
|
|
31
|
-
*/
|
|
32
23
|
async getCurrentContext() {
|
|
33
24
|
return this.curContext;
|
|
34
25
|
},
|
|
35
26
|
/**
|
|
36
27
|
* Get the list of available contexts
|
|
37
|
-
*
|
|
38
|
-
* @returns {Promise<string[]>}
|
|
39
|
-
* @this {FakeDriver}
|
|
40
28
|
*/
|
|
41
29
|
async getContexts() {
|
|
42
30
|
return lodash_1.default.keys(this.getRawContexts());
|
|
@@ -44,12 +32,10 @@ exports.default = {
|
|
|
44
32
|
/**
|
|
45
33
|
* Set the current context
|
|
46
34
|
*
|
|
47
|
-
* @param
|
|
48
|
-
* @returns {Promise<void>}
|
|
49
|
-
* @this {FakeDriver}
|
|
35
|
+
* @param context - name of the context
|
|
50
36
|
*/
|
|
51
37
|
async setContext(context) {
|
|
52
|
-
|
|
38
|
+
const contexts = this.getRawContexts();
|
|
53
39
|
if (context in contexts) {
|
|
54
40
|
this.curContext = context;
|
|
55
41
|
if (context === 'NATIVE_APP') {
|
|
@@ -70,10 +56,6 @@ exports.default = {
|
|
|
70
56
|
},
|
|
71
57
|
/**
|
|
72
58
|
* Set the active frame
|
|
73
|
-
*
|
|
74
|
-
* @param {number} frameId
|
|
75
|
-
* @returns {Promise<void>}
|
|
76
|
-
* @this {FakeDriver}
|
|
77
59
|
*/
|
|
78
60
|
async setFrame(frameId) {
|
|
79
61
|
this.assertWebviewContext();
|
|
@@ -81,7 +63,7 @@ exports.default = {
|
|
|
81
63
|
this.appModel.deactivateFrame();
|
|
82
64
|
}
|
|
83
65
|
else {
|
|
84
|
-
|
|
66
|
+
const nodes = this.appModel.xpathQuery(`//iframe[@id="${frameId}"]`);
|
|
85
67
|
if (!nodes.length) {
|
|
86
68
|
throw new driver_1.errors.NoSuchFrameError();
|
|
87
69
|
}
|
|
@@ -89,7 +71,5 @@ exports.default = {
|
|
|
89
71
|
}
|
|
90
72
|
},
|
|
91
73
|
};
|
|
92
|
-
|
|
93
|
-
* @typedef {import('../driver').FakeDriver} FakeDriver
|
|
94
|
-
*/
|
|
74
|
+
(0, mixin_1.mixin)(ContextsMixin);
|
|
95
75
|
//# sourceMappingURL=contexts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../lib/commands/contexts.
|
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../lib/commands/contexts.ts"],"names":[],"mappings":";;;;;AAAA,oDAAuB;AAEvB,0CAAqC;AACrC,mCAA8B;AAa9B,MAAM,aAAa,GAA4B;IAC7C,cAAc;QACZ,MAAM,QAAQ,GAAG,EAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACvC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE;YACpC,MAAM,IAAI,eAAM,CAAC,mBAAmB,EAAE,CAAC;SACxC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAmB,OAAe;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,OAAO,IAAI,QAAQ,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAC1B,IAAI,OAAO,KAAK,YAAY,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;iBAAM,IAAI,OAAO,KAAK,OAAO,EAAE;gBAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;SACF;aAAM;YACL,MAAM,IAAI,eAAM,CAAC,kBAAkB,EAAE,CAAC;SACvC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAmB,OAAsB;QACrD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;SACjC;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjB,MAAM,IAAI,eAAM,CAAC,gBAAgB,EAAE,CAAC;aACrC;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;IACH,CAAC;CACF,CAAC;AAEF,IAAA,aAAK,EAAC,aAAa,CAAC,CAAC"}
|
|
@@ -1,76 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function elementEnabled(this: import("../driver").FakeDriver, elementId: any): Promise<any>;
|
|
22
|
-
/**
|
|
23
|
-
* @this {FakeDriver}
|
|
24
|
-
*/
|
|
25
|
-
function elementSelected(this: import("../driver").FakeDriver, elementId: any): Promise<any>;
|
|
26
|
-
/**
|
|
27
|
-
* @this {FakeDriver}
|
|
28
|
-
*/
|
|
29
|
-
function setValue(this: import("../driver").FakeDriver, keys: any, elementId: any): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* @this {FakeDriver}
|
|
32
|
-
*/
|
|
33
|
-
function getText(this: import("../driver").FakeDriver, elementId: any): Promise<any>;
|
|
34
|
-
/**
|
|
35
|
-
* @this {FakeDriver}
|
|
36
|
-
*/
|
|
37
|
-
function clear(this: import("../driver").FakeDriver, elementId: any): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* This comment should be displayed instead of the one from ExternalDriver
|
|
40
|
-
* @param {string} elementId
|
|
41
|
-
* @this {FakeDriver}
|
|
42
|
-
*/
|
|
43
|
-
function click(this: import("../driver").FakeDriver, elementId: string): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* @this {FakeDriver}
|
|
46
|
-
*/
|
|
47
|
-
function getAttribute(this: import("../driver").FakeDriver, attr: any, elementId: any): Promise<any>;
|
|
48
|
-
/**
|
|
49
|
-
* @this {FakeDriver}
|
|
50
|
-
*/
|
|
51
|
-
function getElementRect(this: import("../driver").FakeDriver, elementId: any): any;
|
|
52
|
-
/**
|
|
53
|
-
* @this {FakeDriver}
|
|
54
|
-
*/
|
|
55
|
-
function getSize(this: import("../driver").FakeDriver, elementId: any): any;
|
|
56
|
-
/**
|
|
57
|
-
* @this {FakeDriver}
|
|
58
|
-
*/
|
|
59
|
-
function equalsElement(this: import("../driver").FakeDriver, el1Id: any, el2Id: any): any;
|
|
60
|
-
/**
|
|
61
|
-
* @this {FakeDriver}
|
|
62
|
-
*/
|
|
63
|
-
function getCssProperty(this: import("../driver").FakeDriver, prop: any, elementId: any): Promise<any>;
|
|
64
|
-
/**
|
|
65
|
-
* @param {string} elementId
|
|
66
|
-
* @this {FakeDriver}
|
|
67
|
-
*/
|
|
68
|
-
function getLocation(this: import("../driver").FakeDriver, elementId: string): Promise<any>;
|
|
69
|
-
/**
|
|
70
|
-
* @this {FakeDriver}
|
|
71
|
-
*/
|
|
72
|
-
function getLocationInView(this: import("../driver").FakeDriver, elementId: any): Promise<any>;
|
|
1
|
+
import { Position, Rect, Size } from '@appium/types';
|
|
2
|
+
import { FakeElement } from '../fake-element';
|
|
3
|
+
interface FakeDriverElementsMixin {
|
|
4
|
+
getElements(elementIds: string[]): FakeElement[];
|
|
5
|
+
getElement(elementId: string): FakeElement;
|
|
6
|
+
getName(elementId: string): Promise<string>;
|
|
7
|
+
elementDisplayed(elementId: string): Promise<boolean>;
|
|
8
|
+
elementEnabled(elementId: string): Promise<boolean>;
|
|
9
|
+
elementSelected(elementId: string): Promise<boolean>;
|
|
10
|
+
setValue(keys: string | string[], value: string): Promise<void>;
|
|
11
|
+
getText(elementId: string): Promise<string>;
|
|
12
|
+
clear(elementId: string): Promise<void>;
|
|
13
|
+
click(elementId: string): Promise<void>;
|
|
14
|
+
getAttribute(elementId: string, attributeName: string): Promise<string>;
|
|
15
|
+
getElementRect(elementId: string): Promise<Rect>;
|
|
16
|
+
getSize(elementId: string): Promise<Size>;
|
|
17
|
+
equalsElement(elementId: string, otherElementId: string): Promise<boolean>;
|
|
18
|
+
getCssProperty(elementId: string, propertyName: string): Promise<string>;
|
|
19
|
+
getLocation(elementId: string): Promise<Position>;
|
|
20
|
+
getLocationInView(elementId: string): Promise<Position>;
|
|
73
21
|
}
|
|
74
|
-
|
|
75
|
-
|
|
22
|
+
declare module '../driver' {
|
|
23
|
+
interface FakeDriver extends FakeDriverElementsMixin {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
76
27
|
//# sourceMappingURL=element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../lib/commands/element.
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../lib/commands/element.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAG5C,UAAU,uBAAuB;IAC/B,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACjD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAED,OAAO,QAAQ,WAAW,CAAC;IACzB,UAAU,UAAW,SAAQ,uBAAuB;KAAG;CACxD"}
|
|
@@ -5,146 +5,94 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
|
7
7
|
const driver_1 = require("appium/driver");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
getElements(elIds) {
|
|
13
|
-
for (let elId of elIds) {
|
|
8
|
+
const mixin_1 = require("./mixin");
|
|
9
|
+
const ElementsMixin = {
|
|
10
|
+
getElements(elementIds) {
|
|
11
|
+
for (const elId of elementIds) {
|
|
14
12
|
if (!lodash_1.default.has(this.elMap, elId)) {
|
|
15
13
|
throw new driver_1.errors.StaleElementReferenceError();
|
|
16
14
|
}
|
|
17
15
|
}
|
|
18
|
-
return
|
|
16
|
+
return elementIds.map((e) => this.elMap[e]);
|
|
19
17
|
},
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
getElement(elId) {
|
|
24
|
-
return this.getElements([elId])[0];
|
|
18
|
+
getElement(elementId) {
|
|
19
|
+
return this.getElements([elementId])[0];
|
|
25
20
|
},
|
|
26
|
-
/**
|
|
27
|
-
* @this {FakeDriver}
|
|
28
|
-
*/
|
|
29
21
|
async getName(elementId) {
|
|
30
|
-
|
|
22
|
+
const el = this.getElement(elementId);
|
|
31
23
|
return el.tagName;
|
|
32
24
|
},
|
|
33
|
-
/**
|
|
34
|
-
* @this {FakeDriver}
|
|
35
|
-
*/
|
|
36
25
|
async elementDisplayed(elementId) {
|
|
37
|
-
|
|
26
|
+
const el = this.getElement(elementId);
|
|
38
27
|
return el.isVisible();
|
|
39
28
|
},
|
|
40
|
-
/**
|
|
41
|
-
* @this {FakeDriver}
|
|
42
|
-
*/
|
|
43
29
|
async elementEnabled(elementId) {
|
|
44
|
-
|
|
30
|
+
const el = this.getElement(elementId);
|
|
45
31
|
return el.isEnabled();
|
|
46
32
|
},
|
|
47
|
-
/**
|
|
48
|
-
* @this {FakeDriver}
|
|
49
|
-
*/
|
|
50
33
|
async elementSelected(elementId) {
|
|
51
|
-
|
|
34
|
+
const el = this.getElement(elementId);
|
|
52
35
|
return el.isSelected();
|
|
53
36
|
},
|
|
54
|
-
/**
|
|
55
|
-
* @this {FakeDriver}
|
|
56
|
-
*/
|
|
57
37
|
async setValue(keys, elementId) {
|
|
58
38
|
let value = keys;
|
|
59
39
|
if (keys instanceof Array) {
|
|
60
40
|
value = keys.join('');
|
|
61
41
|
}
|
|
62
|
-
|
|
42
|
+
const el = this.getElement(elementId);
|
|
63
43
|
if (el.type !== 'MockInputField') {
|
|
64
44
|
throw new driver_1.errors.InvalidElementStateError();
|
|
65
45
|
}
|
|
66
46
|
el.setAttr('value', value);
|
|
67
47
|
},
|
|
68
|
-
/**
|
|
69
|
-
* @this {FakeDriver}
|
|
70
|
-
*/
|
|
71
48
|
async getText(elementId) {
|
|
72
|
-
|
|
49
|
+
const el = this.getElement(elementId);
|
|
73
50
|
return el.getAttr('value');
|
|
74
51
|
},
|
|
75
|
-
/**
|
|
76
|
-
* @this {FakeDriver}
|
|
77
|
-
*/
|
|
78
52
|
async clear(elementId) {
|
|
79
53
|
await this.setValue('', elementId);
|
|
80
54
|
},
|
|
81
55
|
/**
|
|
82
56
|
* This comment should be displayed instead of the one from ExternalDriver
|
|
83
|
-
* @param {string} elementId
|
|
84
|
-
* @this {FakeDriver}
|
|
85
57
|
*/
|
|
86
58
|
async click(elementId) {
|
|
87
59
|
this.assertNoAlert();
|
|
88
|
-
|
|
60
|
+
const el = this.getElement(elementId);
|
|
89
61
|
if (!el.isVisible()) {
|
|
90
62
|
throw new driver_1.errors.InvalidElementStateError();
|
|
91
63
|
}
|
|
92
64
|
el.click();
|
|
93
65
|
this.focusedElId = elementId;
|
|
94
66
|
},
|
|
95
|
-
/**
|
|
96
|
-
* @this {FakeDriver}
|
|
97
|
-
*/
|
|
98
67
|
async getAttribute(attr, elementId) {
|
|
99
|
-
|
|
68
|
+
const el = this.getElement(elementId);
|
|
100
69
|
return el.getAttr(attr);
|
|
101
70
|
},
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
*/
|
|
105
|
-
getElementRect(elementId) {
|
|
106
|
-
let el = this.getElement(elementId);
|
|
71
|
+
async getElementRect(elementId) {
|
|
72
|
+
const el = this.getElement(elementId);
|
|
107
73
|
return el.getElementRect();
|
|
108
74
|
},
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
*/
|
|
112
|
-
getSize(elementId) {
|
|
113
|
-
let el = this.getElement(elementId);
|
|
75
|
+
async getSize(elementId) {
|
|
76
|
+
const el = this.getElement(elementId);
|
|
114
77
|
return el.getSize();
|
|
115
78
|
},
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
equalsElement(el1Id, el2Id) {
|
|
120
|
-
let el1 = this.getElement(el1Id);
|
|
121
|
-
let el2 = this.getElement(el2Id);
|
|
79
|
+
async equalsElement(elementIdA, elementIdB) {
|
|
80
|
+
const el1 = this.getElement(elementIdA);
|
|
81
|
+
const el2 = this.getElement(elementIdB);
|
|
122
82
|
return el1.equals(el2);
|
|
123
83
|
},
|
|
124
|
-
/**
|
|
125
|
-
* @this {FakeDriver}
|
|
126
|
-
*/
|
|
127
84
|
async getCssProperty(prop, elementId) {
|
|
128
85
|
this.assertWebviewContext();
|
|
129
|
-
|
|
86
|
+
const el = this.getElement(elementId);
|
|
130
87
|
return el.getCss(prop);
|
|
131
88
|
},
|
|
132
|
-
/**
|
|
133
|
-
* @param {string} elementId
|
|
134
|
-
* @this {FakeDriver}
|
|
135
|
-
*/
|
|
136
89
|
async getLocation(elementId) {
|
|
137
90
|
const el = this.getElement(elementId);
|
|
138
91
|
return el.getLocation();
|
|
139
92
|
},
|
|
140
|
-
/**
|
|
141
|
-
* @this {FakeDriver}
|
|
142
|
-
*/
|
|
143
93
|
async getLocationInView(elementId) {
|
|
144
94
|
return this.getLocation(elementId);
|
|
145
95
|
},
|
|
146
96
|
};
|
|
147
|
-
|
|
148
|
-
* @typedef {import('../driver').FakeDriver} FakeDriver
|
|
149
|
-
*/
|
|
97
|
+
(0, mixin_1.mixin)(ElementsMixin);
|
|
150
98
|
//# sourceMappingURL=element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../../lib/commands/element.
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../../lib/commands/element.ts"],"names":[],"mappings":"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"}
|