油猴脚本——批量填写表单

wils

创作者俱乐部成员

批量填写网页里的表单是个常见的需求。

想了半天,感觉还是油猴脚本方式,写起来简单,控制精确,稳定,速度快。

💡

var button = document.createElement('button');

button.textContent = '粘贴';

button.addEventListener('click', function() {

if (typeof window.cb === 'undefined') {

navigator.clipboard.readText().then(text => {

window.cb = text;

});

return

}

let arr = window.cb.split('\n');

let t = arr.shift().split('\t');

window.cb = arr.join('\n');

document.querySelectorAll('textarea.ant-input').forEach((e)=>{

let lastValue = e.value;

e.value = t.pop();

let event = new Event('input', { bubbles: true });

event.simulated = true;

let tracker = e._valueTracker;

if (tracker) {

tracker.setValue(lastValue);

}

e.dispatchEvent(event);

});

});

var observer = new MutationObserver(function(mutationsList) {

mutationsList.forEach(function(mutation) {

if (mutation?.addedNodes[0]?.classList?.contains('src-components-container-index__main')) {

var c = document.querySelector('.src-components-nav-bar-index__navBar-center');

c.style.alignContent = 'center';

c.appendChild(button);

observer.disconnect();

}

});

});

observer.observe(document.querySelector('#root'), { childList: true, subtree: true });

操作的逻辑是:

  • 复制表格里的一些行列

  • 网页里插入一个按钮,点击加载剪贴板内容

  • 之后每次点击按钮,逐行,批量填写表单

理论上适用于所有需要填表的网页,不只是金山在线表单

也可以加上各种判断选中按钮之类

也可以改成全自动提交,然后获取结果最终生成csv自动下载

总之,油猴脚本方式可能比鼠标键盘宏更稳定,比selenium方式不会被机器人检查,比cdp方式简单,扩展性足够好,最主要是写起来简单,能偷懒就偷懒😁

广东省
浏览 3712
3
26
分享
26 +1
21
3 +1
全部评论 21
 
挺方便的,可以操作日期框么?我试了一下修改值后再点击就变成当前时间了
· 河南省
回复
wils

创作者俱乐部成员

试了一下,先设置value时,格式必须和他要求的一样2022-01-01 01:11 之后_valueTracker.setValue要少最后一位2022-01-01 01:1 之后触发input事件,这时弹出的时间选择窗口的日期会更新 再点击ant-btn-primary按钮,貌似可以更新时间了 但这是手动一步步写,不知道执行的时候每一步之间是否需要加入等待,等待时间选择框的出现,或者模拟enter再试试
· 海南省
回复
 
打卡
· 河南省
回复
 
打卡
· 河南省
回复
 
打卡
· 河北省
回复
 
学习。
· 广东省
回复
 
打卡
· 云南省
回复
 
打卡
· 河南省
回复
 
打卡
· 山东省
回复
 
打卡
· 江西省
回复
 
打卡
· 福建省
回复
 
学习了
· 山东省
回复
 
打卡
· 广东省
回复
 
来学习了
· 安徽省
回复
 
11
· 中国
回复
 
打卡
· 陕西省
回复
 
666
· 广东省
回复
 
Yhan

创作者俱乐部成员

python直接读文件不更香嘛,一般拦截加个cookies就行了
· 四川省
1
回复
wils

创作者俱乐部成员

也对,只是不想逆向才用油猴 而且写的不实用,只是尝试演示,没啥意义。。。
· 海南省
回复
 
来学习了,
· 广东省
回复
 
学习了
· 浙江省
回复