文章目录
1、需求来源:
我想查看豌豆荚的一个软件的历史版本,然后要一直点击。
点击了好多次还没有到底,好烦呀
然后想着能否用selenium自动的,然后想着用的有油猴插件,可以直接自动展开csdn的,然后去搜索豌豆荚,发展没有搜到直接现成的插件。
那就学习一波,开发一个简单的插件吧。
2、开发者工具开发:
查看元素,看看是否有固定id或者class
找到id,就可以使用dom操作了。
document
先在开发者工具里面看看能成功。
while (document.getElementById('j-refresh-btn'))
{
document.getElementById('j-refresh-btn').click();
}
然后最终写成这个代码。
先在console执行看看效果。
发现这个时候可以了,加载完毕了。
3、油猴插件开发:
当然,这样还需要每次复制,打开开发者,也不是很爽,我想弄到油猴里面,这样就能一劳永逸了。
1)、油猴学习:
油猴论坛:https://bbs.tampermonkey.net.cn/
油猴官方开发文档:
https://www.tampermonkey.net/documentation.php#_run_at
油猴脚本在线下载:
2)、可以自己找几个学习简单一下
比如:
我这个是自动展开类,我就搜索到这个
阅读全文、自动展开全文、自动移除万恶弹框
其实直接下在一个插件代码,模仿着写就完了,我不需要完成太高级的,太高级也需要js什么的。
油猴里面的脚本其实就是其他自执行函数,函数里面根据需要自己写。
具体可以了解下hook。
3)、我最终的脚本:
因为我需要周期性检测,执行我的脚本,然后周期执行我的脚本。
最终脚本:
setInterval 是js的定时器功能,间隔指定时间执行一个函数。
我把我的展开脚本放入一个函数,周期性执行函数即可。
setInterval() - 间隔指定的毫秒数不停地执行指定的代码。
setTimeout() - 在指定的毫秒数后执行指定代码。
setTimeout只执行一次,我看好多人家展开脚本大多数是这个,我的和他们不同,我所有我选择setInterval周期性执行定时器。
// ==UserScript==
// @name 豌豆荚自动展开所有版本:
// @namespace http://tampermonkey.net/
// @version 1.0.0
// @description 豌豆荚自动展开所有版本:
// @author zhaojiafu
// @match *://*.wandoujia.com/*
// @grant none
// @icon https://csdnimg.cn/public/favicon.ico
// @run-at document-start
// ==/UserScript==
(function () {
// 检查是否有更多 ID 'j-refresh-btn'
function run(){
while (document.getElementById('j-refresh-btn'))
{
document.getElementById('j-refresh-btn').click();
};
};
// 定时器,3秒检查一次
setInterval(run,3000);
})();
4)、你可以选择新建
新建脚本,把我的复制里面,然后就可以自动展开所以版本了。
等待一会,访问地址,等待一会就可以了。
4、注意点:
1、油猴,run at 尽量早一点,早点注入代码【hook】
这个是注入js代码的时间,尽量早点注入,我的反正有间隔时间去检测,所以早点注入代码不影响的。
2、@match:
这个是正则匹配地址,我这个网站一定不能只写域名,我第一次匹配域名,解决搜索也是这样,导致卡死了。
// @match *://*.wandoujia.com/apps/*