Chrome插件模拟DOM操作
准备工作
到 http:\/\/www.google.cn\/intl\/zh-CN\/chrome\/browser\/ 下载适合你的系统的Chrome并安装
Chrome脚本
新建一个文件夹,进入这个文件夹。
然后新建一个manifest.json
文件,写入以下内容。
{
"manifest_version": 2,
"name": "模拟DOM操作Demo",
"description": "以http://ssfw.xjtu.edu.cn/为例,讲解Chrome插件模拟页面操作的方法",
"version": "1.0.0",
"permissions": [
"http://ssfw.xjtu.edu.cn/*"
],
"content_scripts": [{
"matches": [
"http://ssfw.xjtu.edu.cn/*"
],
"js": [
"demo.js"
]
}]
}
然后新建一个 demo.js
(文件名必须和上面的声明文件中的 content_scripts
> js
那个文件名对应),写入以下内容
if (document.querySelector('div.title span').textContent == '学生评教') {
var courses = document.querySelectorAll('#queryGridf1161 tbody tr');
var evaluated = false;
for (var i = 0; i < courses.length; ++i) {
var tds = courses[i].children;
var a = tds[tds.length - 1].children[0];
if (a.textContent == '评教') {
setInterval(function () { a.click(); }, 1000);
evaluated = true;
break;
}
}
var submited = false;
if (!evaluated) {
var ztpj = document.getElementById('ztpj');
var pgyj = document.getElementById('pgyj');
if (ztpj.value == '' && pgyj.value == '') {
ztpj.value = '很好';
pgyj.value = '很好';
var items = document.querySelectorAll('#zbdfTable tr');
for (i = 0; i < items.length; ++i) {
if (items[i].children[0].textContent.trim() == '教师评价') {
j = 3 + Math.round(Math.random());
items[i].children[j].children[0].children[0].click();
}
}
var submit_button = document.querySelector('input[value="提交"]');
if (submit_button) {
submit_button.click();
submited = true;
}
}
if (!submited) {
location.href = 'http://ssfw.xjtu.edu.cn/index.portal?.p=Znxjb20ud2lzY29tLnBvcnRhbC5zaXRlLmltcGwuRnJhZ21lbnRXaW5kb3d8ZjExNjF8dmlld3xub3JtYWx8YWN0aW9uPXF1ZXJ5';
}
}
}
然后在Chrome中访问 chrome:\/\/extensions ,点击 加载已解压的扩展程序...
,选择刚才新建的那个文件夹即可。
现在访问 http:\/\/ssfw.xjtu.edu.cn\/ 只要已进入评教的那个页面,就会自动开始评教。
代码说明
这个Chrome插件使用的并不是模拟HTTP请求、正则匹配,这个完全利用浏览器的功能,在页面上模拟点击和输入操作,代码十分简单,而且效果与纯手动操作是完全一样的。这个代码的另一个优点就是不需要处理任何有关登录的操作。
如果想深入了解,可以搜索Chrome插件开发、DOM操作的相关知识。