openbotx
An open-source platform for orchestrating AI agents — secure, simple, and built for everyone. Multi-agent, real-time task board, web control panel, skills system, browser automation, multi-provider, scheduler,...
Automate web form interactions including login, file upload, text input, and form submission using Playwright. Use when user needs to automate website interactions, upload files to web forms, fill out forms with text input, click buttons, or submit data to web applications. Supports session management via cookies, compressed image uploads (webp), and proper event triggering for reliable form submission.
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
SkillHub CLI
skillhub install flyingzl/web-form-automation打开来源仓库,查看说明和兼容环境后,按来源提供的命令或步骤安装。
将来源链接提供给你的 Agent,让它先读取说明、核对依赖,并向你说明将执行的安装步骤。
Automate web form interactions reliably using Playwright with best practices for session management, file uploads, and form submission.
const { chromium } = require('playwright');
// Basic form automation
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com/form');
// Upload compressed images
await page.locator('input[type="file"]').setInputFiles('/path/to/image.webp');
// Type text (triggers events properly)
await page.locator('textarea').pressSequentially('Your text', { delay: 30 });
// Submit form
await page.locator('button[type="submit"]').click({ force: true });
When user provides a JSON file with session data:
const sessionData = JSON.parse(fs.readFileSync('session.json', 'utf8'));
// Set cookies before navigating
for (const cookie of sessionData.cookies || []) {
await context.addCookies([cookie]);
}
// Set localStorage/sessionStorage
await page.evaluate((data) => {
for (const [k, v] of Object.entries(data.localStorage || {})) {
localStorage.setItem(k, v);
}
}, sessionData);
Always compress images before upload for reliability:
# Convert to webp for best compression
convert input.png output.webp
# Or resize if needed
convert input.png -resize 1024x1024 output.webp
Size comparison:
// 1. Find file inputs
const fileInputs = await page.locator('input[type="file"]').all();
// 2. Upload with waiting time
await fileInputs[0].setInputFiles('/path/to/start.webp');
await page.waitForTimeout(3000); // Wait for upload to process
await fileInputs[1].setInputFiles('/path/to/end.webp');
await page.waitForTimeout(3000);
这些信息来自收录时的来源分析,可能滞后;使用前请核对最新来源文件。
# Web Form Automation
Automate web form interactions reliably using Playwright with best practices for session management, file uploads, and form submission.
## Quick Start
```javascript
const { chromium } = require('playwright');
// Basic form automation
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com/form');
// Upload compressed images
await page.locator('input[type="file"]').setInputFiles('/path/to/image.webp');
// Type text (triggers events properly)
await page.locator('textarea').pressSequentially('Your text', { delay: 30 });
// Submit form
await page.locator('button[type="submit"]').click({ force: true });
```
## Session Management
### Using Browser Session Data
When user provides a JSON file with session data:
```javascript
const sessionData = JSON.parse(fs.readFileSync('session.json', 'utf8'));
// Set cookies before navigating
for (const cookie of sessionData.cookies || []) {
await context.addCookies([cookie]);
}
// Set localStorage/sessionStorage
await page.evaluate((data) => {
for (const [k, v] of Object.entries(data.localStorage || {})) {
localStorage.setItem(k, v);
}
}, sessionData);
```
## File Upload Best Practices
### Image Compression
Always compress images before upload for reliability:
```bash
# Convert to webp for best compression
convert input.png output.webp
# Or resize if needed
convert input.png -resize 1024x1024 output.webp
```
**Size comparison:**
- Original PNG: ~4MB
- Compressed PNG: ~1MB
- WebP: ~30-50KB (99% smaller)
### Upload Sequence
```javascript
// 1. Find file inputs
const fileInputs = await page.locator('input[type="file"]').all();
// 2. Upload with waiting time
await fileInputs[0].setInputFiles('/path/to/start.webp');
await page.waitForTimeout(3000); // Wait for upload to process
await fileInputs[1].setInputFiles('/path/to/end.webp');
await page.waitForTimeout(3000);
```
## Text Input Best Practices
### Use p...An open-source platform for orchestrating AI agents — secure, simple, and built for everyone. Multi-agent, real-time task board, web control panel, skills system, browser automation, multi-provider, scheduler,...
OpenClaw skill for 知识星球 / ZSXQ digests with token-first auth and browser recovery.
OpenClaw Skill for stock data analysis
🌐 OpenClaw skill for Browser-Use — AI-powered browser automation for complex multi-step workflows (login, form filling, scraping, posting)