@dyyz1993/agent-browser 0.13.2 → 0.24.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/README.md +108 -0
- package/bin/agent-browser-darwin-arm64 +0 -0
- package/bin/agent-browser-darwin-x64 +0 -0
- package/bin/agent-browser-linux-arm64 +0 -0
- package/bin/agent-browser-linux-x64 +0 -0
- package/bin/agent-browser-win32-x64.exe +0 -0
- package/dist/__tests__/e2e/utils/test-helpers.d.ts +1 -0
- package/dist/__tests__/e2e/utils/test-helpers.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/test-helpers.js +14 -1
- package/dist/__tests__/e2e/utils/test-helpers.js.map +1 -1
- package/dist/__tests__/utils/free-port.d.ts +2 -0
- package/dist/__tests__/utils/free-port.d.ts.map +1 -0
- package/dist/__tests__/utils/free-port.js +18 -0
- package/dist/__tests__/utils/free-port.js.map +1 -0
- package/dist/__tests__/utils/parseCli.d.ts.map +1 -1
- package/dist/__tests__/utils/parseCli.js +83 -9
- package/dist/__tests__/utils/parseCli.js.map +1 -1
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +298 -9
- package/dist/actions.js.map +1 -1
- package/dist/browser.d.ts +11 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +75 -19
- package/dist/browser.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +172 -15
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/connection.d.ts +13 -0
- package/dist/cli/connection.d.ts.map +1 -1
- package/dist/cli/connection.js +137 -48
- package/dist/cli/connection.js.map +1 -1
- package/dist/cli/flags.d.ts.map +1 -1
- package/dist/cli/flags.js +0 -1
- package/dist/cli/flags.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +63 -22
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +0 -32
- package/dist/cli/output.js.map +1 -1
- package/dist/cli.js +20 -2
- package/dist/cli.js.map +1 -1
- package/dist/daemon.d.ts +1 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +291 -264
- package/dist/daemon.js.map +1 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +1 -1
- package/dist/diff.js.map +1 -1
- package/dist/flow/exporters/cypress.d.ts +9 -0
- package/dist/flow/exporters/cypress.d.ts.map +1 -0
- package/dist/flow/exporters/cypress.js +256 -0
- package/dist/flow/exporters/cypress.js.map +1 -0
- package/dist/flow/exporters/index.d.ts +6 -0
- package/dist/flow/exporters/index.d.ts.map +1 -0
- package/dist/flow/exporters/index.js +5 -0
- package/dist/flow/exporters/index.js.map +1 -0
- package/dist/flow/exporters/playwright.d.ts +20 -0
- package/dist/flow/exporters/playwright.d.ts.map +1 -0
- package/dist/flow/exporters/playwright.js +175 -0
- package/dist/flow/exporters/playwright.js.map +1 -0
- package/dist/flow/exporters/python.d.ts +20 -0
- package/dist/flow/exporters/python.d.ts.map +1 -0
- package/dist/flow/exporters/python.js +163 -0
- package/dist/flow/exporters/python.js.map +1 -0
- package/dist/flow/exporters/selenium.d.ts +9 -0
- package/dist/flow/exporters/selenium.d.ts.map +1 -0
- package/dist/flow/exporters/selenium.js +298 -0
- package/dist/flow/exporters/selenium.js.map +1 -0
- package/dist/flow/exporters/types.d.ts +13 -0
- package/dist/flow/exporters/types.d.ts.map +1 -0
- package/dist/flow/exporters/types.js +2 -0
- package/dist/flow/exporters/types.js.map +1 -0
- package/dist/flow/flow-executor.d.ts +57 -0
- package/dist/flow/flow-executor.d.ts.map +1 -0
- package/dist/flow/flow-executor.js +1263 -0
- package/dist/flow/flow-executor.js.map +1 -0
- package/dist/flow/index.d.ts +15 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +10 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/output.d.ts +11 -0
- package/dist/flow/output.d.ts.map +1 -0
- package/dist/flow/output.js +84 -0
- package/dist/flow/output.js.map +1 -0
- package/dist/flow/plugin-system.d.ts +48 -0
- package/dist/flow/plugin-system.d.ts.map +1 -0
- package/dist/flow/plugin-system.js +132 -0
- package/dist/flow/plugin-system.js.map +1 -0
- package/dist/flow/plugins/file-output-plugin.d.ts +8 -0
- package/dist/flow/plugins/file-output-plugin.d.ts.map +1 -0
- package/dist/flow/plugins/file-output-plugin.js +31 -0
- package/dist/flow/plugins/file-output-plugin.js.map +1 -0
- package/dist/flow/plugins/index.d.ts +4 -0
- package/dist/flow/plugins/index.d.ts.map +1 -0
- package/dist/flow/plugins/index.js +4 -0
- package/dist/flow/plugins/index.js.map +1 -0
- package/dist/flow/plugins/logging-plugin.d.ts +7 -0
- package/dist/flow/plugins/logging-plugin.d.ts.map +1 -0
- package/dist/flow/plugins/logging-plugin.js +40 -0
- package/dist/flow/plugins/logging-plugin.js.map +1 -0
- package/dist/flow/plugins/webhook-plugin.d.ts +7 -0
- package/dist/flow/plugins/webhook-plugin.d.ts.map +1 -0
- package/dist/flow/plugins/webhook-plugin.js +24 -0
- package/dist/flow/plugins/webhook-plugin.js.map +1 -0
- package/dist/flow/presets/index.d.ts +10 -0
- package/dist/flow/presets/index.d.ts.map +1 -0
- package/dist/flow/presets/index.js +29 -0
- package/dist/flow/presets/index.js.map +1 -0
- package/dist/flow/recorder-to-flow.d.ts +70 -0
- package/dist/flow/recorder-to-flow.d.ts.map +1 -0
- package/dist/flow/recorder-to-flow.js +392 -0
- package/dist/flow/recorder-to-flow.js.map +1 -0
- package/dist/flow/site-manager.d.ts +24 -0
- package/dist/flow/site-manager.d.ts.map +1 -0
- package/dist/flow/site-manager.js +125 -0
- package/dist/flow/site-manager.js.map +1 -0
- package/dist/flow/types.d.ts +196 -0
- package/dist/flow/types.d.ts.map +1 -0
- package/dist/flow/types.js +2 -0
- package/dist/flow/types.js.map +1 -0
- package/dist/flow/yaml-parser.d.ts +15 -0
- package/dist/flow/yaml-parser.d.ts.map +1 -0
- package/dist/flow/yaml-parser.js +216 -0
- package/dist/flow/yaml-parser.js.map +1 -0
- package/dist/human-mouse.d.ts.map +1 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +15 -11
- package/dist/protocol.js.map +1 -1
- package/dist/rc-config.d.ts.map +1 -1
- package/dist/rc-config.js +1 -2
- package/dist/rc-config.js.map +1 -1
- package/dist/recorder/inject.js +730 -332
- package/dist/snapshot-store.d.ts +83 -0
- package/dist/snapshot-store.d.ts.map +1 -0
- package/dist/snapshot-store.js +112 -0
- package/dist/snapshot-store.js.map +1 -0
- package/dist/snapshot.d.ts +6 -7
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +471 -17
- package/dist/snapshot.js.map +1 -1
- package/dist/stream-server-standalone.d.ts.map +1 -1
- package/dist/stream-server-standalone.js.map +1 -1
- package/dist/stream-server.d.ts.map +1 -1
- package/dist/stream-server.js +38 -13
- package/dist/stream-server.js.map +1 -1
- package/dist/test-live.js +5 -5
- package/dist/test-live.js.map +1 -1
- package/dist/types.d.ts +13 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/viewer-script.d.ts.map +1 -1
- package/dist/viewer-script.js +12 -6
- package/dist/viewer-script.js.map +1 -1
- package/package.json +18 -5
- package/skills/agent-browser/SKILL.md +151 -3
- package/dist/ios-actions.d.ts +0 -11
- package/dist/ios-actions.d.ts.map +0 -1
- package/dist/ios-actions.js +0 -228
- package/dist/ios-actions.js.map +0 -1
- package/dist/ios-manager.d.ts +0 -266
- package/dist/ios-manager.d.ts.map +0 -1
- package/dist/ios-manager.js +0 -1076
- package/dist/ios-manager.js.map +0 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
export class PlaywrightExporter {
|
|
2
|
+
format = 'playwright';
|
|
3
|
+
extension = 'ts';
|
|
4
|
+
export(steps, options) {
|
|
5
|
+
const lines = [];
|
|
6
|
+
const headless = options?.headless !== false;
|
|
7
|
+
lines.push(`import { chromium } from 'playwright';`);
|
|
8
|
+
lines.push('');
|
|
9
|
+
lines.push('(async () => {');
|
|
10
|
+
lines.push(` const browser = await chromium.launch({ headless: ${headless} });`);
|
|
11
|
+
if (options?.timeout) {
|
|
12
|
+
lines.push(` const defaultTimeout = ${options.timeout};`);
|
|
13
|
+
}
|
|
14
|
+
lines.push(' const page = await browser.newPage();');
|
|
15
|
+
lines.push('');
|
|
16
|
+
for (let i = 0; i < steps.length; i++) {
|
|
17
|
+
const step = steps[i];
|
|
18
|
+
const stepNum = i + 1;
|
|
19
|
+
const comment = `// Step ${stepNum}: ${step.id} (${step.action})`;
|
|
20
|
+
lines.push(` ${comment}`);
|
|
21
|
+
switch (step.action) {
|
|
22
|
+
case 'navigate':
|
|
23
|
+
this.emitNavigate(lines, step, options);
|
|
24
|
+
break;
|
|
25
|
+
case 'click':
|
|
26
|
+
this.emitClick(lines, step);
|
|
27
|
+
break;
|
|
28
|
+
case 'fill':
|
|
29
|
+
this.emitFill(lines, step);
|
|
30
|
+
break;
|
|
31
|
+
case 'press':
|
|
32
|
+
this.emitPress(lines, step);
|
|
33
|
+
break;
|
|
34
|
+
case 'scroll':
|
|
35
|
+
this.emitScroll(lines, step);
|
|
36
|
+
break;
|
|
37
|
+
case 'wait':
|
|
38
|
+
this.emitWait(lines, step);
|
|
39
|
+
break;
|
|
40
|
+
case 'extract':
|
|
41
|
+
this.emitExtract(lines, step);
|
|
42
|
+
break;
|
|
43
|
+
case 'eval':
|
|
44
|
+
this.emitEval(lines, step);
|
|
45
|
+
break;
|
|
46
|
+
case 'screenshot':
|
|
47
|
+
this.emitScreenshot(lines, step);
|
|
48
|
+
break;
|
|
49
|
+
case 'snapshot':
|
|
50
|
+
lines.push(` // snapshot step - informational only`);
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
lines.push(` // TODO: unsupported action "${step.action}"`);
|
|
54
|
+
}
|
|
55
|
+
lines.push('');
|
|
56
|
+
}
|
|
57
|
+
lines.push(' await browser.close();');
|
|
58
|
+
lines.push('})();');
|
|
59
|
+
return lines.join('\n');
|
|
60
|
+
}
|
|
61
|
+
emitNavigate(lines, step, options) {
|
|
62
|
+
const url = step.url || '';
|
|
63
|
+
const resolvedUrl = this.resolveUrl(url, options?.baseUrl);
|
|
64
|
+
lines.push(` await page.goto('${resolvedUrl}');`);
|
|
65
|
+
lines.push(` await page.waitForLoadState('domcontentloaded');`);
|
|
66
|
+
if (step.waitAfter) {
|
|
67
|
+
lines.push(` await page.waitForLoadState('${step.waitAfter}');`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
emitClick(lines, step) {
|
|
71
|
+
const selector = step.selector || '';
|
|
72
|
+
this.emitFallbackComment(lines, step);
|
|
73
|
+
lines.push(` await page.locator('${selector}').click();`);
|
|
74
|
+
if (step.waitForNavigation) {
|
|
75
|
+
lines.push(` await page.waitForLoadState('${step.waitForNavigation}');`);
|
|
76
|
+
}
|
|
77
|
+
else if (step.waitAfter) {
|
|
78
|
+
lines.push(` await page.waitForLoadState('${step.waitAfter}');`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
emitFill(lines, step) {
|
|
82
|
+
const selector = step.selector || '';
|
|
83
|
+
const value = this.templateValue(step.value || '');
|
|
84
|
+
this.emitFallbackComment(lines, step);
|
|
85
|
+
lines.push(` await page.locator('${selector}').fill(${value});`);
|
|
86
|
+
}
|
|
87
|
+
emitPress(lines, step) {
|
|
88
|
+
const key = step.value || 'Enter';
|
|
89
|
+
lines.push(` await page.keyboard.press('${key}');`);
|
|
90
|
+
}
|
|
91
|
+
emitScroll(lines, step) {
|
|
92
|
+
const direction = step.scrollDirection || step.value || 'down';
|
|
93
|
+
const amount = step.scrollAmount || 300;
|
|
94
|
+
const sign = direction === 'up' ? '-' : '';
|
|
95
|
+
lines.push(` await page.evaluate(() => window.scrollBy(0, ${sign}${amount}));`);
|
|
96
|
+
}
|
|
97
|
+
emitWait(lines, step) {
|
|
98
|
+
if (step.selector) {
|
|
99
|
+
lines.push(` await page.locator('${step.selector}').waitFor({ state: 'visible'${step.timeout ? `, timeout: ${step.timeout}` : ''} });`);
|
|
100
|
+
}
|
|
101
|
+
else if (step.timeout) {
|
|
102
|
+
lines.push(` await page.waitForTimeout(${step.timeout});`);
|
|
103
|
+
}
|
|
104
|
+
else if (step.waitCondition === 'url_change') {
|
|
105
|
+
const pattern = step.waitUrlPattern || '';
|
|
106
|
+
lines.push(` await page.waitForURL('**${pattern}**');`);
|
|
107
|
+
}
|
|
108
|
+
else if (step.waitCondition === 'dom_stable') {
|
|
109
|
+
const ms = step.waitDomStableTimeout || 500;
|
|
110
|
+
lines.push(` await page.waitForTimeout(${ms});`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
emitExtract(lines, step) {
|
|
114
|
+
const container = step.container || 'body';
|
|
115
|
+
const fields = step.fields || {};
|
|
116
|
+
const varName = step.outputVar || 'extracted';
|
|
117
|
+
const entries = Object.entries(fields).map(([name, def]) => {
|
|
118
|
+
if (typeof def === 'string') {
|
|
119
|
+
return `${name}: el.querySelector('${def}')?.textContent?.trim() || ''`;
|
|
120
|
+
}
|
|
121
|
+
const ef = def;
|
|
122
|
+
if (ef.attribute) {
|
|
123
|
+
return `${name}: el.querySelector('${ef.selector}')?.getAttribute('${ef.attribute}') || ''`;
|
|
124
|
+
}
|
|
125
|
+
return `${name}: el.querySelector('${ef.selector}')?.textContent?.trim() || ''`;
|
|
126
|
+
});
|
|
127
|
+
lines.push(` const ${varName} = await page.$$eval('${container}', (els) =>`);
|
|
128
|
+
lines.push(` els.map((el) => ({ ${entries.join(', ')} }))`);
|
|
129
|
+
lines.push(` );`);
|
|
130
|
+
}
|
|
131
|
+
emitEval(lines, step) {
|
|
132
|
+
const script = step.value || '';
|
|
133
|
+
const varName = step.outputVar;
|
|
134
|
+
if (varName) {
|
|
135
|
+
lines.push(` const ${varName} = await page.evaluate(() => {`);
|
|
136
|
+
lines.push(` return ${script};`);
|
|
137
|
+
lines.push(` });`);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
lines.push(` await page.evaluate(() => {`);
|
|
141
|
+
lines.push(` ${script};`);
|
|
142
|
+
lines.push(` });`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
emitScreenshot(lines, step) {
|
|
146
|
+
if (step.selector) {
|
|
147
|
+
lines.push(` await page.locator('${step.selector}').screenshot();`);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
lines.push(` await page.screenshot({ fullPage: true });`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
emitFallbackComment(lines, step) {
|
|
154
|
+
if (step.fallbackSelectors && step.fallbackSelectors.length > 0) {
|
|
155
|
+
lines.push(` // Fallback selectors: ${step.fallbackSelectors.join(', ')}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
templateValue(value) {
|
|
159
|
+
const hasTemplate = /\$\{(\w+)\}/.test(value);
|
|
160
|
+
if (hasTemplate) {
|
|
161
|
+
return `'${value}'`;
|
|
162
|
+
}
|
|
163
|
+
return `'${value}'`;
|
|
164
|
+
}
|
|
165
|
+
resolveUrl(url, baseUrl) {
|
|
166
|
+
if (!url || url === 'back')
|
|
167
|
+
return url;
|
|
168
|
+
if (url.startsWith('http://') || url.startsWith('https://'))
|
|
169
|
+
return url;
|
|
170
|
+
if (baseUrl)
|
|
171
|
+
return `${baseUrl}${url.startsWith('/') ? '' : '/'}${url}`;
|
|
172
|
+
return url;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=playwright.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../../../src/flow/exporters/playwright.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { FlowStep } from '../types.js';
|
|
2
|
+
import type { ScriptExporter, ExportOptions } from './types.js';
|
|
3
|
+
export declare class PythonExporter implements ScriptExporter {
|
|
4
|
+
format: string;
|
|
5
|
+
extension: string;
|
|
6
|
+
export(steps: FlowStep[], options?: ExportOptions): string;
|
|
7
|
+
private emitNavigate;
|
|
8
|
+
private emitClick;
|
|
9
|
+
private emitFill;
|
|
10
|
+
private emitPress;
|
|
11
|
+
private emitScroll;
|
|
12
|
+
private emitWait;
|
|
13
|
+
private emitExtract;
|
|
14
|
+
private emitEval;
|
|
15
|
+
private emitScreenshot;
|
|
16
|
+
private emitFallbackComment;
|
|
17
|
+
private escapePy;
|
|
18
|
+
private resolveUrl;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/flow/exporters/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,cAAe,YAAW,cAAc;IACnD,MAAM,SAAY;IAClB,SAAS,SAAQ;IAEjB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IA6D1D,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
export class PythonExporter {
|
|
2
|
+
format = 'python';
|
|
3
|
+
extension = 'py';
|
|
4
|
+
export(steps, options) {
|
|
5
|
+
const lines = [];
|
|
6
|
+
const headless = options?.headless !== false;
|
|
7
|
+
lines.push('from playwright.sync_api import sync_playwright');
|
|
8
|
+
lines.push('');
|
|
9
|
+
lines.push('with sync_playwright() as p:');
|
|
10
|
+
lines.push(` browser = p.chromium.launch(headless=${headless})`);
|
|
11
|
+
lines.push(' page = browser.new_page()');
|
|
12
|
+
lines.push('');
|
|
13
|
+
for (let i = 0; i < steps.length; i++) {
|
|
14
|
+
const step = steps[i];
|
|
15
|
+
const stepNum = i + 1;
|
|
16
|
+
const comment = ` # Step ${stepNum}: ${step.id} (${step.action})`;
|
|
17
|
+
lines.push(comment);
|
|
18
|
+
switch (step.action) {
|
|
19
|
+
case 'navigate':
|
|
20
|
+
this.emitNavigate(lines, step, options);
|
|
21
|
+
break;
|
|
22
|
+
case 'click':
|
|
23
|
+
this.emitClick(lines, step);
|
|
24
|
+
break;
|
|
25
|
+
case 'fill':
|
|
26
|
+
this.emitFill(lines, step);
|
|
27
|
+
break;
|
|
28
|
+
case 'press':
|
|
29
|
+
this.emitPress(lines, step);
|
|
30
|
+
break;
|
|
31
|
+
case 'scroll':
|
|
32
|
+
this.emitScroll(lines, step);
|
|
33
|
+
break;
|
|
34
|
+
case 'wait':
|
|
35
|
+
this.emitWait(lines, step);
|
|
36
|
+
break;
|
|
37
|
+
case 'extract':
|
|
38
|
+
this.emitExtract(lines, step);
|
|
39
|
+
break;
|
|
40
|
+
case 'eval':
|
|
41
|
+
this.emitEval(lines, step);
|
|
42
|
+
break;
|
|
43
|
+
case 'screenshot':
|
|
44
|
+
this.emitScreenshot(lines, step);
|
|
45
|
+
break;
|
|
46
|
+
case 'snapshot':
|
|
47
|
+
lines.push(' # snapshot step - informational only');
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
lines.push(` # TODO: unsupported action "${step.action}"`);
|
|
51
|
+
}
|
|
52
|
+
lines.push('');
|
|
53
|
+
}
|
|
54
|
+
lines.push(' browser.close()');
|
|
55
|
+
return lines.join('\n');
|
|
56
|
+
}
|
|
57
|
+
emitNavigate(lines, step, options) {
|
|
58
|
+
const url = step.url || '';
|
|
59
|
+
const resolvedUrl = this.resolveUrl(url, options?.baseUrl);
|
|
60
|
+
lines.push(` page.goto('${resolvedUrl}')`);
|
|
61
|
+
lines.push(` page.wait_for_load_state('domcontentloaded')`);
|
|
62
|
+
if (step.waitAfter) {
|
|
63
|
+
lines.push(` page.wait_for_load_state('${step.waitAfter}')`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
emitClick(lines, step) {
|
|
67
|
+
const selector = step.selector || '';
|
|
68
|
+
this.emitFallbackComment(lines, step);
|
|
69
|
+
lines.push(` page.locator('${selector}').click()`);
|
|
70
|
+
if (step.waitForNavigation) {
|
|
71
|
+
lines.push(` page.wait_for_load_state('${step.waitForNavigation}')`);
|
|
72
|
+
}
|
|
73
|
+
else if (step.waitAfter) {
|
|
74
|
+
lines.push(` page.wait_for_load_state('${step.waitAfter}')`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
emitFill(lines, step) {
|
|
78
|
+
const selector = step.selector || '';
|
|
79
|
+
const value = step.value || '';
|
|
80
|
+
this.emitFallbackComment(lines, step);
|
|
81
|
+
lines.push(` page.locator('${selector}').fill('${value}')`);
|
|
82
|
+
}
|
|
83
|
+
emitPress(lines, step) {
|
|
84
|
+
const key = step.value || 'Enter';
|
|
85
|
+
lines.push(` page.keyboard.press('${key}')`);
|
|
86
|
+
}
|
|
87
|
+
emitScroll(lines, step) {
|
|
88
|
+
const direction = step.scrollDirection || step.value || 'down';
|
|
89
|
+
const amount = step.scrollAmount || 300;
|
|
90
|
+
const sign = direction === 'up' ? '-' : '';
|
|
91
|
+
lines.push(` page.evaluate('window.scrollBy(0, ${sign}${amount})')`);
|
|
92
|
+
}
|
|
93
|
+
emitWait(lines, step) {
|
|
94
|
+
if (step.selector) {
|
|
95
|
+
lines.push(` page.locator('${step.selector}').wait_for(state='visible'${step.timeout ? `, timeout=${step.timeout}` : ''})`);
|
|
96
|
+
}
|
|
97
|
+
else if (step.timeout) {
|
|
98
|
+
lines.push(` page.wait_for_timeout(${step.timeout})`);
|
|
99
|
+
}
|
|
100
|
+
else if (step.waitCondition === 'url_change') {
|
|
101
|
+
const pattern = step.waitUrlPattern || '';
|
|
102
|
+
lines.push(` page.wait_for_url('**${pattern}**')`);
|
|
103
|
+
}
|
|
104
|
+
else if (step.waitCondition === 'dom_stable') {
|
|
105
|
+
const ms = step.waitDomStableTimeout || 500;
|
|
106
|
+
lines.push(` page.wait_for_timeout(${ms})`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
emitExtract(lines, step) {
|
|
110
|
+
const container = step.container || 'body';
|
|
111
|
+
const fields = step.fields || {};
|
|
112
|
+
const varName = step.outputVar || 'extracted';
|
|
113
|
+
const entries = Object.entries(fields).map(([name, def]) => {
|
|
114
|
+
if (typeof def === 'string') {
|
|
115
|
+
return `'${name}': el.query_selector('${def}') and el.query_selector('${def}').text_content().strip() or ''`;
|
|
116
|
+
}
|
|
117
|
+
const ef = def;
|
|
118
|
+
if (ef.attribute) {
|
|
119
|
+
return `'${name}': el.query_selector('${ef.selector}') and el.query_selector('${ef.selector}').get_attribute('${ef.attribute}') or ''`;
|
|
120
|
+
}
|
|
121
|
+
return `'${name}': el.query_selector('${ef.selector}') and el.query_selector('${ef.selector}').text_content().strip() or ''`;
|
|
122
|
+
});
|
|
123
|
+
lines.push(` ${varName} = []`);
|
|
124
|
+
lines.push(` for el in page.query_selector_all('${container}'):`);
|
|
125
|
+
lines.push(` ${varName}.append({ ${entries.join(', ')} })`);
|
|
126
|
+
}
|
|
127
|
+
emitEval(lines, step) {
|
|
128
|
+
const script = step.value || '';
|
|
129
|
+
const varName = step.outputVar;
|
|
130
|
+
if (varName) {
|
|
131
|
+
lines.push(` ${varName} = page.evaluate('${this.escapePy(script)}')`);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
lines.push(` page.evaluate('${this.escapePy(script)}')`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
emitScreenshot(lines, step) {
|
|
138
|
+
if (step.selector) {
|
|
139
|
+
lines.push(` page.locator('${step.selector}').screenshot()`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
lines.push(` page.screenshot(full_page=True)`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
emitFallbackComment(lines, step) {
|
|
146
|
+
if (step.fallbackSelectors && step.fallbackSelectors.length > 0) {
|
|
147
|
+
lines.push(` # Fallback selectors: ${step.fallbackSelectors.join(', ')}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
escapePy(s) {
|
|
151
|
+
return s.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/\n/g, '\\n');
|
|
152
|
+
}
|
|
153
|
+
resolveUrl(url, baseUrl) {
|
|
154
|
+
if (!url || url === 'back')
|
|
155
|
+
return url;
|
|
156
|
+
if (url.startsWith('http://') || url.startsWith('https://'))
|
|
157
|
+
return url;
|
|
158
|
+
if (baseUrl)
|
|
159
|
+
return `${baseUrl}${url.startsWith('/') ? '' : '/'}${url}`;
|
|
160
|
+
return url;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/flow/exporters/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FlowStep } from '../types.js';
|
|
2
|
+
import type { ScriptExporter, ExportOptions } from './types.js';
|
|
3
|
+
export declare class SeleniumExporter implements ScriptExporter {
|
|
4
|
+
format: string;
|
|
5
|
+
extension: string;
|
|
6
|
+
export(steps: FlowStep[], options?: ExportOptions): string;
|
|
7
|
+
private exportStep;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=selenium.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selenium.d.ts","sourceRoot":"","sources":["../../../src/flow/exporters/selenium.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,gBAAiB,YAAW,cAAc;IACrD,MAAM,SAAc;IACpB,SAAS,SAAS;IAElB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IAyC1D,OAAO,CAAC,UAAU;CAuTnB"}
|