appium-novawindows2-driver 0.1.1 → 0.1.3
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/commands/actions.d.ts +9 -9
- package/build/lib/commands/actions.d.ts.map +1 -1
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/app.d.ts +10 -10
- package/build/lib/commands/app.d.ts.map +1 -1
- package/build/lib/commands/app.js.map +1 -1
- package/build/lib/commands/device.d.ts +2 -2
- package/build/lib/commands/device.d.ts.map +1 -1
- package/build/lib/commands/device.js.map +1 -1
- package/build/lib/commands/element.d.ts +13 -13
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/extension.d.ts +28 -28
- package/build/lib/commands/extension.d.ts.map +1 -1
- package/build/lib/commands/extension.js +4 -1
- package/build/lib/commands/extension.js.map +1 -1
- package/build/lib/commands/index.d.ts +63 -63
- package/build/lib/commands/index.d.ts.map +1 -1
- package/build/lib/commands/powershell.d.ts +5 -5
- package/build/lib/commands/powershell.d.ts.map +1 -1
- package/build/lib/commands/powershell.js +59 -46
- package/build/lib/commands/powershell.js.map +1 -1
- package/build/lib/commands/system.d.ts +2 -2
- package/build/lib/commands/system.d.ts.map +1 -1
- package/build/lib/driver.d.ts +5 -1
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +21 -4
- package/build/lib/driver.js.map +1 -1
- package/examples/api_test.js +69 -0
- package/examples/concurrency_test.js +82 -0
- package/examples/debug_test.js +36 -0
- package/examples/stress_test.js +94 -0
- package/{verify_driver.js → examples/verify_driver.js} +47 -1
- package/lib/commands/actions.ts +9 -9
- package/lib/commands/app.ts +11 -11
- package/lib/commands/device.ts +2 -2
- package/lib/commands/element.ts +13 -13
- package/lib/commands/extension.ts +35 -31
- package/lib/commands/index.ts +1 -1
- package/lib/commands/powershell.ts +69 -56
- package/lib/commands/system.ts +2 -2
- package/lib/driver.ts +21 -2
- package/package.json +7 -6
- package/examples/C#/CalculatorTest/CalculatorTest/CalculatorSession.cs +0 -44
- package/examples/C#/CalculatorTest/CalculatorTest/CalculatorTest.csproj +0 -24
- package/examples/C#/CalculatorTest/CalculatorTest/ScenarioStandard.cs +0 -121
- package/examples/C#/CalculatorTest/CalculatorTest/ScenarioStandardInvoke.cs +0 -121
- package/examples/C#/CalculatorTest/CalculatorTest.sln +0 -16
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
declare const commands: {
|
|
2
|
-
getPageSource(this: import("../driver").
|
|
3
|
-
getScreenshot(this: import("../driver").
|
|
4
|
-
getWindowRect(this: import("../driver").
|
|
5
|
-
getWindowHandle(this: import("../driver").
|
|
6
|
-
getWindowHandles(this: import("../driver").
|
|
7
|
-
setWindow(this: import("../driver").
|
|
8
|
-
changeRootElement(this: import("../driver").
|
|
9
|
-
changeRootElement(this: import("../driver").
|
|
10
|
-
attachToApplicationWindow(this: import("../driver").
|
|
11
|
-
getDeviceTime(this: import("../driver").
|
|
12
|
-
getOrientation(this: import("../driver").
|
|
13
|
-
execute(this: import("../driver").
|
|
14
|
-
pushCacheRequest(this: import("../driver").
|
|
2
|
+
getPageSource(this: import("../driver").NovaWindows2Driver): Promise<string>;
|
|
3
|
+
getScreenshot(this: import("../driver").NovaWindows2Driver): Promise<string>;
|
|
4
|
+
getWindowRect(this: import("../driver").NovaWindows2Driver): Promise<import("@appium/types").Rect>;
|
|
5
|
+
getWindowHandle(this: import("../driver").NovaWindows2Driver): Promise<string>;
|
|
6
|
+
getWindowHandles(this: import("../driver").NovaWindows2Driver): Promise<string[]>;
|
|
7
|
+
setWindow(this: import("../driver").NovaWindows2Driver, nameOrHandle: string): Promise<void>;
|
|
8
|
+
changeRootElement(this: import("../driver").NovaWindows2Driver, path: string): Promise<void>;
|
|
9
|
+
changeRootElement(this: import("../driver").NovaWindows2Driver, nativeWindowHandle: number): Promise<void>;
|
|
10
|
+
attachToApplicationWindow(this: import("../driver").NovaWindows2Driver, processIds: number[]): Promise<void>;
|
|
11
|
+
getDeviceTime(this: import("../driver").NovaWindows2Driver, format?: string): Promise<string>;
|
|
12
|
+
getOrientation(this: import("../driver").NovaWindows2Driver): import("@appium/types").Orientation;
|
|
13
|
+
execute(this: import("../driver").NovaWindows2Driver, script: string, args: any[]): Promise<any>;
|
|
14
|
+
pushCacheRequest(this: import("../driver").NovaWindows2Driver, cacheRequest: {
|
|
15
15
|
treeScope?: string;
|
|
16
16
|
treeFilter?: string;
|
|
17
17
|
automationElementMode?: string;
|
|
18
18
|
}): Promise<void>;
|
|
19
|
-
patternInvoke(this: import("../driver").
|
|
20
|
-
patternExpand(this: import("../driver").
|
|
21
|
-
patternCollapse(this: import("../driver").
|
|
22
|
-
patternScrollIntoView(this: import("../driver").
|
|
23
|
-
patternIsMultiple(this: import("../driver").
|
|
24
|
-
patternGetSelectedItem(this: import("../driver").
|
|
25
|
-
patternGetAllSelectedItems(this: import("../driver").
|
|
26
|
-
patternAddToSelection(this: import("../driver").
|
|
27
|
-
patternRemoveFromSelection(this: import("../driver").
|
|
28
|
-
patternSelect(this: import("../driver").
|
|
29
|
-
patternToggle(this: import("../driver").
|
|
30
|
-
patternSetValue(this: import("../driver").
|
|
31
|
-
patternGetValue(this: import("../driver").
|
|
32
|
-
patternMaximize(this: import("../driver").
|
|
33
|
-
patternMinimize(this: import("../driver").
|
|
34
|
-
patternRestore(this: import("../driver").
|
|
35
|
-
patternClose(this: import("../driver").
|
|
36
|
-
focusElement(this: import("../driver").
|
|
37
|
-
getClipboardBase64(this: import("../driver").
|
|
19
|
+
patternInvoke(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
20
|
+
patternExpand(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
21
|
+
patternCollapse(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
22
|
+
patternScrollIntoView(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
23
|
+
patternIsMultiple(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<boolean>;
|
|
24
|
+
patternGetSelectedItem(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<import("@appium/types").Element>;
|
|
25
|
+
patternGetAllSelectedItems(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<import("@appium/types").Element[]>;
|
|
26
|
+
patternAddToSelection(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
27
|
+
patternRemoveFromSelection(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
28
|
+
patternSelect(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
29
|
+
patternToggle(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
30
|
+
patternSetValue(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element, value: string): Promise<void>;
|
|
31
|
+
patternGetValue(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
32
|
+
patternMaximize(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
33
|
+
patternMinimize(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
34
|
+
patternRestore(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
35
|
+
patternClose(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
36
|
+
focusElement(this: import("../driver").NovaWindows2Driver, element: import("@appium/types").Element): Promise<void>;
|
|
37
|
+
getClipboardBase64(this: import("../driver").NovaWindows2Driver, contentType?: ("image" | "plaintext") | {
|
|
38
38
|
contentType?: "image" | "plaintext";
|
|
39
39
|
}): Promise<string>;
|
|
40
|
-
setClipboardFromBase64(this: import("../driver").
|
|
40
|
+
setClipboardFromBase64(this: import("../driver").NovaWindows2Driver, args: {
|
|
41
41
|
contentType?: "image" | "plaintext";
|
|
42
42
|
b64Content: string;
|
|
43
43
|
}): Promise<string>;
|
|
44
|
-
executePowerShellScript(this: import("../driver").
|
|
44
|
+
executePowerShellScript(this: import("../driver").NovaWindows2Driver, script: string | {
|
|
45
45
|
script: string;
|
|
46
46
|
command: undefined;
|
|
47
47
|
} | {
|
|
48
48
|
script: undefined;
|
|
49
49
|
command: string;
|
|
50
50
|
}): Promise<string>;
|
|
51
|
-
executeKeys(this: import("../driver").
|
|
51
|
+
executeKeys(this: import("../driver").NovaWindows2Driver, keyActions: {
|
|
52
52
|
actions: {
|
|
53
53
|
pause?: number;
|
|
54
54
|
text?: string;
|
|
@@ -62,7 +62,7 @@ declare const commands: {
|
|
|
62
62
|
}[];
|
|
63
63
|
forceUnicode: boolean;
|
|
64
64
|
}): Promise<void>;
|
|
65
|
-
executeClick(this: import("../driver").
|
|
65
|
+
executeClick(this: import("../driver").NovaWindows2Driver, clickArgs: {
|
|
66
66
|
elementId?: string;
|
|
67
67
|
x?: number;
|
|
68
68
|
y?: number;
|
|
@@ -72,7 +72,7 @@ declare const commands: {
|
|
|
72
72
|
times?: number;
|
|
73
73
|
interClickDelayMs?: number;
|
|
74
74
|
}): Promise<void>;
|
|
75
|
-
executeHover(this: import("../driver").
|
|
75
|
+
executeHover(this: import("../driver").NovaWindows2Driver, hoverArgs: {
|
|
76
76
|
startElementId?: string;
|
|
77
77
|
startX?: number;
|
|
78
78
|
startY?: number;
|
|
@@ -82,7 +82,7 @@ declare const commands: {
|
|
|
82
82
|
modifierKeys?: ("shift" | "ctrl" | "alt" | "win") | ("shift" | "ctrl" | "alt" | "win")[];
|
|
83
83
|
durationMs?: number;
|
|
84
84
|
}): Promise<void>;
|
|
85
|
-
executeScroll(this: import("../driver").
|
|
85
|
+
executeScroll(this: import("../driver").NovaWindows2Driver, scrollArgs: {
|
|
86
86
|
elementId?: string;
|
|
87
87
|
x?: number;
|
|
88
88
|
y?: number;
|
|
@@ -90,36 +90,36 @@ declare const commands: {
|
|
|
90
90
|
deltaY?: number;
|
|
91
91
|
modifierKeys?: ("shift" | "ctrl" | "alt" | "win") | ("shift" | "ctrl" | "alt" | "win")[];
|
|
92
92
|
}): Promise<void>;
|
|
93
|
-
getProperty(this: import("../driver").
|
|
94
|
-
getAttribute(this: import("../driver").
|
|
95
|
-
active(this: import("../driver").
|
|
96
|
-
getName(this: import("../driver").
|
|
97
|
-
getText(this: import("../driver").
|
|
98
|
-
clear(this: import("../driver").
|
|
99
|
-
setValue(this: import("../driver").
|
|
100
|
-
getElementRect(this: import("../driver").
|
|
101
|
-
elementDisplayed(this: import("../driver").
|
|
102
|
-
elementSelected(this: import("../driver").
|
|
103
|
-
elementEnabled(this: import("../driver").
|
|
104
|
-
click(this: import("../driver").
|
|
105
|
-
startPowerShellSession(this: import("../driver").
|
|
106
|
-
sendIsolatedPowerShellCommand(this: import("../driver").
|
|
107
|
-
sendPowerShellCommand(this: import("../driver").
|
|
108
|
-
terminatePowerShellSession(this: import("../driver").
|
|
109
|
-
performActions(this: import("../driver").
|
|
110
|
-
handleKeyActionSequence(this: import("../driver").
|
|
111
|
-
handlePointerActionSequence(this: import("../driver").
|
|
112
|
-
handleMousePointerActionSequence(this: import("../driver").
|
|
113
|
-
handleWheelActionSequence(this: import("../driver").
|
|
114
|
-
handleNullActionSequence(this: import("../driver").
|
|
115
|
-
handleMouseMoveAction(this: import("../driver").
|
|
116
|
-
handleKeyAction(this: import("../driver").
|
|
93
|
+
getProperty(this: import("../driver").NovaWindows2Driver, propertyName: string, elementId: string): Promise<string>;
|
|
94
|
+
getAttribute(this: import("../driver").NovaWindows2Driver, propertyName: string, elementId: string): Promise<string>;
|
|
95
|
+
active(this: import("../driver").NovaWindows2Driver): Promise<import("@appium/types").Element>;
|
|
96
|
+
getName(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<string>;
|
|
97
|
+
getText(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<string>;
|
|
98
|
+
clear(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<void>;
|
|
99
|
+
setValue(this: import("../driver").NovaWindows2Driver, value: string | string[], elementId: string): Promise<void>;
|
|
100
|
+
getElementRect(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<import("@appium/types").Rect>;
|
|
101
|
+
elementDisplayed(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<boolean>;
|
|
102
|
+
elementSelected(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<boolean>;
|
|
103
|
+
elementEnabled(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<boolean>;
|
|
104
|
+
click(this: import("../driver").NovaWindows2Driver, elementId: string): Promise<void>;
|
|
105
|
+
startPowerShellSession(this: import("../driver").NovaWindows2Driver): Promise<void>;
|
|
106
|
+
sendIsolatedPowerShellCommand(this: import("../driver").NovaWindows2Driver, command: string): Promise<string>;
|
|
107
|
+
sendPowerShellCommand(this: import("../driver").NovaWindows2Driver, command: string): Promise<string>;
|
|
108
|
+
terminatePowerShellSession(this: import("../driver").NovaWindows2Driver): Promise<void>;
|
|
109
|
+
performActions(this: import("../driver").NovaWindows2Driver, actionSequences: import("@appium/types").ActionSequence[]): Promise<void>;
|
|
110
|
+
handleKeyActionSequence(this: import("../driver").NovaWindows2Driver, actionSequence: import("@appium/types").KeyActionSequence): Promise<void>;
|
|
111
|
+
handlePointerActionSequence(this: import("../driver").NovaWindows2Driver, actionSequence: import("@appium/types").PointerActionSequence): Promise<void>;
|
|
112
|
+
handleMousePointerActionSequence(this: import("../driver").NovaWindows2Driver, actionSequence: import("@appium/types").PointerActionSequence): Promise<void>;
|
|
113
|
+
handleWheelActionSequence(this: import("../driver").NovaWindows2Driver, actionSequence: import("@appium/types").WheelActionSequence): Promise<void>;
|
|
114
|
+
handleNullActionSequence(this: import("../driver").NovaWindows2Driver, actionSequence: import("@appium/types").NullActionSequence): Promise<void>;
|
|
115
|
+
handleMouseMoveAction(this: import("../driver").NovaWindows2Driver, action: import("@appium/types").PointerMoveAction | import("@appium/types").ScrollAction): Promise<void>;
|
|
116
|
+
handleKeyAction(this: import("../driver").NovaWindows2Driver, action: import("@appium/types").KeyAction): Promise<void>;
|
|
117
117
|
};
|
|
118
118
|
type Commands = {
|
|
119
119
|
[key in keyof typeof commands]: typeof commands[key];
|
|
120
120
|
};
|
|
121
121
|
declare module '../driver' {
|
|
122
|
-
interface
|
|
122
|
+
interface NovaWindows2Driver extends Commands {
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
export default commands;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAmBkwV,CAAC;;;mBAAurB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;iBAAknH,CAAC;SAAgB,CAAC;SAAgB,CAAC;cAAqB,CAAC;oBAA8B,CAAC;kBAA+G,CAAC;aAAoB,CAAC;yBAAgC,CAAC;;;sBAAgzG,CAAC;cAAqB,CAAC;cAAqB,CAAC;oBAA2B,CAAC;YAAmB,CAAC;YAAmB,CAAC;oBAA2B,CAAC;kBAA4F,CAAC;;;iBAA04H,CAAC;SAAgB,CAAC;SAAgB,CAAC;cAAqB,CAAC;cAAqB,CAAC;oBAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CAVv0tB,CAAC;AAEF,KAAK,QAAQ,GAAG;KACX,GAAG,IAAI,MAAM,OAAO,QAAQ,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC;CACvD,CAAC;AAEF,OAAO,QAAQ,WAAW,CAAC;IACvB,UAAU,kBAAmB,SAAQ,QAAQ;KAAI;CACpD;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function startPowerShellSession(this:
|
|
3
|
-
export declare function sendIsolatedPowerShellCommand(this:
|
|
4
|
-
export declare function sendPowerShellCommand(this:
|
|
5
|
-
export declare function terminatePowerShellSession(this:
|
|
1
|
+
import { NovaWindows2Driver } from '../driver';
|
|
2
|
+
export declare function startPowerShellSession(this: NovaWindows2Driver): Promise<void>;
|
|
3
|
+
export declare function sendIsolatedPowerShellCommand(this: NovaWindows2Driver, command: string): Promise<string>;
|
|
4
|
+
export declare function sendPowerShellCommand(this: NovaWindows2Driver, command: string): Promise<string>;
|
|
5
|
+
export declare function terminatePowerShellSession(this: NovaWindows2Driver): Promise<void>;
|
|
6
6
|
//# sourceMappingURL=powershell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powershell.d.ts","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"powershell.d.ts","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA+C/C,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFpF;AAED,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyE9G;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBtG;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxF"}
|
|
@@ -14,10 +14,41 @@ const INIT_CACHE_REQUEST = /* ps1 */ `($cacheRequest = New-Object System.Windows
|
|
|
14
14
|
const INIT_ROOT_ELEMENT = /* ps1 */ `$rootElement = [AutomationElement]::RootElement`;
|
|
15
15
|
const NULL_ROOT_ELEMENT = /* ps1 */ `$rootElement = $null`;
|
|
16
16
|
const INIT_ELEMENT_TABLE = /* ps1 */ `$elementTable = New-Object System.Collections.Generic.Dictionary[[string]\`,[AutomationElement]]`;
|
|
17
|
+
async function executeRawCommand(driver, command) {
|
|
18
|
+
const magicNumber = 0xF2EE;
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
20
|
+
const powerShell = driver.powerShell;
|
|
21
|
+
driver.powerShellStdOut = '';
|
|
22
|
+
driver.powerShellStdErr = '';
|
|
23
|
+
powerShell.stdin.write(`${command}\n`);
|
|
24
|
+
powerShell.stdin.write(/* ps1 */ `Write-Output $([char]0x${magicNumber.toString(16)})\n`);
|
|
25
|
+
return await new Promise((resolve, reject) => {
|
|
26
|
+
const onClose = (code) => {
|
|
27
|
+
reject(new base_driver_1.errors.UnknownError(`PowerShell process exited unexpectedly with code ${code}`));
|
|
28
|
+
driver.powerShell = undefined; // Clear the reference as the process is dead
|
|
29
|
+
};
|
|
30
|
+
powerShell.on('close', onClose);
|
|
31
|
+
const onData = ((chunk) => {
|
|
32
|
+
const magicChar = String.fromCharCode(magicNumber);
|
|
33
|
+
if (chunk.toString().includes(magicChar)) {
|
|
34
|
+
powerShell.stdout.off('data', onData);
|
|
35
|
+
powerShell.off('close', onClose);
|
|
36
|
+
if (driver.powerShellStdErr) {
|
|
37
|
+
reject(new base_driver_1.errors.UnknownError(driver.powerShellStdErr));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
resolve(driver.powerShellStdOut.replace(`${magicChar}`, '').trim());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}).bind(driver);
|
|
44
|
+
powerShell.stdout.on('data', onData);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
17
47
|
async function startPowerShellSession() {
|
|
48
|
+
this.log.debug('Starting new PowerShell session...');
|
|
18
49
|
const powerShell = (0, node_child_process_1.spawn)('powershell.exe', ['-NoExit', '-Command', '-']);
|
|
19
50
|
powerShell.stdout.setEncoding('utf8');
|
|
20
|
-
powerShell.
|
|
51
|
+
powerShell.stderr.setEncoding('utf8');
|
|
21
52
|
powerShell.stdout.on('data', (chunk) => {
|
|
22
53
|
this.powerShellStdOut += chunk.toString();
|
|
23
54
|
});
|
|
@@ -35,23 +66,25 @@ async function startPowerShellSession() {
|
|
|
35
66
|
for (const envVar of envVars) {
|
|
36
67
|
this.caps.appWorkingDir = this.caps.appWorkingDir.replaceAll(`%${envVar}%`, process.env[envVar.toUpperCase()] ?? '');
|
|
37
68
|
}
|
|
38
|
-
|
|
69
|
+
// Use raw execution to bypass queue
|
|
70
|
+
await executeRawCommand(this, `Set-Location -Path '${this.caps.appWorkingDir}'`);
|
|
39
71
|
}
|
|
40
|
-
|
|
41
|
-
await this
|
|
42
|
-
await this
|
|
43
|
-
await this
|
|
44
|
-
await this
|
|
72
|
+
// Use raw execution to bypass queue
|
|
73
|
+
await executeRawCommand(this, SET_UTF8_ENCODING);
|
|
74
|
+
await executeRawCommand(this, ADD_NECESSARY_ASSEMBLIES);
|
|
75
|
+
await executeRawCommand(this, USE_UI_AUTOMATION_CLIENT);
|
|
76
|
+
await executeRawCommand(this, INIT_CACHE_REQUEST);
|
|
77
|
+
await executeRawCommand(this, INIT_ELEMENT_TABLE);
|
|
45
78
|
// initialize functions
|
|
46
|
-
await this
|
|
47
|
-
await this
|
|
79
|
+
await executeRawCommand(this, functions_1.PAGE_SOURCE);
|
|
80
|
+
await executeRawCommand(this, functions_1.FIND_CHILDREN_RECURSIVELY);
|
|
48
81
|
if ((!this.caps.app && !this.caps.appTopLevelWindow) || (!this.caps.app || this.caps.app.toLowerCase() === 'none')) {
|
|
49
82
|
this.log.info(`No app or top-level window specified in capabilities. Setting root element to null.`);
|
|
50
|
-
await this
|
|
83
|
+
await executeRawCommand(this, NULL_ROOT_ELEMENT);
|
|
51
84
|
}
|
|
52
85
|
if (this.caps.app && this.caps.app.toLowerCase() === 'root') {
|
|
53
86
|
this.log.info(`'root' specified as app in capabilities. Setting root element to desktop root.`);
|
|
54
|
-
await this
|
|
87
|
+
await executeRawCommand(this, INIT_ROOT_ELEMENT);
|
|
55
88
|
}
|
|
56
89
|
if (this.caps.app && this.caps.app.toLowerCase() !== 'none' && this.caps.app.toLowerCase() !== 'root') {
|
|
57
90
|
this.log.info(`Application path specified in capabilities: ${this.caps.app}`);
|
|
@@ -141,41 +174,21 @@ async function sendIsolatedPowerShellCommand(command) {
|
|
|
141
174
|
}
|
|
142
175
|
}
|
|
143
176
|
async function sendPowerShellCommand(command) {
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
};
|
|
160
|
-
powerShell.on('close', onClose);
|
|
161
|
-
const onData = ((chunk) => {
|
|
162
|
-
const magicChar = String.fromCharCode(magicNumber);
|
|
163
|
-
if (chunk.toString().includes(magicChar)) {
|
|
164
|
-
powerShell.stdout.off('data', onData);
|
|
165
|
-
powerShell.off('close', onClose);
|
|
166
|
-
if (this.powerShellStdErr) {
|
|
167
|
-
reject(new base_driver_1.errors.UnknownError(this.powerShellStdErr));
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
resolve(this.powerShellStdOut.replace(`${magicChar}`, '').trim());
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}).bind(this);
|
|
174
|
-
powerShell.stdout.on('data', onData);
|
|
175
|
-
});
|
|
176
|
-
// commented out for now to avoid cluttering the logs with long command outputs
|
|
177
|
-
// this.log.debug(`PowerShell command executed:\n${command}\n\nCommand output below:\n${result}\n --------`);
|
|
178
|
-
return result;
|
|
177
|
+
const nextCommand = async () => {
|
|
178
|
+
if (!this.powerShell) {
|
|
179
|
+
this.log.warn('PowerShell session not running. It was either closed or has crashed. Attempting to start a new session...');
|
|
180
|
+
await this.startPowerShellSession();
|
|
181
|
+
}
|
|
182
|
+
// Use the extracted raw command function
|
|
183
|
+
return await executeRawCommand(this, command);
|
|
184
|
+
};
|
|
185
|
+
// Chain the command to the queue
|
|
186
|
+
// Use .catch to ignore previous failures, then .then to queue this command.
|
|
187
|
+
// This prevents re-running this command if it fails (no infinite loop).
|
|
188
|
+
this.commandQueue = this.commandQueue
|
|
189
|
+
.catch(() => { })
|
|
190
|
+
.then(nextCommand);
|
|
191
|
+
return this.commandQueue;
|
|
179
192
|
}
|
|
180
193
|
async function terminatePowerShellSession() {
|
|
181
194
|
if (!this.powerShell) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powershell.js","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"powershell.js","sourceRoot":"","sources":["../../../lib/commands/powershell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Orientation } from '@appium/types';
|
|
2
|
-
import {
|
|
3
|
-
export declare function getOrientation(this:
|
|
2
|
+
import { NovaWindows2Driver } from '../driver';
|
|
3
|
+
export declare function getOrientation(this: NovaWindows2Driver): Orientation;
|
|
4
4
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../lib/commands/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../lib/commands/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAEpE"}
|
package/build/lib/driver.d.ts
CHANGED
|
@@ -12,13 +12,17 @@ type KeyboardState = {
|
|
|
12
12
|
alt: boolean;
|
|
13
13
|
};
|
|
14
14
|
declare const LOCATION_STRATEGIES: readonly ["id", "name", "xpath", "tag name", "class name", "accessibility id", "-windows uiautomation"];
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class NovaWindows2Driver extends BaseDriver<NovaWindowsDriverConstraints, StringRecord> {
|
|
16
16
|
isPowerShellSessionStarted: boolean;
|
|
17
17
|
powerShell?: ChildProcessWithoutNullStreams;
|
|
18
18
|
powerShellStdOut: string;
|
|
19
19
|
powerShellStdErr: string;
|
|
20
|
+
commandQueue: Promise<any>;
|
|
20
21
|
keyboardState: KeyboardState;
|
|
22
|
+
activeCommands: number;
|
|
21
23
|
constructor(opts?: InitialOpts, shouldValidateCaps?: boolean);
|
|
24
|
+
executeCommand(cmd: string, ...args: any[]): Promise<any>;
|
|
25
|
+
startNewCommandTimeout(): Promise<void>;
|
|
22
26
|
findElement(strategy: string, selector: string): Promise<Element>;
|
|
23
27
|
findElements(strategy: string, selector: string): Promise<Element[]>;
|
|
24
28
|
findElementFromElement(strategy: string, selector: string, elementId: string): Promise<Element>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAEH,4BAA4B,EAC/B,MAAM,eAAe,CAAC;AAmBvB,OAAO,KAAK,EACR,0BAA0B,EAC1B,UAAU,EACV,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,eAAe,CAAC;AAEvB,KAAK,wBAAwB,GAAG,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC5E,KAAK,iCAAiC,GAAG,0BAA0B,CAAC,4BAA4B,CAAC,CAAC;AAElG,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CAChB,CAAA;AAED,QAAA,MAAM,mBAAmB,yGAQd,CAAC;AAEZ,qBAAa,
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAEH,4BAA4B,EAC/B,MAAM,eAAe,CAAC;AAmBvB,OAAO,KAAK,EACR,0BAA0B,EAC1B,UAAU,EACV,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,eAAe,CAAC;AAEvB,KAAK,wBAAwB,GAAG,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC5E,KAAK,iCAAiC,GAAG,0BAA0B,CAAC,4BAA4B,CAAC,CAAC;AAElG,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;CAChB,CAAA;AAED,QAAA,MAAM,mBAAmB,yGAQd,CAAC;AAEZ,qBAAa,kBAAmB,SAAQ,UAAU,CAAC,4BAA4B,EAAE,YAAY,CAAC;IAC1F,0BAA0B,EAAE,OAAO,CAAS;IAC5C,UAAU,CAAC,EAAE,8BAA8B,CAAC;IAC5C,gBAAgB,EAAE,MAAM,CAAM;IAC9B,gBAAgB,EAAE,MAAM,CAAM;IAC9B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAqB;IAC/C,aAAa,EAAE,aAAa,CAM1B;IAEF,cAAc,EAAE,MAAM,CAAK;gBAEf,IAAI,GAAE,WAA+B,EAAE,kBAAkB,UAAO;IAW7D,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IASzD,sBAAsB;IAOtB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKpE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/F,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKlG,WAAW,CAAC,QAAQ,EAAE,OAAO,mBAAmB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7H,WAAW,CAAC,QAAQ,EAAE,OAAO,mBAAmB,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C5H,aAAa,CACxB,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,wBAAwB,EAClC,OAAO,CAAC,EAAE,wBAAwB,EAClC,UAAU,CAAC,EAAE,UAAU,EAAE,GAC1B,OAAO,CAAC,iCAAiC,CAAC;IA0C9B,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBlF,OAAO,CAAC,eAAe;CA4B1B"}
|
package/build/lib/driver.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.NovaWindows2Driver = void 0;
|
|
7
7
|
const base_driver_1 = require("@appium/base-driver");
|
|
8
8
|
const support_1 = require("appium/support");
|
|
9
9
|
const commands_1 = __importDefault(require("./commands"));
|
|
@@ -21,11 +21,12 @@ const LOCATION_STRATEGIES = Object.freeze([
|
|
|
21
21
|
'accessibility id',
|
|
22
22
|
'-windows uiautomation',
|
|
23
23
|
]);
|
|
24
|
-
class
|
|
24
|
+
class NovaWindows2Driver extends base_driver_1.BaseDriver {
|
|
25
25
|
isPowerShellSessionStarted = false;
|
|
26
26
|
powerShell;
|
|
27
27
|
powerShellStdOut = '';
|
|
28
28
|
powerShellStdErr = '';
|
|
29
|
+
commandQueue = Promise.resolve();
|
|
29
30
|
keyboardState = {
|
|
30
31
|
pressed: new Set(),
|
|
31
32
|
alt: false,
|
|
@@ -33,14 +34,30 @@ class NovaWindowsDriver extends base_driver_1.BaseDriver {
|
|
|
33
34
|
meta: false,
|
|
34
35
|
shift: false,
|
|
35
36
|
};
|
|
37
|
+
activeCommands = 0;
|
|
36
38
|
constructor(opts = {}, shouldValidateCaps = true) {
|
|
37
39
|
super(opts, shouldValidateCaps);
|
|
38
40
|
this.locatorStrategies = [...LOCATION_STRATEGIES];
|
|
39
41
|
this.desiredCapConstraints = constraints_1.UI_AUTOMATION_DRIVER_CONSTRAINTS;
|
|
40
42
|
for (const key in commands_1.default) { // TODO: create a decorator that will do that for the class
|
|
41
|
-
|
|
43
|
+
NovaWindows2Driver.prototype[key] = commands_1.default[key].bind(this);
|
|
42
44
|
}
|
|
43
45
|
}
|
|
46
|
+
async executeCommand(cmd, ...args) {
|
|
47
|
+
this.activeCommands++;
|
|
48
|
+
try {
|
|
49
|
+
return await super.executeCommand(cmd, ...args);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
this.activeCommands--;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async startNewCommandTimeout() {
|
|
56
|
+
if (this.activeCommands > 0) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
await super.startNewCommandTimeout();
|
|
60
|
+
}
|
|
44
61
|
async findElement(strategy, selector) {
|
|
45
62
|
[strategy, selector] = this.processSelector(strategy, selector);
|
|
46
63
|
return super.findElement(strategy, selector);
|
|
@@ -177,5 +194,5 @@ class NovaWindowsDriver extends base_driver_1.BaseDriver {
|
|
|
177
194
|
return [strategy, selector];
|
|
178
195
|
}
|
|
179
196
|
}
|
|
180
|
-
exports.
|
|
197
|
+
exports.NovaWindows2Driver = NovaWindows2Driver;
|
|
181
198
|
//# sourceMappingURL=driver.js.map
|
package/build/lib/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":";;;;;;AACA,qDAA0E;AAC1E,4CAAwC;AACxC,0DAAkC;AAClC,+CAGuB;AACvB,iCAEgB;AAChB,6CAWsB;AACtB,mCAA2C;AAC3C,4CAAkD;AAsBlD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,IAAI;IACJ,MAAM;IACN,OAAO;IACP,UAAU;IACV,YAAY;IACZ,kBAAkB;IAClB,uBAAuB;CACjB,CAAC,CAAC;AAEZ,MAAa,
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
const axios = require('axios');
|
|
2
|
+
|
|
3
|
+
// Configuration
|
|
4
|
+
// Appium 2.x defaults to no base path. If you are using Appium 1.x or have configured a base path, add it here (e.g., http://.../wd/hub)
|
|
5
|
+
const hubUrl = 'http://192.168.196.155:4723';
|
|
6
|
+
|
|
7
|
+
const capabilities = {
|
|
8
|
+
"capabilities": {
|
|
9
|
+
"alwaysMatch": {
|
|
10
|
+
"platformName": "Windows",
|
|
11
|
+
"appium:automationName": "NovaWindows2",
|
|
12
|
+
"appium:app": "Root"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
async function runTest() {
|
|
18
|
+
let sessionId;
|
|
19
|
+
try {
|
|
20
|
+
// 1. Create Session
|
|
21
|
+
console.log(`Sending POST to ${hubUrl}/session to create session...`);
|
|
22
|
+
const sessionRes = await axios.post(`${hubUrl}/session`, capabilities);
|
|
23
|
+
|
|
24
|
+
// Appium sends sessionId in `value.sessionId` (W3C) or just `sessionId` (JSONWP)
|
|
25
|
+
if (sessionRes.data.value && sessionRes.data.value.sessionId) {
|
|
26
|
+
sessionId = sessionRes.data.value.sessionId;
|
|
27
|
+
} else if (sessionRes.data.sessionId) {
|
|
28
|
+
sessionId = sessionRes.data.sessionId;
|
|
29
|
+
} else {
|
|
30
|
+
throw new Error('Failed to parse sessionId from response: ' + JSON.stringify(sessionRes.data));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
console.log(`Session created with ID: ${sessionId}`);
|
|
34
|
+
|
|
35
|
+
// 2. Get Page Source
|
|
36
|
+
console.log(`Sending GET to ${hubUrl}/session/${sessionId}/source to get page source...`);
|
|
37
|
+
const sourceRes = await axios.get(`${hubUrl}/session/${sessionId}/source`);
|
|
38
|
+
const source = sourceRes.data.value; // W3C standard response structure { value: ... }
|
|
39
|
+
|
|
40
|
+
console.log('--- Page Source Start ---');
|
|
41
|
+
console.log(source);
|
|
42
|
+
console.log('--- Page Source End ---');
|
|
43
|
+
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('Error occurred:');
|
|
46
|
+
if (error.response) {
|
|
47
|
+
console.error(`Status: ${error.response.status}`);
|
|
48
|
+
console.error('Data:', JSON.stringify(error.response.data, null, 2));
|
|
49
|
+
if (error.response.status === 404) {
|
|
50
|
+
console.error('Hint: The Appium server might be using a different base path (e.g., /wd/hub). Check your server configuration.');
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
console.error(error.message);
|
|
54
|
+
}
|
|
55
|
+
} finally {
|
|
56
|
+
if (sessionId) {
|
|
57
|
+
// 3. Delete Session
|
|
58
|
+
try {
|
|
59
|
+
console.log(`Deleting session ${sessionId}...`);
|
|
60
|
+
await axios.delete(`${hubUrl}/session/${sessionId}`);
|
|
61
|
+
console.log('Session deleted.');
|
|
62
|
+
} catch (delErr) {
|
|
63
|
+
console.error('Failed to delete session:', delErr.message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
runTest();
|