本文目录导读:

- 浏览器控制台(Console)直接运行 JavaScript(最简单,手动触发)
- 浏览器扩展/用户脚本(Tampermonkey/Greasemonkey)
- Python + Selenium(最强大,可控)
- Python + PyAutoGUI(纯模拟鼠标键盘)
- 常见问题与注意事项
是的,脚本可以自动填充表单,这通常通过 JavaScript(在浏览器端)或 Python(结合浏览器自动化工具)实现。
以下是几种常见的实现方式及其原理和代码示例:
浏览器控制台(Console)直接运行 JavaScript(最简单,手动触发)
这是最快捷的方法,适合临时、一次性的自动填充。
方法:
- 打开你要填充表单的网页。
- 按下
F12打开开发者工具,点击Console(控制台)选项卡。 - 粘贴以下 JavaScript 代码并按回车执行。
示例代码(假设表单有用户名和密码字段):
// 1. 通过 ID 定位元素
document.getElementById('username').value = 'myUsername';
document.getElementById('password').value = 'myPassword';
// 2. 通过 Name 属性定位
document.getElementsByName('email')[0].value = 'user@example.com';
// 3. 通过 CSS 选择器定位(更通用)
document.querySelector('input[type="text"][placeholder="请输入用户名"]').value = 'test_user';
// 4. 触发输入事件(如果网页有监听输入事件)
let input = document.getElementById('username');
let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
nativeInputValueSetter.call(input, 'newValue');
input.dispatchEvent(new Event('input', { bubbles: true }));
浏览器扩展/用户脚本(Tampermonkey/Greasemonkey)
如果你需要每次打开某个页面都自动填充,可以写一个用户脚本。
示例(Tampermonkey 脚本):
// ==UserScript==
// @name 自动填充表单
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 自动填写指定表单
// @author You
// @match https://example.com/login // 匹配你想自动填充的网址
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 等待页面完全加载
window.addEventListener('load', function() {
setTimeout(() => {
const userField = document.getElementById('username');
const passField = document.getElementById('password');
if (userField && passField) {
userField.value = 'auto_user';
passField.value = 'auto_pass';
// 如果表单有 submit 按钮,可以自动点击
// document.querySelector('button[type="submit"]').click();
}
}, 500); // 延迟 500ms 确保元素已渲染
});
})();
Python + Selenium(最强大,可控)
适合需要模拟真实浏览器操作(如登录后跳转、处理验证码之外的复杂表单),需要安装 selenium 和对应浏览器驱动。
安装:
pip install selenium # 下载 ChromeDriver 并配置路径
Python 代码示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 启动浏览器
driver = webdriver.Chrome()
driver.get('https://example.com/form')
# 等待页面加载
time.sleep(2)
# 定位并填充字段
username_input = driver.find_element(By.ID, 'username')
username_input.send_keys('myUsername')
password_input = driver.find_element(By.NAME, 'password')
password_input.send_keys('myPassword')
# 选择下拉框
from selenium.webdriver.support.ui import Select
select_element = Select(driver.find_element(By.ID, 'country'))
select_element.select_by_visible_text('中国') # 根据可见文本选择
# 勾选复选框
checkbox = driver.find_element(By.CSS_SELECTOR, 'input[type="checkbox"]')
if not checkbox.is_selected():
checkbox.click()
# 点击提交按钮
submit_button = driver.find_element(By.XPATH, '//button[text()="提交"]')
submit_button.click()
# 关闭浏览器
# driver.quit()
Python + PyAutoGUI(纯模拟鼠标键盘)
如果表单不是标准的 HTML 元素(如某些 Flash、Java 小程序或桌面软件),可以用 PyAutoGUI 模拟按键和鼠标点击。
示例:
import pyautogui
import time
time.sleep(5) # 给你 5 秒切换到表单窗口
# 切换到输入框并输入
pyautogui.click(100, 200) # 点击坐标 (x, y)
pyautogui.write('myUsername')
pyautogui.press('tab') # 按 Tab 键切换到下一个字段
pyautogui.write('myPassword')
pyautogui.press('enter') # 提交
注意: 这种方法的缺点是坐标依赖屏幕分辨率,不精确且容易出错。
常见问题与注意事项
- 触发事件(Event): 很多现代前端框架(如 React、Vue)会监听
input或change事件,单纯修改value属性可能不会被页面识别。- 解决: 在修改值后手动触发事件,JavaScript 示例:
let input = document.getElementById('myInput'); input.value = 'new value'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true }));
- 解决: 在修改值后手动触发事件,JavaScript 示例:
- 验证码(CAPTCHA): 大部分网站会自动填充表单,但验证码是专门阻止自动化的,你需要手动输入验证码,或使用打码平台(有成本且可能违反网站条款)。
- 法律法规: 自动填充功能用于个人自动化办公或测试是合法的,但如果用于刷票、抢购、撞库、爬虫获取他人数据等,可能违反网站服务条款,甚至触犯法律(如《计算机信息系统安全保护条例》或《数据安全法》)。
| 场景 | 推荐方案 |
|---|---|
| 一次性、快速填充 | 浏览器控制台 F12 + JavaScript |
| 固定页面、每次自动填充 | Tampermonkey 用户脚本 |
| 复杂流程、多页面、需要截图/判断 | Python + Selenium |
| 非 Web 界面 (桌面软件) | Python + PyAutoGUI |
如果你有具体的表单网站(比如某个内部系统或测试页面),可以提供网址或 HTML 结构,我可以帮你写一个更精确的自动填充脚本。