@appium/images-plugin 1.2.3 → 1.3.2
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 +2 -2
- package/README.md +1 -1
- package/build/lib/compare.d.ts +28 -0
- package/build/lib/compare.d.ts.map +1 -0
- package/build/lib/compare.js +60 -76
- package/build/lib/finder.d.ts +163 -0
- package/build/lib/finder.d.ts.map +1 -0
- package/build/lib/finder.js +326 -376
- package/build/lib/image-element.d.ts +108 -0
- package/build/lib/image-element.d.ts.map +1 -0
- package/build/lib/image-element.js +194 -238
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +15 -5
- package/build/lib/plugin.d.ts +25 -0
- package/build/lib/plugin.d.ts.map +1 -0
- package/build/lib/plugin.js +88 -86
- package/build/tsconfig.tsbuildinfo +1 -0
- package/index.js +1 -3
- package/lib/compare.js +34 -14
- package/lib/finder.js +141 -83
- package/lib/image-element.js +69 -65
- package/lib/logger.js +3 -1
- package/lib/plugin.js +14 -15
- package/package.json +36 -23
- package/build/index.js +0 -27
- package/build/test/e2e/plugin-e2e-specs.js +0 -77
- package/build/test/fixtures/appstore.png +0 -0
- package/build/test/fixtures/img1.png +0 -0
- package/build/test/fixtures/img2.png +0 -0
- package/build/test/fixtures/img2_part.png +0 -0
- package/build/test/fixtures/index.js +0 -24
- package/build/test/unit/basic-specs.js +0 -16
- package/build/test/unit/finder-specs.js +0 -409
- package/build/test/unit/image-element-specs.js +0 -320
- package/build/test/unit/plugin-specs.js +0 -199
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef Dimension
|
|
3
|
+
* @property {number} width - width of rect
|
|
4
|
+
* @property {number} height - height of rect
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @typedef Position
|
|
8
|
+
* @property {number} x - x coordinate
|
|
9
|
+
* @property {number} y - y coordinate
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Representation of an "image element", which is simply a set of coordinates
|
|
13
|
+
* and methods that can be used on that set of coordinates via the driver
|
|
14
|
+
*/
|
|
15
|
+
export default class ImageElement {
|
|
16
|
+
/**
|
|
17
|
+
* Handle various Appium commands that involve an image element
|
|
18
|
+
*
|
|
19
|
+
* @param {import('appium/driver').BaseDriver} driver - the driver to use for commands
|
|
20
|
+
* @param {string} cmd - the name of the driver command
|
|
21
|
+
* @param {string} imgElId - the id of the ImageElement to work with
|
|
22
|
+
* @param {string[]} args - Rest of arguments for executeScripts
|
|
23
|
+
*
|
|
24
|
+
* @returns {object} - the result of running a command
|
|
25
|
+
*/
|
|
26
|
+
static execute(driver: import("@appium/types").DriverClass<import("@appium/types").Driver, import("@appium/types").DriverStatic>, imgEl: any, cmd: string, ...args: string[]): object;
|
|
27
|
+
/**
|
|
28
|
+
* @param {string} b64Template - the base64-encoded image which was used to
|
|
29
|
+
* find this ImageElement
|
|
30
|
+
* @param {Rect} rect - bounds of matched image element
|
|
31
|
+
* @param {number} score The similarity score as a float number in range [0.0, 1.0].
|
|
32
|
+
* 1.0 is the highest score (means both images are totally equal).
|
|
33
|
+
* @param {string?} b64Result - the base64-encoded image which has matched marks.
|
|
34
|
+
* Defaults to null.
|
|
35
|
+
* @param {import('./finder').default?} finder - the finder we can use to re-check stale elements
|
|
36
|
+
*/
|
|
37
|
+
constructor(b64Template: string, rect: Rect, score: number, b64Result?: string | null, finder?: import('./finder').default | null);
|
|
38
|
+
template: string;
|
|
39
|
+
rect: import("@appium/types").Rect;
|
|
40
|
+
id: string;
|
|
41
|
+
b64MatchedImage: string | null;
|
|
42
|
+
score: number;
|
|
43
|
+
finder: import("./finder").default | null;
|
|
44
|
+
/**
|
|
45
|
+
* @returns {Dimension} - dimension of element
|
|
46
|
+
*/
|
|
47
|
+
get size(): Dimension;
|
|
48
|
+
/**
|
|
49
|
+
* @returns {Position} - coordinates of top-left corner of element
|
|
50
|
+
*/
|
|
51
|
+
get location(): Position;
|
|
52
|
+
/**
|
|
53
|
+
* @returns {Position} - coordinates of center of element
|
|
54
|
+
*/
|
|
55
|
+
get center(): Position;
|
|
56
|
+
/**
|
|
57
|
+
* @returns {?string} - the base64-encoded image which has matched marks
|
|
58
|
+
*/
|
|
59
|
+
get matchedImage(): string | null;
|
|
60
|
+
/**
|
|
61
|
+
* @param {string} protocolKey - the protocol-specific JSON key for
|
|
62
|
+
* a WebElement
|
|
63
|
+
*
|
|
64
|
+
* @returns {Element} - this image element as a WebElement
|
|
65
|
+
*/
|
|
66
|
+
asElement(protocolKey: string): Element;
|
|
67
|
+
/**
|
|
68
|
+
* @param {ImageElement} other - an ImageElement to compare with this one
|
|
69
|
+
*
|
|
70
|
+
* @returns {boolean} - whether the other element and this one have the same
|
|
71
|
+
* properties
|
|
72
|
+
*/
|
|
73
|
+
equals(other: ImageElement): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Use a driver to tap the screen at the center of this ImageElement's
|
|
76
|
+
* position
|
|
77
|
+
*
|
|
78
|
+
* @param {BaseDriver} driver - driver for calling actions with
|
|
79
|
+
*/
|
|
80
|
+
click(driver: BaseDriver): Promise<any>;
|
|
81
|
+
}
|
|
82
|
+
export type Dimension = {
|
|
83
|
+
/**
|
|
84
|
+
* - width of rect
|
|
85
|
+
*/
|
|
86
|
+
width: number;
|
|
87
|
+
/**
|
|
88
|
+
* - height of rect
|
|
89
|
+
*/
|
|
90
|
+
height: number;
|
|
91
|
+
};
|
|
92
|
+
export type Position = {
|
|
93
|
+
/**
|
|
94
|
+
* - x coordinate
|
|
95
|
+
*/
|
|
96
|
+
x: number;
|
|
97
|
+
/**
|
|
98
|
+
* - y coordinate
|
|
99
|
+
*/
|
|
100
|
+
y: number;
|
|
101
|
+
};
|
|
102
|
+
export type Rect = import('@appium/types').Rect;
|
|
103
|
+
export type Element = import('@appium/types').Element;
|
|
104
|
+
export const IMAGE_EL_TAP_STRATEGY_MJSONWP: "touchActions";
|
|
105
|
+
export const IMAGE_EL_TAP_STRATEGY_W3C: "w3cActions";
|
|
106
|
+
export const DEFAULT_TEMPLATE_IMAGE_SCALE: 1;
|
|
107
|
+
export const IMAGE_ELEMENT_PREFIX: "appium-image-element-";
|
|
108
|
+
//# sourceMappingURL=image-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-element.d.ts","sourceRoot":"","sources":["../../lib/image-element.js"],"names":[],"mappings":"AAaA;;;;GAIG;AAEH;;;;GAIG;AAEH;;;GAGG;AACH;IAsLE;;;;;;;;;OASG;IACH,mJANW,MAAM,WAEN,MAAM,EAAE,GAEN,MAAM,CA8BlB;IA3ND;;;;;;;;;OASG;IACH,yBATW,MAAM,QAEN,IAAI,SACJ,MAAM,cAEN,MAAM,kBAEN,OAAO,UAAU,EAAE,OAAO,SASpC;IANC,iBAA2B;IAC3B,mCAAgB;IAChB,WAAmD;IACnD,+BAAgC;IAChC,cAAkB;IAClB,0CAAoB;IAGtB;;OAEG;IACH,sBAEC;IAED;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,uBAKC;IAED;;OAEG;IACH,kCAEC;IAED;;;;;OAKG;IACH,uBALW,MAAM,GAGJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,cALW,YAAY,GAEV,OAAO,CAUnB;IAED;;;;;OAKG;IACH,wCAkGC;CAyCF;;;;;WA3Oa,MAAM;;;;YACN,MAAM;;;;;;OAKN,MAAM;;;;OACN,MAAM;;mBA+OP,OAAO,eAAe,EAAE,IAAI;sBAC5B,OAAO,eAAe,EAAE,OAAO;AA7P5C,2DAAqD;AADrD,qDAA+C;AAG/C,6CAAyC;AALzC,2DAAqD"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.ImageElement = exports.IMAGE_EL_TAP_STRATEGY_W3C = exports.IMAGE_EL_TAP_STRATEGY_MJSONWP = exports.IMAGE_ELEMENT_PREFIX = exports.DEFAULT_TEMPLATE_IMAGE_SCALE = void 0;
|
|
9
|
+
|
|
10
|
+
require("source-map-support/register");
|
|
11
|
+
|
|
12
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
+
|
|
14
|
+
var _driver = require("appium/driver");
|
|
15
|
+
|
|
16
|
+
var _support = require("appium/support");
|
|
17
|
+
|
|
18
|
+
var _logger = _interopRequireDefault(require("./logger"));
|
|
19
|
+
|
|
20
|
+
var _finder = require("./finder");
|
|
21
|
+
|
|
21
22
|
const IMAGE_ELEMENT_PREFIX = 'appium-image-element-';
|
|
22
23
|
exports.IMAGE_ELEMENT_PREFIX = IMAGE_ELEMENT_PREFIX;
|
|
23
24
|
const TAP_DURATION_MS = 125;
|
|
@@ -25,231 +26,186 @@ const IMAGE_EL_TAP_STRATEGY_W3C = 'w3cActions';
|
|
|
25
26
|
exports.IMAGE_EL_TAP_STRATEGY_W3C = IMAGE_EL_TAP_STRATEGY_W3C;
|
|
26
27
|
const IMAGE_EL_TAP_STRATEGY_MJSONWP = 'touchActions';
|
|
27
28
|
exports.IMAGE_EL_TAP_STRATEGY_MJSONWP = IMAGE_EL_TAP_STRATEGY_MJSONWP;
|
|
28
|
-
const IMAGE_TAP_STRATEGIES = [
|
|
29
|
-
IMAGE_EL_TAP_STRATEGY_MJSONWP,
|
|
30
|
-
IMAGE_EL_TAP_STRATEGY_W3C
|
|
31
|
-
];
|
|
29
|
+
const IMAGE_TAP_STRATEGIES = [IMAGE_EL_TAP_STRATEGY_MJSONWP, IMAGE_EL_TAP_STRATEGY_W3C];
|
|
32
30
|
const DEFAULT_TEMPLATE_IMAGE_SCALE = 1.0;
|
|
33
31
|
exports.DEFAULT_TEMPLATE_IMAGE_SCALE = DEFAULT_TEMPLATE_IMAGE_SCALE;
|
|
34
|
-
|
|
35
|
-
* @typedef {Object} Rect
|
|
36
|
-
* @property {int} x - x-coordinate of top-left corner
|
|
37
|
-
* @property {int} y - y-coordinate of top-left corner
|
|
38
|
-
* @property {int} width - width of rect
|
|
39
|
-
* @property {int} height - height of rect
|
|
40
|
-
*/
|
|
41
|
-
/**
|
|
42
|
-
* @typedef {Object} Dimension
|
|
43
|
-
* @property {int} width - width of rect
|
|
44
|
-
* @property {int} height - height of rect
|
|
45
|
-
*/
|
|
46
|
-
/**
|
|
47
|
-
* @typedef {Object} Position
|
|
48
|
-
* @property {int} x - x coordinate
|
|
49
|
-
* @property {int} y - y coordinate
|
|
50
|
-
*/
|
|
51
|
-
/**
|
|
52
|
-
* Representation of an "image element", which is simply a set of coordinates
|
|
53
|
-
* and methods that can be used on that set of coordinates via the driver
|
|
54
|
-
*/
|
|
32
|
+
|
|
55
33
|
class ImageElement {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
34
|
+
constructor(b64Template, rect, score, b64Result = null, finder = null) {
|
|
35
|
+
this.template = b64Template;
|
|
36
|
+
this.rect = rect;
|
|
37
|
+
this.id = `${IMAGE_ELEMENT_PREFIX}${_support.util.uuidV4()}`;
|
|
38
|
+
this.b64MatchedImage = b64Result;
|
|
39
|
+
this.score = score;
|
|
40
|
+
this.finder = finder;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
get size() {
|
|
44
|
+
return {
|
|
45
|
+
width: this.rect.width,
|
|
46
|
+
height: this.rect.height
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
get location() {
|
|
51
|
+
return {
|
|
52
|
+
x: this.rect.x,
|
|
53
|
+
y: this.rect.y
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
get center() {
|
|
58
|
+
return {
|
|
59
|
+
x: this.rect.x + this.rect.width / 2,
|
|
60
|
+
y: this.rect.y + this.rect.height / 2
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
get matchedImage() {
|
|
65
|
+
return this.b64MatchedImage;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
asElement(protocolKey) {
|
|
69
|
+
return {
|
|
70
|
+
[protocolKey]: this.id
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
equals(other) {
|
|
75
|
+
return this.rect.x === other.rect.x && this.rect.y === other.rect.y && this.rect.width === other.rect.width && this.rect.height === other.rect.height;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async click(driver) {
|
|
79
|
+
let newImgEl;
|
|
80
|
+
const settings = Object.assign({}, _finder.DEFAULT_SETTINGS, driver.settings.getSettings());
|
|
81
|
+
const {
|
|
82
|
+
autoUpdateImageElementPosition: updatePos,
|
|
83
|
+
checkForImageElementStaleness,
|
|
84
|
+
imageElementTapStrategy
|
|
85
|
+
} = settings;
|
|
86
|
+
|
|
87
|
+
if (!IMAGE_TAP_STRATEGIES.includes(imageElementTapStrategy)) {
|
|
88
|
+
throw new Error(`Incorrect imageElementTapStrategy setting ` + `'${imageElementTapStrategy}'. Must be one of ` + JSON.stringify(IMAGE_TAP_STRATEGIES));
|
|
75
89
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
get matchedImage() {
|
|
101
|
-
return this.b64MatchedImage;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* @param {string} protocolKey - the protocol-specific JSON key for
|
|
105
|
-
* a WebElement
|
|
106
|
-
*
|
|
107
|
-
* @returns {WebElement} - this image element as a WebElement
|
|
108
|
-
*/
|
|
109
|
-
asElement(protocolKey) {
|
|
110
|
-
return { [protocolKey]: this.id };
|
|
90
|
+
|
|
91
|
+
if (checkForImageElementStaleness || updatePos) {
|
|
92
|
+
_logger.default.info('Checking image element for staleness before clicking');
|
|
93
|
+
|
|
94
|
+
try {
|
|
95
|
+
newImgEl = await this.finder.findByImage(this.template, {
|
|
96
|
+
shouldCheckStaleness: true,
|
|
97
|
+
ignoreDefaultImageTemplateScale: true
|
|
98
|
+
});
|
|
99
|
+
} catch (err) {
|
|
100
|
+
throw new _driver.errors.StaleElementReferenceError();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (!this.equals(newImgEl)) {
|
|
104
|
+
_logger.default.warn(`When trying to click on an image element, the image changed ` + `position from where it was originally found. It is now at ` + `${JSON.stringify(newImgEl.rect)} and was originally at ` + `${JSON.stringify(this.rect)}.`);
|
|
105
|
+
|
|
106
|
+
if (updatePos) {
|
|
107
|
+
_logger.default.warn('Click will proceed at new coordinates');
|
|
108
|
+
|
|
109
|
+
this.rect = _lodash.default.clone(newImgEl.rect);
|
|
110
|
+
} else {
|
|
111
|
+
_logger.default.warn('Click will take place at original coordinates. If you ' + 'would like Appium to automatically click the new ' + "coordinates, set the 'autoUpdateImageElementPosition' " + 'setting to true');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
111
114
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
|
|
116
|
+
const {
|
|
117
|
+
x,
|
|
118
|
+
y
|
|
119
|
+
} = this.center;
|
|
120
|
+
|
|
121
|
+
_logger.default.info(`Will tap on image element at coordinate [${x}, ${y}]`);
|
|
122
|
+
|
|
123
|
+
if (imageElementTapStrategy === IMAGE_EL_TAP_STRATEGY_W3C) {
|
|
124
|
+
_logger.default.info('Will tap using W3C actions');
|
|
125
|
+
|
|
126
|
+
const action = {
|
|
127
|
+
type: 'pointer',
|
|
128
|
+
id: 'mouse',
|
|
129
|
+
parameters: {
|
|
130
|
+
pointerType: 'touch'
|
|
131
|
+
},
|
|
132
|
+
actions: [{
|
|
133
|
+
type: 'pointerMove',
|
|
134
|
+
x,
|
|
135
|
+
y,
|
|
136
|
+
duration: 0
|
|
137
|
+
}, {
|
|
138
|
+
type: 'pointerDown',
|
|
139
|
+
button: 0
|
|
140
|
+
}, {
|
|
141
|
+
type: 'pause',
|
|
142
|
+
duration: TAP_DURATION_MS
|
|
143
|
+
}, {
|
|
144
|
+
type: 'pointerUp',
|
|
145
|
+
button: 0
|
|
146
|
+
}]
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
if (driver.performActions) {
|
|
150
|
+
return await driver.performActions([action]);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
_logger.default.warn('Driver does not seem to implement W3C actions, falling back ' + 'to TouchActions');
|
|
123
154
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
// validate tap strategy
|
|
138
|
-
if (!IMAGE_TAP_STRATEGIES.includes(imageElementTapStrategy)) {
|
|
139
|
-
throw new Error(`Incorrect imageElementTapStrategy setting ` +
|
|
140
|
-
`'${imageElementTapStrategy}'. Must be one of ` +
|
|
141
|
-
JSON.stringify(IMAGE_TAP_STRATEGIES));
|
|
142
|
-
}
|
|
143
|
-
if (checkForImageElementStaleness || updatePos) {
|
|
144
|
-
logger_1.default.info('Checking image element for staleness before clicking');
|
|
145
|
-
try {
|
|
146
|
-
newImgEl = yield this.finder.findByImage(this.template, {
|
|
147
|
-
shouldCheckStaleness: true,
|
|
148
|
-
// Set ignoreDefaultImageTemplateScale because this.template is device screenshot based image
|
|
149
|
-
// managed inside Appium after finidng image by template which managed by a user
|
|
150
|
-
ignoreDefaultImageTemplateScale: true
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
154
|
-
throw new base_driver_1.errors.StaleElementReferenceError();
|
|
155
|
-
}
|
|
156
|
-
if (!this.equals(newImgEl)) {
|
|
157
|
-
logger_1.default.warn(`When trying to click on an image element, the image changed ` +
|
|
158
|
-
`position from where it was originally found. It is now at ` +
|
|
159
|
-
`${JSON.stringify(newImgEl.rect)} and was originally at ` +
|
|
160
|
-
`${JSON.stringify(this.rect)}.`);
|
|
161
|
-
if (updatePos) {
|
|
162
|
-
logger_1.default.warn('Click will proceed at new coordinates');
|
|
163
|
-
this.rect = lodash_1.default.clone(newImgEl.rect);
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
logger_1.default.warn('Click will take place at original coordinates. If you ' +
|
|
167
|
-
'would like Appium to automatically click the new ' +
|
|
168
|
-
"coordinates, set the 'autoUpdateImageElementPosition' " +
|
|
169
|
-
'setting to true');
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
const { x, y } = this.center;
|
|
174
|
-
logger_1.default.info(`Will tap on image element at coordinate [${x}, ${y}]`);
|
|
175
|
-
if (imageElementTapStrategy === IMAGE_EL_TAP_STRATEGY_W3C) {
|
|
176
|
-
// set up a W3C action to click on the image by position
|
|
177
|
-
logger_1.default.info('Will tap using W3C actions');
|
|
178
|
-
const action = {
|
|
179
|
-
type: 'pointer',
|
|
180
|
-
id: 'mouse',
|
|
181
|
-
parameters: { pointerType: 'touch' },
|
|
182
|
-
actions: [
|
|
183
|
-
{ type: 'pointerMove', x, y, duration: 0 },
|
|
184
|
-
{ type: 'pointerDown', button: 0 },
|
|
185
|
-
{ type: 'pause', duration: TAP_DURATION_MS },
|
|
186
|
-
{ type: 'pointerUp', button: 0 },
|
|
187
|
-
]
|
|
188
|
-
};
|
|
189
|
-
// check if the driver has the appropriate performActions method
|
|
190
|
-
if (driver.performActions) {
|
|
191
|
-
return yield driver.performActions([action]);
|
|
192
|
-
}
|
|
193
|
-
// if not, warn and fall back to the other method
|
|
194
|
-
logger_1.default.warn('Driver does not seem to implement W3C actions, falling back ' +
|
|
195
|
-
'to TouchActions');
|
|
196
|
-
}
|
|
197
|
-
// if the w3c strategy was not requested, do the only other option (mjsonwp
|
|
198
|
-
// touch actions)
|
|
199
|
-
logger_1.default.info('Will tap using MJSONWP TouchActions');
|
|
200
|
-
const action = {
|
|
201
|
-
action: 'tap',
|
|
202
|
-
options: { x, y }
|
|
203
|
-
};
|
|
204
|
-
if (driver.performTouch) {
|
|
205
|
-
return yield driver.performTouch([action]);
|
|
206
|
-
}
|
|
207
|
-
throw new Error("Driver did not implement the 'performTouch' command. " +
|
|
208
|
-
'For drivers to support finding image elements, they ' +
|
|
209
|
-
"should support 'performTouch' and 'performActions'");
|
|
210
|
-
});
|
|
155
|
+
|
|
156
|
+
_logger.default.info('Will tap using MJSONWP TouchActions');
|
|
157
|
+
|
|
158
|
+
const action = {
|
|
159
|
+
action: 'tap',
|
|
160
|
+
options: {
|
|
161
|
+
x,
|
|
162
|
+
y
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
if (driver.performTouch) {
|
|
167
|
+
return await driver.performTouch([action]);
|
|
211
168
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
default: throw new base_driver_1.errors.NotYetImplementedError();
|
|
249
|
-
}
|
|
250
|
-
});
|
|
169
|
+
|
|
170
|
+
throw new Error("Driver did not implement the 'performTouch' command. " + 'For drivers to support finding image elements, they ' + "should support 'performTouch' and 'performActions'");
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
static async execute(driver, imgEl, cmd, ...args) {
|
|
174
|
+
switch (cmd) {
|
|
175
|
+
case 'click':
|
|
176
|
+
return await imgEl.click(driver);
|
|
177
|
+
|
|
178
|
+
case 'elementDisplayed':
|
|
179
|
+
return true;
|
|
180
|
+
|
|
181
|
+
case 'getSize':
|
|
182
|
+
return imgEl.size;
|
|
183
|
+
|
|
184
|
+
case 'getLocation':
|
|
185
|
+
case 'getLocationInView':
|
|
186
|
+
return imgEl.location;
|
|
187
|
+
|
|
188
|
+
case 'getElementRect':
|
|
189
|
+
return imgEl.rect;
|
|
190
|
+
|
|
191
|
+
case 'getAttribute':
|
|
192
|
+
switch (args[0]) {
|
|
193
|
+
case 'visual':
|
|
194
|
+
return imgEl.matchedImage;
|
|
195
|
+
|
|
196
|
+
case 'score':
|
|
197
|
+
return imgEl.score;
|
|
198
|
+
|
|
199
|
+
default:
|
|
200
|
+
throw new _driver.errors.NotYetImplementedError();
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
default:
|
|
204
|
+
throw new _driver.errors.NotYetImplementedError();
|
|
251
205
|
}
|
|
206
|
+
}
|
|
207
|
+
|
|
252
208
|
}
|
|
253
|
-
|
|
254
|
-
exports.ImageElement = ImageElement;
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbWFnZS1lbGVtZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUF1QjtBQUN2QixxREFBNkM7QUFDN0Msc0RBQTJCO0FBQzNCLDZDQUF1QztBQUN2QyxxQ0FBNEM7QUFFNUMsTUFBTSxvQkFBb0IsR0FBRyx1QkFBdUIsQ0FBQztBQTRQckIsb0RBQW9CO0FBM1BwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFDNUIsTUFBTSx5QkFBeUIsR0FBRyxZQUFZLENBQUM7QUF5UEEsOERBQXlCO0FBeFB4RSxNQUFNLDZCQUE2QixHQUFHLGNBQWMsQ0FBQztBQXdQckMsc0VBQTZCO0FBdlA3QyxNQUFNLG9CQUFvQixHQUFHO0lBQzNCLDZCQUE2QjtJQUM3Qix5QkFBeUI7Q0FDMUIsQ0FBQztBQUNGLE1BQU0sNEJBQTRCLEdBQUcsR0FBRyxDQUFDO0FBb1B2QyxvRUFBNEI7QUFsUDlCOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFFSDs7OztHQUlHO0FBRUg7OztHQUdHO0FBQ0gsTUFBcUIsWUFBWTtJQUUvQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQWEsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsSUFBSTtRQUNwRSxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsb0JBQW9CLEdBQUcsY0FBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7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
|
|
209
|
+
|
|
210
|
+
exports.ImageElement = exports.default = ImageElement;
|
|
211
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTUFHRV9FTEVNRU5UX1BSRUZJWCIsIlRBUF9EVVJBVElPTl9NUyIsIklNQUdFX0VMX1RBUF9TVFJBVEVHWV9XM0MiLCJJTUFHRV9FTF9UQVBfU1RSQVRFR1lfTUpTT05XUCIsIklNQUdFX1RBUF9TVFJBVEVHSUVTIiwiREVGQVVMVF9URU1QTEFURV9JTUFHRV9TQ0FMRSIsIkltYWdlRWxlbWVudCIsImNvbnN0cnVjdG9yIiwiYjY0VGVtcGxhdGUiLCJyZWN0Iiwic2NvcmUiLCJiNjRSZXN1bHQiLCJmaW5kZXIiLCJ0ZW1wbGF0ZSIsImlkIiwidXRpbCIsInV1aWRWNCIsImI2NE1hdGNoZWRJbWFnZSIsInNpemUiLCJ3aWR0aCIsImhlaWdodCIsImxvY2F0aW9uIiwieCIsInkiLCJjZW50ZXIiLCJtYXRjaGVkSW1hZ2UiLCJhc0VsZW1lbnQiLCJwcm90b2NvbEtleSIsImVxdWFscyIsIm90aGVyIiwiY2xpY2siLCJkcml2ZXIiLCJuZXdJbWdFbCIsInNldHRpbmdzIiwiT2JqZWN0IiwiYXNzaWduIiwiREVGQVVMVF9TRVRUSU5HUyIsImdldFNldHRpbmdzIiwiYXV0b1VwZGF0ZUltYWdlRWxlbWVudFBvc2l0aW9uIiwidXBkYXRlUG9zIiwiY2hlY2tGb3JJbWFnZUVsZW1lbnRTdGFsZW5lc3MiLCJpbWFnZUVsZW1lbnRUYXBTdHJhdGVneSIsImluY2x1ZGVzIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwibG9nIiwiaW5mbyIsImZpbmRCeUltYWdlIiwic2hvdWxkQ2hlY2tTdGFsZW5lc3MiLCJpZ25vcmVEZWZhdWx0SW1hZ2VUZW1wbGF0ZVNjYWxlIiwiZXJyIiwiZXJyb3JzIiwiU3RhbGVFbGVtZW50UmVmZXJlbmNlRXJyb3IiLCJ3YXJuIiwiXyIsImNsb25lIiwiYWN0aW9uIiwidHlwZSIsInBhcmFtZXRlcnMiLCJwb2ludGVyVHlwZSIsImFjdGlvbnMiLCJkdXJhdGlvbiIsImJ1dHRvbiIsInBlcmZvcm1BY3Rpb25zIiwib3B0aW9ucyIsInBlcmZvcm1Ub3VjaCIsImV4ZWN1dGUiLCJpbWdFbCIsImNtZCIsImFyZ3MiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2ltYWdlLWVsZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7ZXJyb3JzfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7dXRpbH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge0RFRkFVTFRfU0VUVElOR1N9IGZyb20gJy4vZmluZGVyJztcblxuY29uc3QgSU1BR0VfRUxFTUVOVF9QUkVGSVggPSAnYXBwaXVtLWltYWdlLWVsZW1lbnQtJztcbmNvbnN0IFRBUF9EVVJBVElPTl9NUyA9IDEyNTtcbmNvbnN0IElNQUdFX0VMX1RBUF9TVFJBVEVHWV9XM0MgPSAndzNjQWN0aW9ucyc7XG5jb25zdCBJTUFHRV9FTF9UQVBfU1RSQVRFR1lfTUpTT05XUCA9ICd0b3VjaEFjdGlvbnMnO1xuY29uc3QgSU1BR0VfVEFQX1NUUkFURUdJRVMgPSBbSU1BR0VfRUxfVEFQX1NUUkFURUdZX01KU09OV1AsIElNQUdFX0VMX1RBUF9TVFJBVEVHWV9XM0NdO1xuY29uc3QgREVGQVVMVF9URU1QTEFURV9JTUFHRV9TQ0FMRSA9IDEuMDtcblxuLyoqXG4gKiBAdHlwZWRlZiBEaW1lbnNpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3aWR0aCAtIHdpZHRoIG9mIHJlY3RcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgLSBoZWlnaHQgb2YgcmVjdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB4IC0geCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkge251bWJlcn0geSAtIHkgY29vcmRpbmF0ZVxuICovXG5cbi8qKlxuICogUmVwcmVzZW50YXRpb24gb2YgYW4gXCJpbWFnZSBlbGVtZW50XCIsIHdoaWNoIGlzIHNpbXBseSBhIHNldCBvZiBjb29yZGluYXRlc1xuICogYW5kIG1ldGhvZHMgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGF0IHNldCBvZiBjb29yZGluYXRlcyB2aWEgdGhlIGRyaXZlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbWFnZUVsZW1lbnQge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGI2NFRlbXBsYXRlIC0gdGhlIGJhc2U2NC1lbmNvZGVkIGltYWdlIHdoaWNoIHdhcyB1c2VkIHRvXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmQgdGhpcyBJbWFnZUVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWN0fSByZWN0IC0gYm91bmRzIG9mIG1hdGNoZWQgaW1hZ2UgZWxlbWVudFxuICAgKiBAcGFyYW0ge251bWJlcn0gc2NvcmUgVGhlIHNpbWlsYXJpdHkgc2NvcmUgYXMgYSBmbG9hdCBudW1iZXIgaW4gcmFuZ2UgWzAuMCwgMS4wXS5cbiAgICogMS4wIGlzIHRoZSBoaWdoZXN0IHNjb3JlIChtZWFucyBib3RoIGltYWdlcyBhcmUgdG90YWxseSBlcXVhbCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nP30gYjY0UmVzdWx0IC0gdGhlIGJhc2U2NC1lbmNvZGVkIGltYWdlIHdoaWNoIGhhcyBtYXRjaGVkIG1hcmtzLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIG51bGwuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL2ZpbmRlcicpLmRlZmF1bHQ/fSBmaW5kZXIgLSB0aGUgZmluZGVyIHdlIGNhbiB1c2UgdG8gcmUtY2hlY2sgc3RhbGUgZWxlbWVudHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGI2NFRlbXBsYXRlLCByZWN0LCBzY29yZSwgYjY0UmVzdWx0ID0gbnVsbCwgZmluZGVyID0gbnVsbCkge1xuICAgIHRoaXMudGVtcGxhdGUgPSBiNjRUZW1wbGF0ZTtcbiAgICB0aGlzLnJlY3QgPSByZWN0O1xuICAgIHRoaXMuaWQgPSBgJHtJTUFHRV9FTEVNRU5UX1BSRUZJWH0ke3V0aWwudXVpZFY0KCl9YDtcbiAgICB0aGlzLmI2NE1hdGNoZWRJbWFnZSA9IGI2NFJlc3VsdDtcbiAgICB0aGlzLnNjb3JlID0gc2NvcmU7XG4gICAgdGhpcy5maW5kZXIgPSBmaW5kZXI7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge0RpbWVuc2lvbn0gLSBkaW1lbnNpb24gb2YgZWxlbWVudFxuICAgKi9cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHt3aWR0aDogdGhpcy5yZWN0LndpZHRoLCBoZWlnaHQ6IHRoaXMucmVjdC5oZWlnaHR9O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQb3NpdGlvbn0gLSBjb29yZGluYXRlcyBvZiB0b3AtbGVmdCBjb3JuZXIgb2YgZWxlbWVudFxuICAgKi9cbiAgZ2V0IGxvY2F0aW9uKCkge1xuICAgIHJldHVybiB7eDogdGhpcy5yZWN0LngsIHk6IHRoaXMucmVjdC55fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UG9zaXRpb259IC0gY29vcmRpbmF0ZXMgb2YgY2VudGVyIG9mIGVsZW1lbnRcbiAgICovXG4gIGdldCBjZW50ZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHRoaXMucmVjdC54ICsgdGhpcy5yZWN0LndpZHRoIC8gMixcbiAgICAgIHk6IHRoaXMucmVjdC55ICsgdGhpcy5yZWN0LmhlaWdodCAvIDIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7P3N0cmluZ30gLSB0aGUgYmFzZTY0LWVuY29kZWQgaW1hZ2Ugd2hpY2ggaGFzIG1hdGNoZWQgbWFya3NcbiAgICovXG4gIGdldCBtYXRjaGVkSW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuYjY0TWF0Y2hlZEltYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm90b2NvbEtleSAtIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBKU09OIGtleSBmb3JcbiAgICogYSBXZWJFbGVtZW50XG4gICAqXG4gICAqIEByZXR1cm5zIHtFbGVtZW50fSAtIHRoaXMgaW1hZ2UgZWxlbWVudCBhcyBhIFdlYkVsZW1lbnRcbiAgICovXG4gIGFzRWxlbWVudChwcm90b2NvbEtleSkge1xuICAgIHJldHVybiB7W3Byb3RvY29sS2V5XTogdGhpcy5pZH07XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtJbWFnZUVsZW1lbnR9IG90aGVyIC0gYW4gSW1hZ2VFbGVtZW50IHRvIGNvbXBhcmUgd2l0aCB0aGlzIG9uZVxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB3aGV0aGVyIHRoZSBvdGhlciBlbGVtZW50IGFuZCB0aGlzIG9uZSBoYXZlIHRoZSBzYW1lXG4gICAqIHByb3BlcnRpZXNcbiAgICovXG4gIGVxdWFscyhvdGhlcikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnJlY3QueCA9PT0gb3RoZXIucmVjdC54ICYmXG4gICAgICB0aGlzLnJlY3QueSA9PT0gb3RoZXIucmVjdC55ICYmXG4gICAgICB0aGlzLnJlY3Qud2lkdGggPT09IG90aGVyLnJlY3Qud2lkdGggJiZcbiAgICAgIHRoaXMucmVjdC5oZWlnaHQgPT09IG90aGVyLnJlY3QuaGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgYSBkcml2ZXIgdG8gdGFwIHRoZSBzY3JlZW4gYXQgdGhlIGNlbnRlciBvZiB0aGlzIEltYWdlRWxlbWVudCdzXG4gICAqIHBvc2l0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZURyaXZlcn0gZHJpdmVyIC0gZHJpdmVyIGZvciBjYWxsaW5nIGFjdGlvbnMgd2l0aFxuICAgKi9cbiAgYXN5bmMgY2xpY2soZHJpdmVyKSB7XG4gICAgLy8gYmVmb3JlIHdlIGNsaWNrIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIGFjdHVhbGx5IHN0aWxsIHRoZXJlXG4gICAgLy8gd2hlcmUgd2UgZXhwZWN0IGl0IHRvIGJlXG4gICAgbGV0IG5ld0ltZ0VsO1xuICAgIGNvbnN0IHNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgZHJpdmVyLnNldHRpbmdzLmdldFNldHRpbmdzKCkpO1xuICAgIGNvbnN0IHtcbiAgICAgIGF1dG9VcGRhdGVJbWFnZUVsZW1lbnRQb3NpdGlvbjogdXBkYXRlUG9zLFxuICAgICAgY2hlY2tGb3JJbWFnZUVsZW1lbnRTdGFsZW5lc3MsXG4gICAgICBpbWFnZUVsZW1lbnRUYXBTdHJhdGVneSxcbiAgICB9ID0gc2V0dGluZ3M7XG5cbiAgICAvLyB2YWxpZGF0ZSB0YXAgc3RyYXRlZ3lcbiAgICBpZiAoIUlNQUdFX1RBUF9TVFJBVEVHSUVTLmluY2x1ZGVzKGltYWdlRWxlbWVudFRhcFN0cmF0ZWd5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW5jb3JyZWN0IGltYWdlRWxlbWVudFRhcFN0cmF0ZWd5IHNldHRpbmcgYCArXG4gICAgICAgICAgYCcke2ltYWdlRWxlbWVudFRhcFN0cmF0ZWd5fScuIE11c3QgYmUgb25lIG9mIGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KElNQUdFX1RBUF9TVFJBVEVHSUVTKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tGb3JJbWFnZUVsZW1lbnRTdGFsZW5lc3MgfHwgdXBkYXRlUG9zKSB7XG4gICAgICBsb2cuaW5mbygnQ2hlY2tpbmcgaW1hZ2UgZWxlbWVudCBmb3Igc3RhbGVuZXNzIGJlZm9yZSBjbGlja2luZycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3SW1nRWwgPSBhd2FpdCB0aGlzLmZpbmRlci5maW5kQnlJbWFnZSh0aGlzLnRlbXBsYXRlLCB7XG4gICAgICAgICAgc2hvdWxkQ2hlY2tTdGFsZW5lc3M6IHRydWUsXG4gICAgICAgICAgLy8gU2V0IGlnbm9yZURlZmF1bHRJbWFnZVRlbXBsYXRlU2NhbGUgYmVjYXVzZSB0aGlzLnRlbXBsYXRlIGlzIGRldmljZSBzY3JlZW5zaG90IGJhc2VkIGltYWdlXG4gICAgICAgICAgLy8gbWFuYWdlZCBpbnNpZGUgQXBwaXVtIGFmdGVyIGZpbmlkbmcgaW1hZ2UgYnkgdGVtcGxhdGUgd2hpY2ggbWFuYWdlZCBieSBhIHVzZXJcbiAgICAgICAgICBpZ25vcmVEZWZhdWx0SW1hZ2VUZW1wbGF0ZVNjYWxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLlN0YWxlRWxlbWVudFJlZmVyZW5jZUVycm9yKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5lcXVhbHMobmV3SW1nRWwpKSB7XG4gICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgIGBXaGVuIHRyeWluZyB0byBjbGljayBvbiBhbiBpbWFnZSBlbGVtZW50LCB0aGUgaW1hZ2UgY2hhbmdlZCBgICtcbiAgICAgICAgICAgIGBwb3NpdGlvbiBmcm9tIHdoZXJlIGl0IHdhcyBvcmlnaW5hbGx5IGZvdW5kLiBJdCBpcyBub3cgYXQgYCArXG4gICAgICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShuZXdJbWdFbC5yZWN0KX0gYW5kIHdhcyBvcmlnaW5hbGx5IGF0IGAgK1xuICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkodGhpcy5yZWN0KX0uYFxuICAgICAgICApO1xuICAgICAgICBpZiAodXBkYXRlUG9zKSB7XG4gICAgICAgICAgbG9nLndhcm4oJ0NsaWNrIHdpbGwgcHJvY2VlZCBhdCBuZXcgY29vcmRpbmF0ZXMnKTtcbiAgICAgICAgICB0aGlzLnJlY3QgPSBfLmNsb25lKG5ld0ltZ0VsLnJlY3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgJ0NsaWNrIHdpbGwgdGFrZSBwbGFjZSBhdCBvcmlnaW5hbCBjb29yZGluYXRlcy4gSWYgeW91ICcgK1xuICAgICAgICAgICAgICAnd291bGQgbGlrZSBBcHBpdW0gdG8gYXV0b21hdGljYWxseSBjbGljayB0aGUgbmV3ICcgK1xuICAgICAgICAgICAgICBcImNvb3JkaW5hdGVzLCBzZXQgdGhlICdhdXRvVXBkYXRlSW1hZ2VFbGVtZW50UG9zaXRpb24nIFwiICtcbiAgICAgICAgICAgICAgJ3NldHRpbmcgdG8gdHJ1ZSdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qge3gsIHl9ID0gdGhpcy5jZW50ZXI7XG4gICAgbG9nLmluZm8oYFdpbGwgdGFwIG9uIGltYWdlIGVsZW1lbnQgYXQgY29vcmRpbmF0ZSBbJHt4fSwgJHt5fV1gKTtcblxuICAgIGlmIChpbWFnZUVsZW1lbnRUYXBTdHJhdGVneSA9PT0gSU1BR0VfRUxfVEFQX1NUUkFURUdZX1czQykge1xuICAgICAgLy8gc2V0IHVwIGEgVzNDIGFjdGlvbiB0byBjbGljayBvbiB0aGUgaW1hZ2UgYnkgcG9zaXRpb25cbiAgICAgIGxvZy5pbmZvKCdXaWxsIHRhcCB1c2luZyBXM0MgYWN0aW9ucycpO1xuICAgICAgY29uc3QgYWN0aW9uID0ge1xuICAgICAgICB0eXBlOiAncG9pbnRlcicsXG4gICAgICAgIGlkOiAnbW91c2UnLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7cG9pbnRlclR5cGU6ICd0b3VjaCd9LFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge3R5cGU6ICdwb2ludGVyTW92ZScsIHgsIHksIGR1cmF0aW9uOiAwfSxcbiAgICAgICAgICB7dHlwZTogJ3BvaW50ZXJEb3duJywgYnV0dG9uOiAwfSxcbiAgICAgICAgICB7dHlwZTogJ3BhdXNlJywgZHVyYXRpb246IFRBUF9EVVJBVElPTl9NU30sXG4gICAgICAgICAge3R5cGU6ICdwb2ludGVyVXAnLCBidXR0b246IDB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGRyaXZlciBoYXMgdGhlIGFwcHJvcHJpYXRlIHBlcmZvcm1BY3Rpb25zIG1ldGhvZFxuICAgICAgaWYgKGRyaXZlci5wZXJmb3JtQWN0aW9ucykge1xuICAgICAgICByZXR1cm4gYXdhaXQgZHJpdmVyLnBlcmZvcm1BY3Rpb25zKFthY3Rpb25dKTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbm90LCB3YXJuIGFuZCBmYWxsIGJhY2sgdG8gdGhlIG90aGVyIG1ldGhvZFxuICAgICAgbG9nLndhcm4oJ0RyaXZlciBkb2VzIG5vdCBzZWVtIHRvIGltcGxlbWVudCBXM0MgYWN0aW9ucywgZmFsbGluZyBiYWNrICcgKyAndG8gVG91Y2hBY3Rpb25zJyk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHczYyBzdHJhdGVneSB3YXMgbm90IHJlcXVlc3RlZCwgZG8gdGhlIG9ubHkgb3RoZXIgb3B0aW9uIChtanNvbndwXG4gICAgLy8gdG91Y2ggYWN0aW9ucylcbiAgICBsb2cuaW5mbygnV2lsbCB0YXAgdXNpbmcgTUpTT05XUCBUb3VjaEFjdGlvbnMnKTtcbiAgICBjb25zdCBhY3Rpb24gPSB7XG4gICAgICBhY3Rpb246ICd0YXAnLFxuICAgICAgb3B0aW9uczoge3gsIHl9LFxuICAgIH07XG5cbiAgICBpZiAoZHJpdmVyLnBlcmZvcm1Ub3VjaCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGRyaXZlci5wZXJmb3JtVG91Y2goW2FjdGlvbl0pO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiRHJpdmVyIGRpZCBub3QgaW1wbGVtZW50IHRoZSAncGVyZm9ybVRvdWNoJyBjb21tYW5kLiBcIiArXG4gICAgICAgICdGb3IgZHJpdmVycyB0byBzdXBwb3J0IGZpbmRpbmcgaW1hZ2UgZWxlbWVudHMsIHRoZXkgJyArXG4gICAgICAgIFwic2hvdWxkIHN1cHBvcnQgJ3BlcmZvcm1Ub3VjaCcgYW5kICdwZXJmb3JtQWN0aW9ucydcIlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHZhcmlvdXMgQXBwaXVtIGNvbW1hbmRzIHRoYXQgaW52b2x2ZSBhbiBpbWFnZSBlbGVtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcHBpdW0vZHJpdmVyJykuQmFzZURyaXZlcn0gZHJpdmVyIC0gdGhlIGRyaXZlciB0byB1c2UgZm9yIGNvbW1hbmRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbWQgLSB0aGUgbmFtZSBvZiB0aGUgZHJpdmVyIGNvbW1hbmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGltZ0VsSWQgLSB0aGUgaWQgb2YgdGhlIEltYWdlRWxlbWVudCB0byB3b3JrIHdpdGhcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYXJncyAtIFJlc3Qgb2YgYXJndW1lbnRzIGZvciBleGVjdXRlU2NyaXB0c1xuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSAtIHRoZSByZXN1bHQgb2YgcnVubmluZyBhIGNvbW1hbmRcbiAgICovXG4gIHN0YXRpYyBhc3luYyBleGVjdXRlKGRyaXZlciwgaW1nRWwsIGNtZCwgLi4uYXJncykge1xuICAgIHN3aXRjaCAoY21kKSB7XG4gICAgICBjYXNlICdjbGljayc6XG4gICAgICAgIHJldHVybiBhd2FpdCBpbWdFbC5jbGljayhkcml2ZXIpO1xuICAgICAgY2FzZSAnZWxlbWVudERpc3BsYXllZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnZ2V0U2l6ZSc6XG4gICAgICAgIHJldHVybiBpbWdFbC5zaXplO1xuICAgICAgY2FzZSAnZ2V0TG9jYXRpb24nOlxuICAgICAgY2FzZSAnZ2V0TG9jYXRpb25JblZpZXcnOlxuICAgICAgICByZXR1cm4gaW1nRWwubG9jYXRpb247XG4gICAgICBjYXNlICdnZXRFbGVtZW50UmVjdCc6XG4gICAgICAgIHJldHVybiBpbWdFbC5yZWN0O1xuICAgICAgY2FzZSAnZ2V0QXR0cmlidXRlJzpcbiAgICAgICAgLy8gL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzplbGVtZW50SWQvYXR0cmlidXRlLzpuYW1lXG4gICAgICAgIC8vIC9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC86ZWxlbWVudElkL2F0dHJpYnV0ZS92aXN1YWwgc2hvdWxkIHJldHVuIHRoZSB2aXN1YWwgZGF0YVxuICAgICAgICAvLyBlLmcuIFtcImNvbnRlbnQtZGVzY1wiLFwiYXBwaXVtLWltYWdlLWVsZW1lbnQteHh4eHhcIixcInh4eHh4XCJdLCBbXCJ2aXN1YWxcIixcImFwcGl1bS1pbWFnZS1lbGVtZW50LXh4eHh4XCIsXCJ4eHh4eFwiXVxuICAgICAgICBzd2l0Y2ggKGFyZ3NbMF0pIHtcbiAgICAgICAgICBjYXNlICd2aXN1YWwnOlxuICAgICAgICAgICAgcmV0dXJuIGltZ0VsLm1hdGNoZWRJbWFnZTtcbiAgICAgICAgICBjYXNlICdzY29yZSc6XG4gICAgICAgICAgICByZXR1cm4gaW1nRWwuc2NvcmU7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgSW1hZ2VFbGVtZW50LFxuICBJTUFHRV9FTF9UQVBfU1RSQVRFR1lfTUpTT05XUCxcbiAgSU1BR0VfRUxfVEFQX1NUUkFURUdZX1czQyxcbiAgREVGQVVMVF9URU1QTEFURV9JTUFHRV9TQ0FMRSxcbiAgSU1BR0VfRUxFTUVOVF9QUkVGSVgsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5SZWN0fSBSZWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRWxlbWVudH0gRWxlbWVudFxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsb0JBQW9CLEdBQUcsdUJBQTdCOztBQUNBLE1BQU1DLGVBQWUsR0FBRyxHQUF4QjtBQUNB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.js"],"names":[],"mappings":";AAEA,wDAAmD"}
|
package/build/lib/logger.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
require("source-map-support/register");
|
|
9
|
+
|
|
10
|
+
var _support = require("appium/support");
|
|
11
|
+
|
|
12
|
+
const log = _support.logger.getLogger('ImageElementPlugin');
|
|
13
|
+
|
|
14
|
+
var _default = log;
|
|
15
|
+
exports.default = _default;
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bG9nZ2VyfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0ltYWdlRWxlbWVudFBsdWdpbicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLG9CQUFqQixDQUFaOztlQUVlRixHIn0=
|