appium-desktop-driver 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +609 -0
- package/ROADMAP.md +175 -0
- package/build/lib/commands/actions.d.ts +12 -0
- package/build/lib/commands/actions.d.ts.map +1 -0
- package/build/lib/commands/actions.js +242 -0
- package/build/lib/commands/actions.js.map +1 -0
- package/build/lib/commands/app.d.ts +18 -0
- package/build/lib/commands/app.d.ts.map +1 -0
- package/build/lib/commands/app.js +280 -0
- package/build/lib/commands/app.js.map +1 -0
- package/build/lib/commands/device.d.ts +11 -0
- package/build/lib/commands/device.d.ts.map +1 -0
- package/build/lib/commands/device.js +236 -0
- package/build/lib/commands/device.js.map +1 -0
- package/build/lib/commands/element.d.ts +16 -0
- package/build/lib/commands/element.d.ts.map +1 -0
- package/build/lib/commands/element.js +233 -0
- package/build/lib/commands/element.js.map +1 -0
- package/build/lib/commands/extension.d.ts +124 -0
- package/build/lib/commands/extension.d.ts.map +1 -0
- package/build/lib/commands/extension.js +715 -0
- package/build/lib/commands/extension.js.map +1 -0
- package/build/lib/commands/functions.d.ts +3 -0
- package/build/lib/commands/functions.d.ts.map +1 -0
- package/build/lib/commands/functions.js +194 -0
- package/build/lib/commands/functions.js.map +1 -0
- package/build/lib/commands/index.d.ts +178 -0
- package/build/lib/commands/index.d.ts.map +1 -0
- package/build/lib/commands/index.js +54 -0
- package/build/lib/commands/index.js.map +1 -0
- package/build/lib/commands/powershell.d.ts +6 -0
- package/build/lib/commands/powershell.d.ts.map +1 -0
- package/build/lib/commands/powershell.js +202 -0
- package/build/lib/commands/powershell.js.map +1 -0
- package/build/lib/commands/screen-recorder.d.ts +40 -0
- package/build/lib/commands/screen-recorder.d.ts.map +1 -0
- package/build/lib/commands/screen-recorder.js +183 -0
- package/build/lib/commands/screen-recorder.js.map +1 -0
- package/build/lib/commands/system.d.ts +4 -0
- package/build/lib/commands/system.d.ts.map +1 -0
- package/build/lib/commands/system.js +8 -0
- package/build/lib/commands/system.js.map +1 -0
- package/build/lib/constants.d.ts +3 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +6 -0
- package/build/lib/constants.js.map +1 -0
- package/build/lib/constraints.d.ts +58 -0
- package/build/lib/constraints.d.ts.map +1 -0
- package/build/lib/constraints.js +60 -0
- package/build/lib/constraints.js.map +1 -0
- package/build/lib/driver.d.ts +36 -0
- package/build/lib/driver.d.ts.map +1 -0
- package/build/lib/driver.js +209 -0
- package/build/lib/driver.js.map +1 -0
- package/build/lib/enums.d.ts +89 -0
- package/build/lib/enums.d.ts.map +1 -0
- package/build/lib/enums.js +83 -0
- package/build/lib/enums.js.map +1 -0
- package/build/lib/mcp/appium-manager.d.ts +8 -0
- package/build/lib/mcp/appium-manager.d.ts.map +1 -0
- package/build/lib/mcp/appium-manager.js +160 -0
- package/build/lib/mcp/appium-manager.js.map +1 -0
- package/build/lib/mcp/config.d.ts +7 -0
- package/build/lib/mcp/config.d.ts.map +1 -0
- package/build/lib/mcp/config.js +14 -0
- package/build/lib/mcp/config.js.map +1 -0
- package/build/lib/mcp/constants.d.ts +3 -0
- package/build/lib/mcp/constants.d.ts.map +1 -0
- package/build/lib/mcp/constants.js +6 -0
- package/build/lib/mcp/constants.js.map +1 -0
- package/build/lib/mcp/errors.d.ts +2 -0
- package/build/lib/mcp/errors.d.ts.map +1 -0
- package/build/lib/mcp/errors.js +10 -0
- package/build/lib/mcp/errors.js.map +1 -0
- package/build/lib/mcp/index.d.ts +3 -0
- package/build/lib/mcp/index.d.ts.map +1 -0
- package/build/lib/mcp/index.js +113 -0
- package/build/lib/mcp/index.js.map +1 -0
- package/build/lib/mcp/session.d.ts +24 -0
- package/build/lib/mcp/session.d.ts.map +1 -0
- package/build/lib/mcp/session.js +77 -0
- package/build/lib/mcp/session.js.map +1 -0
- package/build/lib/mcp/tools/advanced.d.ts +4 -0
- package/build/lib/mcp/tools/advanced.d.ts.map +1 -0
- package/build/lib/mcp/tools/advanced.js +119 -0
- package/build/lib/mcp/tools/advanced.js.map +1 -0
- package/build/lib/mcp/tools/app.d.ts +4 -0
- package/build/lib/mcp/tools/app.d.ts.map +1 -0
- package/build/lib/mcp/tools/app.js +64 -0
- package/build/lib/mcp/tools/app.js.map +1 -0
- package/build/lib/mcp/tools/clipboard.d.ts +4 -0
- package/build/lib/mcp/tools/clipboard.d.ts.map +1 -0
- package/build/lib/mcp/tools/clipboard.js +41 -0
- package/build/lib/mcp/tools/clipboard.js.map +1 -0
- package/build/lib/mcp/tools/find.d.ts +4 -0
- package/build/lib/mcp/tools/find.d.ts.map +1 -0
- package/build/lib/mcp/tools/find.js +119 -0
- package/build/lib/mcp/tools/find.js.map +1 -0
- package/build/lib/mcp/tools/index.d.ts +4 -0
- package/build/lib/mcp/tools/index.d.ts.map +1 -0
- package/build/lib/mcp/tools/index.js +24 -0
- package/build/lib/mcp/tools/index.js.map +1 -0
- package/build/lib/mcp/tools/inspect.d.ts +4 -0
- package/build/lib/mcp/tools/inspect.d.ts.map +1 -0
- package/build/lib/mcp/tools/inspect.js +106 -0
- package/build/lib/mcp/tools/inspect.js.map +1 -0
- package/build/lib/mcp/tools/interact.d.ts +4 -0
- package/build/lib/mcp/tools/interact.d.ts.map +1 -0
- package/build/lib/mcp/tools/interact.js +121 -0
- package/build/lib/mcp/tools/interact.js.map +1 -0
- package/build/lib/mcp/tools/patterns.d.ts +4 -0
- package/build/lib/mcp/tools/patterns.d.ts.map +1 -0
- package/build/lib/mcp/tools/patterns.js +136 -0
- package/build/lib/mcp/tools/patterns.js.map +1 -0
- package/build/lib/mcp/tools/session.d.ts +4 -0
- package/build/lib/mcp/tools/session.d.ts.map +1 -0
- package/build/lib/mcp/tools/session.js +55 -0
- package/build/lib/mcp/tools/session.js.map +1 -0
- package/build/lib/mcp/tools/window.d.ts +4 -0
- package/build/lib/mcp/tools/window.d.ts.map +1 -0
- package/build/lib/mcp/tools/window.js +134 -0
- package/build/lib/mcp/tools/window.js.map +1 -0
- package/build/lib/powershell/common.d.ts +39 -0
- package/build/lib/powershell/common.d.ts.map +1 -0
- package/build/lib/powershell/common.js +121 -0
- package/build/lib/powershell/common.js.map +1 -0
- package/build/lib/powershell/conditions.d.ts +24 -0
- package/build/lib/powershell/conditions.d.ts.map +1 -0
- package/build/lib/powershell/conditions.js +131 -0
- package/build/lib/powershell/conditions.js.map +1 -0
- package/build/lib/powershell/converter.d.ts +3 -0
- package/build/lib/powershell/converter.d.ts.map +1 -0
- package/build/lib/powershell/converter.js +273 -0
- package/build/lib/powershell/converter.js.map +1 -0
- package/build/lib/powershell/core.d.ts +8 -0
- package/build/lib/powershell/core.d.ts.map +1 -0
- package/build/lib/powershell/core.js +30 -0
- package/build/lib/powershell/core.js.map +1 -0
- package/build/lib/powershell/elements.d.ts +70 -0
- package/build/lib/powershell/elements.d.ts.map +1 -0
- package/build/lib/powershell/elements.js +523 -0
- package/build/lib/powershell/elements.js.map +1 -0
- package/build/lib/powershell/index.d.ts +8 -0
- package/build/lib/powershell/index.d.ts.map +1 -0
- package/build/lib/powershell/index.js +24 -0
- package/build/lib/powershell/index.js.map +1 -0
- package/build/lib/powershell/regex.d.ts +19 -0
- package/build/lib/powershell/regex.d.ts.map +1 -0
- package/build/lib/powershell/regex.js +68 -0
- package/build/lib/powershell/regex.js.map +1 -0
- package/build/lib/powershell/types.d.ts +155 -0
- package/build/lib/powershell/types.d.ts.map +1 -0
- package/build/lib/powershell/types.js +141 -0
- package/build/lib/powershell/types.js.map +1 -0
- package/build/lib/util.d.ts +17 -0
- package/build/lib/util.d.ts.map +1 -0
- package/build/lib/util.js +76 -0
- package/build/lib/util.js.map +1 -0
- package/build/lib/winapi/types/index.d.ts +8 -0
- package/build/lib/winapi/types/index.d.ts.map +1 -0
- package/build/lib/winapi/types/index.js +24 -0
- package/build/lib/winapi/types/index.js.map +1 -0
- package/build/lib/winapi/types/input.d.ts +11 -0
- package/build/lib/winapi/types/input.d.ts.map +1 -0
- package/build/lib/winapi/types/input.js +12 -0
- package/build/lib/winapi/types/input.js.map +1 -0
- package/build/lib/winapi/types/keyeventf.d.ts +13 -0
- package/build/lib/winapi/types/keyeventf.d.ts.map +1 -0
- package/build/lib/winapi/types/keyeventf.js +14 -0
- package/build/lib/winapi/types/keyeventf.js.map +1 -0
- package/build/lib/winapi/types/mouseeventf.d.ts +34 -0
- package/build/lib/winapi/types/mouseeventf.d.ts.map +1 -0
- package/build/lib/winapi/types/mouseeventf.js +37 -0
- package/build/lib/winapi/types/mouseeventf.js.map +1 -0
- package/build/lib/winapi/types/scancode.d.ts +95 -0
- package/build/lib/winapi/types/scancode.d.ts.map +1 -0
- package/build/lib/winapi/types/scancode.js +96 -0
- package/build/lib/winapi/types/scancode.js.map +1 -0
- package/build/lib/winapi/types/systemmetric.d.ts +214 -0
- package/build/lib/winapi/types/systemmetric.d.ts.map +1 -0
- package/build/lib/winapi/types/systemmetric.js +215 -0
- package/build/lib/winapi/types/systemmetric.js.map +1 -0
- package/build/lib/winapi/types/virtualkey.d.ts +353 -0
- package/build/lib/winapi/types/virtualkey.d.ts.map +1 -0
- package/build/lib/winapi/types/virtualkey.js +354 -0
- package/build/lib/winapi/types/virtualkey.js.map +1 -0
- package/build/lib/winapi/types/xmousebutton.d.ts +7 -0
- package/build/lib/winapi/types/xmousebutton.d.ts.map +1 -0
- package/build/lib/winapi/types/xmousebutton.js +8 -0
- package/build/lib/winapi/types/xmousebutton.js.map +1 -0
- package/build/lib/winapi/user32.d.ts +56 -0
- package/build/lib/winapi/user32.d.ts.map +1 -0
- package/build/lib/winapi/user32.js +592 -0
- package/build/lib/winapi/user32.js.map +1 -0
- package/build/lib/xpath/core.d.ts +8 -0
- package/build/lib/xpath/core.d.ts.map +1 -0
- package/build/lib/xpath/core.js +593 -0
- package/build/lib/xpath/core.js.map +1 -0
- package/build/lib/xpath/functions.d.ts +4 -0
- package/build/lib/xpath/functions.d.ts.map +1 -0
- package/build/lib/xpath/functions.js +271 -0
- package/build/lib/xpath/functions.js.map +1 -0
- package/build/lib/xpath/index.d.ts +3 -0
- package/build/lib/xpath/index.d.ts.map +1 -0
- package/build/lib/xpath/index.js +19 -0
- package/build/lib/xpath/index.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleFunctionCall = handleFunctionCall;
|
|
4
|
+
const base_driver_1 = require("@appium/base-driver");
|
|
5
|
+
const xpath_analyzer_1 = require("xpath-analyzer");
|
|
6
|
+
const powershell_1 = require("../powershell");
|
|
7
|
+
const util_1 = require("../util");
|
|
8
|
+
const core_1 = require("./core");
|
|
9
|
+
const FUNCTION_ARGUMENT_ERROR = (0, util_1.$) `Function ${0}() requires ${1}.`;
|
|
10
|
+
async function handleFunctionCall(name, context, sendPowerShellCommand, ...args) {
|
|
11
|
+
const processArgs = async (...args) => {
|
|
12
|
+
const results = [];
|
|
13
|
+
for (const arg of args) {
|
|
14
|
+
results.push(await (0, core_1.processExprNode)(arg, context, sendPowerShellCommand));
|
|
15
|
+
}
|
|
16
|
+
return results;
|
|
17
|
+
};
|
|
18
|
+
switch (name) {
|
|
19
|
+
case xpath_analyzer_1.NOT:
|
|
20
|
+
case xpath_analyzer_1.BOOLEAN: {
|
|
21
|
+
if (args.length !== 1) {
|
|
22
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 1 argument'));
|
|
23
|
+
}
|
|
24
|
+
const [resultArray] = await processArgs(args[0]);
|
|
25
|
+
const result = Boolean(resultArray[0]);
|
|
26
|
+
return [name === xpath_analyzer_1.NOT ? !result : result];
|
|
27
|
+
}
|
|
28
|
+
case xpath_analyzer_1.CONCAT: {
|
|
29
|
+
if (args.length < 2) {
|
|
30
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'at least 2 arguments'));
|
|
31
|
+
}
|
|
32
|
+
const resultArrays = await processArgs(...args);
|
|
33
|
+
if (resultArrays.some((resultArray) => resultArray.length > 1)) {
|
|
34
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to have either one or zero elements'));
|
|
35
|
+
}
|
|
36
|
+
const stringArray = convertProcessedExprNodesToStrings(...resultArrays.map((resultArray) => resultArray[0]));
|
|
37
|
+
return [String.prototype.concat(...stringArray)];
|
|
38
|
+
}
|
|
39
|
+
case xpath_analyzer_1.STARTS_WITH:
|
|
40
|
+
case xpath_analyzer_1.CONTAINS: {
|
|
41
|
+
if (args.length !== 2) {
|
|
42
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 2 arguments'));
|
|
43
|
+
}
|
|
44
|
+
const [firstArgResult, secondArgResult] = await processArgs(args[0], args[1]);
|
|
45
|
+
if (firstArgResult.length > 1 || secondArgResult.length > 1) {
|
|
46
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to have either one or zero elements'));
|
|
47
|
+
}
|
|
48
|
+
const [lhs] = firstArgResult;
|
|
49
|
+
const [rhs] = secondArgResult;
|
|
50
|
+
if (typeof lhs === 'boolean') {
|
|
51
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be string, number or element'));
|
|
52
|
+
}
|
|
53
|
+
if (typeof rhs === 'boolean') {
|
|
54
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the second argument to be string, number or element'));
|
|
55
|
+
}
|
|
56
|
+
const stringMethodMap = {
|
|
57
|
+
[xpath_analyzer_1.STARTS_WITH]: 'startsWith',
|
|
58
|
+
[xpath_analyzer_1.CONTAINS]: 'includes',
|
|
59
|
+
};
|
|
60
|
+
const [lhsString, rhsString] = convertProcessedExprNodesToStrings(firstArgResult, secondArgResult);
|
|
61
|
+
return [lhsString[stringMethodMap[name]](rhsString)];
|
|
62
|
+
}
|
|
63
|
+
case xpath_analyzer_1.COUNT: {
|
|
64
|
+
if (args.length !== 1) {
|
|
65
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 1 argument'));
|
|
66
|
+
}
|
|
67
|
+
const resultArray = await processArgs(args[0]);
|
|
68
|
+
return [resultArray.length];
|
|
69
|
+
}
|
|
70
|
+
case xpath_analyzer_1.TRUE:
|
|
71
|
+
case xpath_analyzer_1.FALSE:
|
|
72
|
+
if (args.length > 0) {
|
|
73
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'to have 0 arguments'));
|
|
74
|
+
}
|
|
75
|
+
return [name === xpath_analyzer_1.TRUE ? true : false];
|
|
76
|
+
case xpath_analyzer_1.ROUND:
|
|
77
|
+
case xpath_analyzer_1.CEILING:
|
|
78
|
+
case xpath_analyzer_1.FLOOR: {
|
|
79
|
+
if (args.length !== 1) {
|
|
80
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 1 argument'));
|
|
81
|
+
}
|
|
82
|
+
const resultArray = await processArgs(args[0]);
|
|
83
|
+
const [num] = resultArray[0];
|
|
84
|
+
if (typeof num !== 'number') {
|
|
85
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be a number'));
|
|
86
|
+
}
|
|
87
|
+
const mathMethodMap = {
|
|
88
|
+
[xpath_analyzer_1.ROUND]: 'round',
|
|
89
|
+
[xpath_analyzer_1.FLOOR]: 'floor',
|
|
90
|
+
[xpath_analyzer_1.CEILING]: 'ceil',
|
|
91
|
+
};
|
|
92
|
+
return [Math[mathMethodMap[name]](num)];
|
|
93
|
+
}
|
|
94
|
+
case xpath_analyzer_1.ID: {
|
|
95
|
+
if (args.length !== 1) {
|
|
96
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 1 argument'));
|
|
97
|
+
}
|
|
98
|
+
const resultArray = await processArgs(args[0]);
|
|
99
|
+
const stringArray = convertProcessedExprNodesToStrings(...resultArray);
|
|
100
|
+
const ids = Array.from(new Set(stringArray.flatMap((string) => string.split(/\s+/))));
|
|
101
|
+
const conditions = ids.map((id) => new powershell_1.PropertyCondition(powershell_1.Property.RUNTIME_ID, new powershell_1.PSInt32Array(id.split('.').map(Number))));
|
|
102
|
+
const results = [];
|
|
103
|
+
for (const condition of conditions) {
|
|
104
|
+
results.push(await sendPowerShellCommand(powershell_1.AutomationElement.rootElement.findFirst(powershell_1.TreeScope.SUBTREE, condition).buildCommand()));
|
|
105
|
+
}
|
|
106
|
+
return results.map((result) => new powershell_1.FoundAutomationElement(result.trim()));
|
|
107
|
+
}
|
|
108
|
+
case xpath_analyzer_1.POSITION:
|
|
109
|
+
case xpath_analyzer_1.LAST: {
|
|
110
|
+
if (args.length > 0) {
|
|
111
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'to have 0 arguments'));
|
|
112
|
+
}
|
|
113
|
+
const elIds = await sendPowerShellCommand(context.buildCommand());
|
|
114
|
+
const lastElementIndex = elIds.split('\n').map((id) => id.trim()).filter(Boolean).length;
|
|
115
|
+
return name === xpath_analyzer_1.LAST ? [lastElementIndex] : Array.from({ length: lastElementIndex }, () => 0);
|
|
116
|
+
}
|
|
117
|
+
case xpath_analyzer_1.LOCAL_NAME:
|
|
118
|
+
case xpath_analyzer_1.NAME: {
|
|
119
|
+
if (args.length > 1) {
|
|
120
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'no more than 1 argument'));
|
|
121
|
+
}
|
|
122
|
+
const [argResult] = await processArgs(args[0]);
|
|
123
|
+
if (argResult && argResult.length > 1) {
|
|
124
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to have either one or zero elements'));
|
|
125
|
+
}
|
|
126
|
+
const [element] = argResult ?? [context];
|
|
127
|
+
if (!(element instanceof powershell_1.AutomationElement)) {
|
|
128
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be element'));
|
|
129
|
+
}
|
|
130
|
+
const result = await sendPowerShellCommand(element.buildGetTagNameCommand());
|
|
131
|
+
return result.split('\n').map((x) => x.trim());
|
|
132
|
+
}
|
|
133
|
+
case xpath_analyzer_1.NORMALIZE_SPACE: {
|
|
134
|
+
if (args.length > 1) {
|
|
135
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'no more than 1 argument'));
|
|
136
|
+
}
|
|
137
|
+
const [argResult] = await processArgs(args[0]);
|
|
138
|
+
if (argResult && argResult.length > 1) {
|
|
139
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to have either one or zero elements'));
|
|
140
|
+
}
|
|
141
|
+
if (!argResult[0] || argResult[0] instanceof powershell_1.AutomationElement) {
|
|
142
|
+
return [''];
|
|
143
|
+
}
|
|
144
|
+
if (typeof argResult[0] === 'string') {
|
|
145
|
+
return [argResult[0].trim().replace(/\s+/g, ' ')];
|
|
146
|
+
}
|
|
147
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be string or element'));
|
|
148
|
+
}
|
|
149
|
+
case xpath_analyzer_1.STRING_LENGTH: {
|
|
150
|
+
if (args.length > 1) {
|
|
151
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'no more than 1 argument'));
|
|
152
|
+
}
|
|
153
|
+
const [argResult] = await processArgs(args[0]);
|
|
154
|
+
if (argResult && argResult.length > 1) {
|
|
155
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to have either one or zero elements'));
|
|
156
|
+
}
|
|
157
|
+
if (!argResult[0] || argResult[0] instanceof powershell_1.AutomationElement) {
|
|
158
|
+
return [0];
|
|
159
|
+
}
|
|
160
|
+
if (typeof argResult[0] === 'string') {
|
|
161
|
+
return [argResult[0].length];
|
|
162
|
+
}
|
|
163
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be string or element'));
|
|
164
|
+
}
|
|
165
|
+
case xpath_analyzer_1.TRANSLATE: {
|
|
166
|
+
if (args.length !== 3) {
|
|
167
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 3 arguments'));
|
|
168
|
+
}
|
|
169
|
+
const [firstArgResult, secondArgResult, thirdArgResult] = await processArgs(args[0], args[1], args[2]);
|
|
170
|
+
if (firstArgResult.length > 1 || secondArgResult.length > 1 || thirdArgResult.length > 1) {
|
|
171
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to have either one or zero elements'));
|
|
172
|
+
}
|
|
173
|
+
const [[str], [from], [to]] = [firstArgResult, secondArgResult, thirdArgResult];
|
|
174
|
+
if (![str, from, to].every((x) => typeof x === 'string' || x instanceof powershell_1.AutomationElement)) {
|
|
175
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to be string or element'));
|
|
176
|
+
}
|
|
177
|
+
if (str instanceof powershell_1.AutomationElement) {
|
|
178
|
+
return [''];
|
|
179
|
+
}
|
|
180
|
+
if (from instanceof powershell_1.AutomationElement) {
|
|
181
|
+
return [str];
|
|
182
|
+
}
|
|
183
|
+
const result = str.split('').map((char) => {
|
|
184
|
+
const index = from.indexOf(char);
|
|
185
|
+
return index !== -1 ? (to instanceof powershell_1.AutomationElement ? '' : to)[index] ?? '' : char;
|
|
186
|
+
}).join('');
|
|
187
|
+
return [result];
|
|
188
|
+
}
|
|
189
|
+
case xpath_analyzer_1.NUMBER:
|
|
190
|
+
case xpath_analyzer_1.STRING: {
|
|
191
|
+
if (args.length > 1) {
|
|
192
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'no more than 1 argument'));
|
|
193
|
+
}
|
|
194
|
+
const [firstArg] = await processArgs(args[0]);
|
|
195
|
+
if (firstArg && firstArg.length > 1) {
|
|
196
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to have either one or zero elements'));
|
|
197
|
+
}
|
|
198
|
+
return name === xpath_analyzer_1.STRING ? [...convertProcessedExprNodesToStrings(firstArg ?? [context])] : [...convertProcessedExprNodesToNumbers(firstArg ?? [context])];
|
|
199
|
+
}
|
|
200
|
+
case xpath_analyzer_1.SUBSTRING_AFTER:
|
|
201
|
+
case xpath_analyzer_1.SUBSTRING_BEFORE: {
|
|
202
|
+
if (args.length !== 2) {
|
|
203
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 2 arguments'));
|
|
204
|
+
}
|
|
205
|
+
const [firstArgResult, secondArgResult] = await processArgs(args[0], args[1]);
|
|
206
|
+
if (firstArgResult.length > 1 || secondArgResult.length > 1) {
|
|
207
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'each argument to have either one or zero elements'));
|
|
208
|
+
}
|
|
209
|
+
const [lhs] = firstArgResult;
|
|
210
|
+
const [rhs] = secondArgResult;
|
|
211
|
+
if (typeof lhs === 'boolean') {
|
|
212
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be string, number or element'));
|
|
213
|
+
}
|
|
214
|
+
if (typeof rhs === 'boolean') {
|
|
215
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the second argument to be string, number or element'));
|
|
216
|
+
}
|
|
217
|
+
const [firstString] = convertProcessedExprNodesToStrings(firstArgResult);
|
|
218
|
+
const [secondString] = convertProcessedExprNodesToStrings(secondArgResult);
|
|
219
|
+
const index = firstString.indexOf(secondString);
|
|
220
|
+
if (index === -1) {
|
|
221
|
+
return [''];
|
|
222
|
+
}
|
|
223
|
+
return name === xpath_analyzer_1.SUBSTRING_BEFORE ? [firstString.slice(0, index)] : [firstString.slice(index + 1)];
|
|
224
|
+
}
|
|
225
|
+
case xpath_analyzer_1.SUBSTRING: {
|
|
226
|
+
if (args.length < 2) {
|
|
227
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'at least 2 arguments'));
|
|
228
|
+
}
|
|
229
|
+
if (args.length > 3) {
|
|
230
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'no more than 3 arguments'));
|
|
231
|
+
}
|
|
232
|
+
const [stringArg, fromArg, countArg] = await processArgs(...args);
|
|
233
|
+
if (typeof stringArg[0] === 'boolean' || typeof stringArg[0] === 'number') {
|
|
234
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the first argument to be string or element'));
|
|
235
|
+
}
|
|
236
|
+
const [string] = convertProcessedExprNodesToStrings(stringArg);
|
|
237
|
+
const [index] = fromArg;
|
|
238
|
+
const [count] = countArg;
|
|
239
|
+
if (typeof index !== 'number') {
|
|
240
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the second argument to be number'));
|
|
241
|
+
}
|
|
242
|
+
if (typeof count !== 'number' && typeof count !== 'undefined') {
|
|
243
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'the second argument to be number'));
|
|
244
|
+
}
|
|
245
|
+
if (count && count < 0) {
|
|
246
|
+
return [''];
|
|
247
|
+
}
|
|
248
|
+
return [string.slice(index + 1, count ? index + count : string.length)];
|
|
249
|
+
}
|
|
250
|
+
case xpath_analyzer_1.SUM: {
|
|
251
|
+
if (args.length !== 1) {
|
|
252
|
+
throw new base_driver_1.errors.InvalidArgumentError(FUNCTION_ARGUMENT_ERROR.format(name, 'exactly 1 argument'));
|
|
253
|
+
}
|
|
254
|
+
const [arg] = await processArgs(args[0]);
|
|
255
|
+
const argAsNumbers = convertProcessedExprNodesToNumbers(arg);
|
|
256
|
+
return [argAsNumbers.reduce((a, b) => a + b)];
|
|
257
|
+
}
|
|
258
|
+
default:
|
|
259
|
+
throw new base_driver_1.errors.InvalidSelectorError(`XPath function ${name}() not found.`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
function convertProcessedExprNodesToStrings(...arrayOfProcessedExprNodes) {
|
|
263
|
+
return arrayOfProcessedExprNodes
|
|
264
|
+
.map((item) => (item instanceof powershell_1.AutomationElement) ? '' : item) // windows element xml representaton never contains text nodes
|
|
265
|
+
.map((item) => item === undefined || item === null ? '' : String(item)); // convert not found elements to empty string and others to string
|
|
266
|
+
}
|
|
267
|
+
function convertProcessedExprNodesToNumbers(...arrayOfProcessedExprNodes) {
|
|
268
|
+
const arrayOfStrings = convertProcessedExprNodesToStrings(...arrayOfProcessedExprNodes);
|
|
269
|
+
return arrayOfStrings.map((str) => /^\s*(?<![\d.+-])[+-]?(?:\d*[.])?\d+(?![\d.])\s*$/.test(str) ? NaN : Number(str));
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../lib/xpath/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/xpath/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./core"), exports);
|
|
18
|
+
__exportStar(require("./functions"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/xpath/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,8CAA4B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "appium-desktop-driver",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Appium driver for Windows",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"appium",
|
|
7
|
+
"desktop",
|
|
8
|
+
"uiautomation",
|
|
9
|
+
"powershell",
|
|
10
|
+
"automated testing",
|
|
11
|
+
"windows",
|
|
12
|
+
"verisoft"
|
|
13
|
+
],
|
|
14
|
+
"main": "build/lib/driver.js",
|
|
15
|
+
"bin": {
|
|
16
|
+
"novawindows-mcp": "build/lib/mcp/index.js"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -b",
|
|
20
|
+
"watch": "tsc -b --watch",
|
|
21
|
+
"lint": "eslint .",
|
|
22
|
+
"test": "npx vitest run",
|
|
23
|
+
"test:e2e": "npx vitest run --config vitest.e2e.config.ts",
|
|
24
|
+
"mcp:start": "node build/lib/mcp/index.js"
|
|
25
|
+
},
|
|
26
|
+
"author": "VeriSoft",
|
|
27
|
+
"license": "Apache-2.0",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/verisoft-ai/appium-desktop-driver.git"
|
|
31
|
+
},
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/verisoft-ai/appium-desktop-driver/issues"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"appium": "^3.0.0-rc.2"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@appium/base-driver": "^10.1.0",
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
41
|
+
"bezier-easing": "^2.1.0",
|
|
42
|
+
"ffmpeg-static": "^5.2.0",
|
|
43
|
+
"koffi": "^2.14.1",
|
|
44
|
+
"webdriverio": "^9.0.0",
|
|
45
|
+
"xpath-analyzer": "^3.0.1",
|
|
46
|
+
"zod": "^4.3.6"
|
|
47
|
+
},
|
|
48
|
+
"appium": {
|
|
49
|
+
"driverName": "desktopdriver",
|
|
50
|
+
"automationName": "DesktopDriver",
|
|
51
|
+
"platformNames": [
|
|
52
|
+
"Windows"
|
|
53
|
+
],
|
|
54
|
+
"mainClass": "NovaWindowsDriver"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@appium/eslint-config-appium-ts": "^2.0.3",
|
|
58
|
+
"@appium/tsconfig": "^1.1.0",
|
|
59
|
+
"@appium/types": "^1.1.0",
|
|
60
|
+
"@eslint/js": "^9.38.0",
|
|
61
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
62
|
+
"@semantic-release/git": "^10.0.1",
|
|
63
|
+
"@types/node": "^24.8.1",
|
|
64
|
+
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
65
|
+
"eslint": "^9.38.0",
|
|
66
|
+
"semantic-release": "^25.0.1",
|
|
67
|
+
"typescript": "^5.9.3",
|
|
68
|
+
"typescript-eslint": "^8.46.1",
|
|
69
|
+
"vitest": "^2.1.0"
|
|
70
|
+
}
|
|
71
|
+
}
|