Files
jfeng d8796531ee feat: MCP Browser v3.1.1 - 56+ tools, visual overlays, fixes
- Added 9 new tools: visual overlay, highlight, toast, drag-drop, etc.
- Fixed evaluateJS to support function arguments
- Fixed hover for non-visible elements
- Fixed storage operations with try/catch
- Added 10 new wait tools: clickable, element visible, text
- Fixed tool name mapping in server.js for MCP protocol
- Updated README with 60+ tools documentation
- Version bump to 3.1.1
2026-04-07 16:29:38 -03:00

40 lines
1.5 KiB
JavaScript

const browser = require('../browser');
module.exports = async ({ data }) => {
if (!data) throw new Error('Data é obrigatória');
await browser.start();
const formDataJson = JSON.stringify(data).replace(/'/g, "\\'");
const result = await browser.evaluateJS(`
(function() {
try {
var formData = JSON.parse('${formDataJson}');
var inputs = Array.from(document.querySelectorAll('input, textarea, select'));
var filled = [];
inputs.forEach(function(input) {
var keys = Object.keys(formData);
for (var i = 0; i < keys.length; i++) {
var k = keys[i];
var match = input.name && input.name.toLowerCase().indexOf(k.toLowerCase()) >= 0 ||
input.placeholder && input.placeholder.toLowerCase().indexOf(k.toLowerCase()) >= 0 ||
input.id && input.id.toLowerCase().indexOf(k.toLowerCase()) >= 0;
if (match) {
input.value = formData[k];
input.dispatchEvent(new Event('input', { bubbles: true }));
input.dispatchEvent(new Event('change', { bubbles: true }));
filled.push({ field: input.name || input.id || 'unknown', value: formData[k] });
break;
}
}
});
return filled;
} catch (e) {
return { error: e.message };
}
})()
`);
return { success: true, action: 'fill_form_auto', filled: result, count: Array.isArray(result) ? result.length : 0 };
};