@appium/images-plugin 4.2.0 → 4.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/build/lib/image-element.d.ts +11 -11
- package/build/lib/image-element.d.ts.map +1 -1
- package/build/lib/image-element.js +45 -45
- package/build/lib/image-element.js.map +1 -1
- package/build/lib/plugin.d.ts +7 -3
- package/build/lib/plugin.d.ts.map +1 -1
- package/build/lib/plugin.js +20 -16
- package/build/lib/plugin.js.map +1 -1
- package/lib/image-element.ts +46 -45
- package/lib/plugin.ts +30 -27
- package/package.json +5 -5
- package/tsconfig.json +1 -0
|
@@ -34,6 +34,17 @@ export declare class ImageElement {
|
|
|
34
34
|
* @returns the base64-encoded image which has matched marks
|
|
35
35
|
*/
|
|
36
36
|
get matchedImage(): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Handle various Appium commands that involve an image element
|
|
39
|
+
*
|
|
40
|
+
* @param driver - the driver to use for commands
|
|
41
|
+
* @param cmd - the name of the driver command
|
|
42
|
+
* @param imgEl - image element object
|
|
43
|
+
* @param args - Rest of arguments for executeScripts
|
|
44
|
+
*
|
|
45
|
+
* @returns the result of running a command
|
|
46
|
+
*/
|
|
47
|
+
static execute(driver: ExternalDriver, imgEl: ImageElement, cmd: string, ...args: any[]): Promise<any>;
|
|
37
48
|
/**
|
|
38
49
|
*
|
|
39
50
|
* @returns this image element as a WebElement
|
|
@@ -61,16 +72,5 @@ export declare class ImageElement {
|
|
|
61
72
|
* @returns WebDriver element with a special id prefix
|
|
62
73
|
*/
|
|
63
74
|
find(multiple: boolean, driver: ExternalDriver, ...args: any[]): Promise<Element | Element[] | ImageElement>;
|
|
64
|
-
/**
|
|
65
|
-
* Handle various Appium commands that involve an image element
|
|
66
|
-
*
|
|
67
|
-
* @param driver - the driver to use for commands
|
|
68
|
-
* @param cmd - the name of the driver command
|
|
69
|
-
* @param imgEl - image element object
|
|
70
|
-
* @param args - Rest of arguments for executeScripts
|
|
71
|
-
*
|
|
72
|
-
* @returns the result of running a command
|
|
73
|
-
*/
|
|
74
|
-
static execute(driver: ExternalDriver, imgEl: ImageElement, cmd: string, ...args: any[]): Promise<any>;
|
|
75
75
|
}
|
|
76
76
|
//# sourceMappingURL=image-element.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-element.d.ts","sourceRoot":"","sources":["../../lib/image-element.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AACjF,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAgB,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAIlF;;;GAGG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;gBAExB,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAY,EACZ,MAAa,EACb,aAAoB,GACrB,EAAE,gBAAgB;IAUnB;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,QAAQ,CAKrB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED;;;OAGG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IASpC;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwGlD;;;;;;;OAOG;IACG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"image-element.d.ts","sourceRoot":"","sources":["../../lib/image-element.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AACjF,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAgB,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAIlF;;;GAGG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;gBAExB,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAY,EACZ,MAAa,EACb,aAAoB,GACrB,EAAE,gBAAgB;IAUnB;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,QAAQ,CAKrB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED;;;;;;;;;OASG;WACU,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAoC5G;;;OAGG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IASpC;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwGlD;;;;;;;OAOG;IACG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,YAAY,CAAC;CAcnH"}
|
|
@@ -64,6 +64,51 @@ class ImageElement {
|
|
|
64
64
|
get matchedImage() {
|
|
65
65
|
return this.match?.toString('base64') ?? null;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Handle various Appium commands that involve an image element
|
|
69
|
+
*
|
|
70
|
+
* @param driver - the driver to use for commands
|
|
71
|
+
* @param cmd - the name of the driver command
|
|
72
|
+
* @param imgEl - image element object
|
|
73
|
+
* @param args - Rest of arguments for executeScripts
|
|
74
|
+
*
|
|
75
|
+
* @returns the result of running a command
|
|
76
|
+
*/
|
|
77
|
+
static async execute(driver, imgEl, cmd, ...args) {
|
|
78
|
+
switch (cmd) {
|
|
79
|
+
case 'click':
|
|
80
|
+
return await imgEl.click(driver);
|
|
81
|
+
case 'findElementFromElement':
|
|
82
|
+
return await imgEl.find(false, driver, ...args);
|
|
83
|
+
case 'findElementsFromElement':
|
|
84
|
+
return await imgEl.find(true, driver, ...args);
|
|
85
|
+
case 'elementDisplayed':
|
|
86
|
+
return true;
|
|
87
|
+
case 'getSize':
|
|
88
|
+
return imgEl.size;
|
|
89
|
+
case 'getLocation':
|
|
90
|
+
case 'getLocationInView':
|
|
91
|
+
return imgEl.location;
|
|
92
|
+
case 'getElementRect':
|
|
93
|
+
return imgEl.rect;
|
|
94
|
+
case 'getElementScreenshot':
|
|
95
|
+
return imgEl.originalImage;
|
|
96
|
+
case 'getAttribute':
|
|
97
|
+
// /session/:sessionId/element/:elementId/attribute/:name
|
|
98
|
+
// /session/:sessionId/element/:elementId/attribute/visual should return the visual data
|
|
99
|
+
// e.g. ["content-desc","appium-image-element-xxxxx","xxxxx"], ["visual","appium-image-element-xxxxx","xxxxx"]
|
|
100
|
+
switch (args[0]) {
|
|
101
|
+
case 'visual':
|
|
102
|
+
return imgEl.matchedImage;
|
|
103
|
+
case 'score':
|
|
104
|
+
return imgEl.score;
|
|
105
|
+
default:
|
|
106
|
+
throw new driver_1.errors.NotYetImplementedError();
|
|
107
|
+
}
|
|
108
|
+
default:
|
|
109
|
+
throw new driver_1.errors.NotYetImplementedError();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
67
112
|
/**
|
|
68
113
|
*
|
|
69
114
|
* @returns this image element as a WebElement
|
|
@@ -192,51 +237,6 @@ class ImageElement {
|
|
|
192
237
|
containerRect: this.rect,
|
|
193
238
|
});
|
|
194
239
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Handle various Appium commands that involve an image element
|
|
197
|
-
*
|
|
198
|
-
* @param driver - the driver to use for commands
|
|
199
|
-
* @param cmd - the name of the driver command
|
|
200
|
-
* @param imgEl - image element object
|
|
201
|
-
* @param args - Rest of arguments for executeScripts
|
|
202
|
-
*
|
|
203
|
-
* @returns the result of running a command
|
|
204
|
-
*/
|
|
205
|
-
static async execute(driver, imgEl, cmd, ...args) {
|
|
206
|
-
switch (cmd) {
|
|
207
|
-
case 'click':
|
|
208
|
-
return await imgEl.click(driver);
|
|
209
|
-
case 'findElementFromElement':
|
|
210
|
-
return await imgEl.find(false, driver, ...args);
|
|
211
|
-
case 'findElementsFromElement':
|
|
212
|
-
return await imgEl.find(true, driver, ...args);
|
|
213
|
-
case 'elementDisplayed':
|
|
214
|
-
return true;
|
|
215
|
-
case 'getSize':
|
|
216
|
-
return imgEl.size;
|
|
217
|
-
case 'getLocation':
|
|
218
|
-
case 'getLocationInView':
|
|
219
|
-
return imgEl.location;
|
|
220
|
-
case 'getElementRect':
|
|
221
|
-
return imgEl.rect;
|
|
222
|
-
case 'getElementScreenshot':
|
|
223
|
-
return imgEl.originalImage;
|
|
224
|
-
case 'getAttribute':
|
|
225
|
-
// /session/:sessionId/element/:elementId/attribute/:name
|
|
226
|
-
// /session/:sessionId/element/:elementId/attribute/visual should return the visual data
|
|
227
|
-
// e.g. ["content-desc","appium-image-element-xxxxx","xxxxx"], ["visual","appium-image-element-xxxxx","xxxxx"]
|
|
228
|
-
switch (args[0]) {
|
|
229
|
-
case 'visual':
|
|
230
|
-
return imgEl.matchedImage;
|
|
231
|
-
case 'score':
|
|
232
|
-
return imgEl.score;
|
|
233
|
-
default:
|
|
234
|
-
throw new driver_1.errors.NotYetImplementedError();
|
|
235
|
-
}
|
|
236
|
-
default:
|
|
237
|
-
throw new driver_1.errors.NotYetImplementedError();
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
240
|
}
|
|
241
241
|
exports.ImageElement = ImageElement;
|
|
242
242
|
//# sourceMappingURL=image-element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-element.js","sourceRoot":"","sources":["../../lib/image-element.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"image-element.js","sourceRoot":"","sources":["../../lib/image-element.ts"],"names":[],"mappings":"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"}
|
package/build/lib/plugin.d.ts
CHANGED
|
@@ -2,16 +2,20 @@ import { BasePlugin } from 'appium/plugin';
|
|
|
2
2
|
import { ImageElementFinder } from './finder';
|
|
3
3
|
import type { ExternalDriver, ActionSequence, MethodMap } from '@appium/types';
|
|
4
4
|
import type { MatchingOptions, SimilarityOptions, OccurrenceOptions } from '@appium/opencv';
|
|
5
|
-
export declare function getImgElFromArgs(args: any[]): string | undefined;
|
|
6
5
|
export declare class ImageElementPlugin extends BasePlugin {
|
|
6
|
+
static newMethodMap: MethodMap<ImageElementPlugin>;
|
|
7
7
|
readonly finder: ImageElementFinder;
|
|
8
8
|
constructor(pluginName: string);
|
|
9
|
-
static newMethodMap: MethodMap<ImageElementPlugin>;
|
|
10
9
|
compareImages(next: () => Promise<any>, driver: ExternalDriver, mode: string, firstImage: string | Buffer, secondImage: string | Buffer, options?: MatchingOptions | SimilarityOptions | OccurrenceOptions): Promise<any>;
|
|
11
10
|
findElement(next: () => Promise<any>, driver: ExternalDriver, ...args: any[]): Promise<any>;
|
|
12
11
|
findElements(next: () => Promise<any>, driver: ExternalDriver, ...args: any[]): Promise<any>;
|
|
13
|
-
private _find;
|
|
14
12
|
handle(next: () => Promise<any>, driver: ExternalDriver, cmdName: string, ...args: any[]): Promise<any>;
|
|
15
13
|
performActions(next: () => Promise<any>, driver: ExternalDriver, actionSequences: ActionSequence[]): Promise<any>;
|
|
14
|
+
private _find;
|
|
16
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns the first image-element id found in command args.
|
|
18
|
+
* @param args Command arguments.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getImgElFromArgs(args: any[]): string | undefined;
|
|
17
21
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../lib/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAG5C,OAAO,KAAK,EAAC,cAAc,EAAW,cAAc,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAE1F,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../lib/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,UAAU,CAAC;AAG5C,OAAO,KAAK,EAAC,cAAc,EAAW,cAAc,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAE1F,qBAAa,kBAAmB,SAAQ,UAAU;IAEhD,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAWvC;IACX,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAExB,UAAU,EAAE,MAAM;IAKxB,aAAa,CACjB,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EACxB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,OAAO,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,GAChE,OAAO,CAAC,GAAG,CAAC;IAIT,WAAW,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAI3F,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5F,MAAM,CACV,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,GAAG,CAAC;IAoBT,cAAc,CAClB,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EACxB,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,cAAc,EAAE,GAChC,OAAO,CAAC,GAAG,CAAC;YAgCD,KAAK;CAepB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,CAEhE"}
|
package/build/lib/plugin.js
CHANGED
|
@@ -13,15 +13,7 @@ const compare_1 = require("./compare");
|
|
|
13
13
|
const finder_1 = require("./finder");
|
|
14
14
|
const image_element_1 = require("./image-element");
|
|
15
15
|
const constants_1 = require("./constants");
|
|
16
|
-
function getImgElFromArgs(args) {
|
|
17
|
-
return args.find((arg) => lodash_1.default.isString(arg) && arg.startsWith(constants_1.IMAGE_ELEMENT_PREFIX));
|
|
18
|
-
}
|
|
19
16
|
class ImageElementPlugin extends plugin_1.BasePlugin {
|
|
20
|
-
finder;
|
|
21
|
-
constructor(pluginName) {
|
|
22
|
-
super(pluginName);
|
|
23
|
-
this.finder = new finder_1.ImageElementFinder();
|
|
24
|
-
}
|
|
25
17
|
// this plugin supports a non-standard 'compare images' command
|
|
26
18
|
static newMethodMap = {
|
|
27
19
|
'/session/:sessionId/appium/compare_images': {
|
|
@@ -35,6 +27,11 @@ class ImageElementPlugin extends plugin_1.BasePlugin {
|
|
|
35
27
|
},
|
|
36
28
|
},
|
|
37
29
|
};
|
|
30
|
+
finder;
|
|
31
|
+
constructor(pluginName) {
|
|
32
|
+
super(pluginName);
|
|
33
|
+
this.finder = new finder_1.ImageElementFinder();
|
|
34
|
+
}
|
|
38
35
|
async compareImages(next, driver, mode, firstImage, secondImage, options) {
|
|
39
36
|
return await (0, compare_1.compareImages)(mode, firstImage, secondImage, options);
|
|
40
37
|
}
|
|
@@ -44,14 +41,6 @@ class ImageElementPlugin extends plugin_1.BasePlugin {
|
|
|
44
41
|
async findElements(next, driver, ...args) {
|
|
45
42
|
return await this._find(true, next, driver, ...args);
|
|
46
43
|
}
|
|
47
|
-
async _find(multiple, next, driver, ...args) {
|
|
48
|
-
const [strategy, selector] = args;
|
|
49
|
-
// if we're not actually finding by image, just do the normal thing
|
|
50
|
-
if (strategy !== constants_1.IMAGE_STRATEGY) {
|
|
51
|
-
return await next();
|
|
52
|
-
}
|
|
53
|
-
return await this.finder.findByImage(Buffer.from(selector, 'base64'), driver, { multiple });
|
|
54
|
-
}
|
|
55
44
|
async handle(next, driver, cmdName, ...args) {
|
|
56
45
|
// if we have a command that involves an image element id, attempt to find the image element
|
|
57
46
|
// and execute the command on it
|
|
@@ -95,6 +84,21 @@ class ImageElementPlugin extends plugin_1.BasePlugin {
|
|
|
95
84
|
}
|
|
96
85
|
return await next();
|
|
97
86
|
}
|
|
87
|
+
async _find(multiple, next, driver, ...args) {
|
|
88
|
+
const [strategy, selector] = args;
|
|
89
|
+
// if we're not actually finding by image, just do the normal thing
|
|
90
|
+
if (strategy !== constants_1.IMAGE_STRATEGY) {
|
|
91
|
+
return await next();
|
|
92
|
+
}
|
|
93
|
+
return await this.finder.findByImage(Buffer.from(selector, 'base64'), driver, { multiple });
|
|
94
|
+
}
|
|
98
95
|
}
|
|
99
96
|
exports.ImageElementPlugin = ImageElementPlugin;
|
|
97
|
+
/**
|
|
98
|
+
* Returns the first image-element id found in command args.
|
|
99
|
+
* @param args Command arguments.
|
|
100
|
+
*/
|
|
101
|
+
function getImgElFromArgs(args) {
|
|
102
|
+
return args.find((arg) => lodash_1.default.isString(arg) && arg.startsWith(constants_1.IMAGE_ELEMENT_PREFIX));
|
|
103
|
+
}
|
|
100
104
|
//# sourceMappingURL=plugin.js.map
|
package/build/lib/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../lib/plugin.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../lib/plugin.ts"],"names":[],"mappings":"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"}
|
package/lib/image-element.ts
CHANGED
|
@@ -83,6 +83,52 @@ export class ImageElement {
|
|
|
83
83
|
return this.match?.toString('base64') ?? null;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Handle various Appium commands that involve an image element
|
|
88
|
+
*
|
|
89
|
+
* @param driver - the driver to use for commands
|
|
90
|
+
* @param cmd - the name of the driver command
|
|
91
|
+
* @param imgEl - image element object
|
|
92
|
+
* @param args - Rest of arguments for executeScripts
|
|
93
|
+
*
|
|
94
|
+
* @returns the result of running a command
|
|
95
|
+
*/
|
|
96
|
+
static async execute(driver: ExternalDriver, imgEl: ImageElement, cmd: string, ...args: any[]): Promise<any> {
|
|
97
|
+
switch (cmd) {
|
|
98
|
+
case 'click':
|
|
99
|
+
return await imgEl.click(driver);
|
|
100
|
+
case 'findElementFromElement':
|
|
101
|
+
return await imgEl.find(false, driver, ...args);
|
|
102
|
+
case 'findElementsFromElement':
|
|
103
|
+
return await imgEl.find(true, driver, ...args);
|
|
104
|
+
case 'elementDisplayed':
|
|
105
|
+
return true;
|
|
106
|
+
case 'getSize':
|
|
107
|
+
return imgEl.size;
|
|
108
|
+
case 'getLocation':
|
|
109
|
+
case 'getLocationInView':
|
|
110
|
+
return imgEl.location;
|
|
111
|
+
case 'getElementRect':
|
|
112
|
+
return imgEl.rect;
|
|
113
|
+
case 'getElementScreenshot':
|
|
114
|
+
return imgEl.originalImage;
|
|
115
|
+
case 'getAttribute':
|
|
116
|
+
// /session/:sessionId/element/:elementId/attribute/:name
|
|
117
|
+
// /session/:sessionId/element/:elementId/attribute/visual should return the visual data
|
|
118
|
+
// e.g. ["content-desc","appium-image-element-xxxxx","xxxxx"], ["visual","appium-image-element-xxxxx","xxxxx"]
|
|
119
|
+
switch (args[0]) {
|
|
120
|
+
case 'visual':
|
|
121
|
+
return imgEl.matchedImage;
|
|
122
|
+
case 'score':
|
|
123
|
+
return imgEl.score;
|
|
124
|
+
default:
|
|
125
|
+
throw new errors.NotYetImplementedError();
|
|
126
|
+
}
|
|
127
|
+
default:
|
|
128
|
+
throw new errors.NotYetImplementedError();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
86
132
|
/**
|
|
87
133
|
*
|
|
88
134
|
* @returns this image element as a WebElement
|
|
@@ -237,49 +283,4 @@ export class ImageElement {
|
|
|
237
283
|
});
|
|
238
284
|
}
|
|
239
285
|
|
|
240
|
-
/**
|
|
241
|
-
* Handle various Appium commands that involve an image element
|
|
242
|
-
*
|
|
243
|
-
* @param driver - the driver to use for commands
|
|
244
|
-
* @param cmd - the name of the driver command
|
|
245
|
-
* @param imgEl - image element object
|
|
246
|
-
* @param args - Rest of arguments for executeScripts
|
|
247
|
-
*
|
|
248
|
-
* @returns the result of running a command
|
|
249
|
-
*/
|
|
250
|
-
static async execute(driver: ExternalDriver, imgEl: ImageElement, cmd: string, ...args: any[]): Promise<any> {
|
|
251
|
-
switch (cmd) {
|
|
252
|
-
case 'click':
|
|
253
|
-
return await imgEl.click(driver);
|
|
254
|
-
case 'findElementFromElement':
|
|
255
|
-
return await imgEl.find(false, driver, ...args);
|
|
256
|
-
case 'findElementsFromElement':
|
|
257
|
-
return await imgEl.find(true, driver, ...args);
|
|
258
|
-
case 'elementDisplayed':
|
|
259
|
-
return true;
|
|
260
|
-
case 'getSize':
|
|
261
|
-
return imgEl.size;
|
|
262
|
-
case 'getLocation':
|
|
263
|
-
case 'getLocationInView':
|
|
264
|
-
return imgEl.location;
|
|
265
|
-
case 'getElementRect':
|
|
266
|
-
return imgEl.rect;
|
|
267
|
-
case 'getElementScreenshot':
|
|
268
|
-
return imgEl.originalImage;
|
|
269
|
-
case 'getAttribute':
|
|
270
|
-
// /session/:sessionId/element/:elementId/attribute/:name
|
|
271
|
-
// /session/:sessionId/element/:elementId/attribute/visual should return the visual data
|
|
272
|
-
// e.g. ["content-desc","appium-image-element-xxxxx","xxxxx"], ["visual","appium-image-element-xxxxx","xxxxx"]
|
|
273
|
-
switch (args[0]) {
|
|
274
|
-
case 'visual':
|
|
275
|
-
return imgEl.matchedImage;
|
|
276
|
-
case 'score':
|
|
277
|
-
return imgEl.score;
|
|
278
|
-
default:
|
|
279
|
-
throw new errors.NotYetImplementedError();
|
|
280
|
-
}
|
|
281
|
-
default:
|
|
282
|
-
throw new errors.NotYetImplementedError();
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
286
|
}
|
package/lib/plugin.ts
CHANGED
|
@@ -9,18 +9,7 @@ import {IMAGE_STRATEGY, IMAGE_ELEMENT_PREFIX} from './constants';
|
|
|
9
9
|
import type {ExternalDriver, Element, ActionSequence, MethodMap} from '@appium/types';
|
|
10
10
|
import type {MatchingOptions, SimilarityOptions, OccurrenceOptions} from '@appium/opencv';
|
|
11
11
|
|
|
12
|
-
export function getImgElFromArgs(args: any[]): string | undefined {
|
|
13
|
-
return args.find((arg) => _.isString(arg) && arg.startsWith(IMAGE_ELEMENT_PREFIX));
|
|
14
|
-
}
|
|
15
|
-
|
|
16
12
|
export class ImageElementPlugin extends BasePlugin {
|
|
17
|
-
readonly finder: ImageElementFinder;
|
|
18
|
-
|
|
19
|
-
constructor(pluginName: string) {
|
|
20
|
-
super(pluginName);
|
|
21
|
-
this.finder = new ImageElementFinder();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
13
|
// this plugin supports a non-standard 'compare images' command
|
|
25
14
|
static newMethodMap: MethodMap<ImageElementPlugin> = {
|
|
26
15
|
'/session/:sessionId/appium/compare_images': {
|
|
@@ -34,6 +23,12 @@ export class ImageElementPlugin extends BasePlugin {
|
|
|
34
23
|
},
|
|
35
24
|
},
|
|
36
25
|
} as const;
|
|
26
|
+
readonly finder: ImageElementFinder;
|
|
27
|
+
|
|
28
|
+
constructor(pluginName: string) {
|
|
29
|
+
super(pluginName);
|
|
30
|
+
this.finder = new ImageElementFinder();
|
|
31
|
+
}
|
|
37
32
|
|
|
38
33
|
async compareImages(
|
|
39
34
|
next: () => Promise<any>,
|
|
@@ -54,22 +49,6 @@ export class ImageElementPlugin extends BasePlugin {
|
|
|
54
49
|
return await this._find(true, next, driver, ...args);
|
|
55
50
|
}
|
|
56
51
|
|
|
57
|
-
private async _find(
|
|
58
|
-
multiple: boolean,
|
|
59
|
-
next: () => Promise<any>,
|
|
60
|
-
driver: ExternalDriver,
|
|
61
|
-
...args: any[]
|
|
62
|
-
): Promise<any> {
|
|
63
|
-
const [strategy, selector] = args;
|
|
64
|
-
|
|
65
|
-
// if we're not actually finding by image, just do the normal thing
|
|
66
|
-
if (strategy !== IMAGE_STRATEGY) {
|
|
67
|
-
return await next();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return await this.finder.findByImage(Buffer.from(selector, 'base64'), driver, {multiple});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
52
|
async handle(
|
|
74
53
|
next: () => Promise<any>,
|
|
75
54
|
driver: ExternalDriver,
|
|
@@ -130,4 +109,28 @@ export class ImageElementPlugin extends BasePlugin {
|
|
|
130
109
|
|
|
131
110
|
return await next();
|
|
132
111
|
}
|
|
112
|
+
|
|
113
|
+
private async _find(
|
|
114
|
+
multiple: boolean,
|
|
115
|
+
next: () => Promise<any>,
|
|
116
|
+
driver: ExternalDriver,
|
|
117
|
+
...args: any[]
|
|
118
|
+
): Promise<any> {
|
|
119
|
+
const [strategy, selector] = args;
|
|
120
|
+
|
|
121
|
+
// if we're not actually finding by image, just do the normal thing
|
|
122
|
+
if (strategy !== IMAGE_STRATEGY) {
|
|
123
|
+
return await next();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return await this.finder.findByImage(Buffer.from(selector, 'base64'), driver, {multiple});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Returns the first image-element id found in command args.
|
|
132
|
+
* @param args Command arguments.
|
|
133
|
+
*/
|
|
134
|
+
export function getImgElFromArgs(args: any[]): string | undefined {
|
|
135
|
+
return args.find((arg) => _.isString(arg) && arg.startsWith(IMAGE_ELEMENT_PREFIX));
|
|
133
136
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appium/images-plugin",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.1",
|
|
4
4
|
"description": "Plugin for working with images and image elements in Appium",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"automation",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"test:e2e": "mocha --exit --timeout 40s --slow 20s \"./test/e2e/**/*.spec.*ts\""
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@appium/opencv": "4.1.
|
|
44
|
-
"@appium/support": "7.1.
|
|
43
|
+
"@appium/opencv": "4.1.3",
|
|
44
|
+
"@appium/support": "7.1.1",
|
|
45
45
|
"lodash": "4.18.1",
|
|
46
|
-
"lru-cache": "11.3.
|
|
46
|
+
"lru-cache": "11.3.5",
|
|
47
47
|
"sharp": "0.34.5"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "17f84265d10944fec06ae7684ae8ad77d1224b50"
|
|
64
64
|
}
|