当前位置:当前位置:首页 > 焦点 > 网页重复操作脚本 正文

网页重复操作脚本

[焦点] 时间:2026-10-17 04:32:43 来源:力不从心网 作者:时尚 点击:129次
```html 网页重复操作脚本

网页重复操作脚本

上周帮朋友处理一个后台系统,需要把 300 多条订单逐条点开、重复复制单号、操作粘贴到表格里。脚本他手动干了半小时,网页眼睛都快对眼了。重复我打开控制台敲了十几行代码,操作三分钟跑完。脚本他愣住:“你刚才干了啥?网页”——这就是网页重复操作脚本最直接的用处:把浏览器里那些机械点击、填表、重复翻页的操作活儿,交给几行 JavaScript。脚本

别被“脚本”俩字吓到。网页你不需要装 Python、重复不用学 Selenium,操作浏览器自带的环境就能搞定。按 F12 打开开发者工具,切到 Console 面板,直接写代码。比如你想自动点击页面上所有“展开”按钮,一行就够:

document.querySelectorAll('.expand-btn').forEach(btn => btn.click());

这行代码干了什么?querySelectorAll 把所有带 .expand-btn 类的按钮抓出来,forEach 挨个调用 click()。没有循环嵌套,没有异步等待,纯粹到像在记事本里敲字。我第一次用这招是批量下载公司内网的技术文档——每个文档链接都藏在一个“更多”按钮后面,手动点开再右键另存,五十个文件能磨掉一上午。脚本跑完只用了七秒,我盯着屏幕有点恍惚。

但真实网页不会这么乖。按钮可能动态加载,点击后要等半秒才出内容,或者需要先滚动到可视区域。这时候得加一点“等待”逻辑。不是那种 setTimeout 硬等三秒的笨办法——太慢,而且网络一卡就崩。更好的方式是轮询检查某个元素是否出现:

function waitFor(selector, timeout = 5000) { return new Promise((resolve, reject) => { const start = Date.now(); const timer = setInterval(() => { const el = document.querySelector(selector); if (el) { clearInterval(timer); resolve(el); } else if (Date.now() - start > timeout) { clearInterval(timer); reject(new Error('元素未出现: ' + selector)); } }, 100); }); } // 用法 await waitFor('.result-panel'); document.querySelector('.copy-btn').click();

这段代码我在电商后台抓价格时反复用。页面有个“加载更多”按钮,点完要等两秒才刷出新商品。用 waitFor('.product-item:last-child') 就能精准卡住时机,既不浪费等待,也不会点空。有个细节:await 只能在 async 函数或模块顶层用。如果你直接在 Console 里写,记得包一层 (async () => { ... })(),否则会报语法错误。我第一次踩这坑时对着红色报错看了半天,还以为浏览器坏了。

个人观察: 大部分重复操作脚本根本不需要“框架”。Chrome 的 Console 就是最顺手的 IDE。你甚至可以把常用脚本存成书签,点一下就在当前页执行——这叫 bookmarklet,老技术但极其好用。

另一个高频场景是表单填充。比如测试环境要反复提交假数据,手动输几十遍邮箱、手机号、地址。写个脚本随机生成再塞进去:

const randomStr = len => Math.random().toString(36).slice(2, 2 + len); document.querySelector('#email').value = randomStr(8) + '@test.com'; document.querySelector('#phone').value = '138' + Math.floor(Math.random() * 1e8).toString().padStart(8, '0'); document.querySelector('#submit').click();

注意,直接改 value 有时不会触发 React/Vue 的绑定。页面看着填了,提交却报空。这时候得手动派发 input 事件:el.dispatchEvent(new Event('input', { bubbles: true }))。这行代码救过我一次——当时给一个 Vue 后台批量导入用户,死活提示“邮箱不能为空”,明明输入框里文字都亮着。加上事件派发后,表单终于认了。

脚本写多了会形成肌肉记忆。看到分页列表就想 while 循环点下一页,看到勾选框就想 querySelectorAll('input[type=checkbox]').forEach(c => c.checked = true)。但得留个心眼:有些网站会检测自动化操作,比如监听 click 事件的 isTrusted 属性。脚本触发的点击 isTrusted 是 false,可能被拦截。绕过方法不是没有,但那就进入灰色地带了。我的原则很简单:只操作自己有权访问的页面,不碰验证码、不绕频率限制。脚本是省力的,不是用来钻空子的。

最后说个真实翻车案例。有次我写了个脚本自动翻页抓评论,跑了两百页后浏览器崩了——内存爆了。因为每次翻页都往数组里塞数据,没做清理。后来改成每五十页输出一次到控制台,手动复制走,再清空数组。脚本不是越自动越好,有时候半自动更稳。就像电钻能打孔,但你不会拿它当锤子用。


如果你现在就想试,打开任意一个列表页,在 Console 里敲:document.querySelectorAll('a').forEach(a => console.log(a.href))。看到满屏链接刷出来那一刻,你就明白这玩意儿为什么让人上瘾了。

```

(责任编辑:知识)

相关内容
精彩推荐
热门点击
友情链接