吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5097|回复: 1
收起左侧

[会员申请] 申请会员ID:alertLock

[复制链接]
吾爱游客  发表于 2019-8-5 10:08


1、申 请 I D:alertLock
2、个人邮箱:wkmyws@qq.com

3.作品
基于TamperMonkey的自动填写问卷星的脚本
github地址:https://github.com/wkmyws/wjxJS
在校学生,经常有些好的志愿(3-4人)是通过问卷星抢的,于是写了这么一个脚本
问卷星电脑端和手机端是不同的页面,先分析电脑端的
一个网页例子:https://www.wjx.cn/wjx/design/previewq.aspx?activity=43444346&s=1
打开chrome的devtools,发现
每个问题的模块都是 <div class="div_question">开头,
每个模块的标题都是<class="div_title_question">
每个模块的答题框类型有文本、单选、多选,对应的class分别是inputtextulradiocheck ulradiocheck
把它们写到配置里:
const ini={
        module:".div_question",//每个问题模块
        title:".div_title_question",//标题
        type:{
           "input_text":".inputtext",
           "radio":".ulradiocheck",
           "checkbox":".ulradiocheck"
        }
    };

定义个人信息
const info=[
        [/(姓名)|(名字)/,"狗蛋"],
        [/性别/,"",//],
        [/班级/,"软工一班"],
        [/学号/,"08"],
        [/(联系)|(电话)|(手机)/,"12315"],
        [/(QQ)|(qq),"12345"/],
        [/空闲时间/,"周一",/(周一)|(星期一)|(29)/]
    ];


然后遍历填写每个模块
$(ini.module).each(function(){
            let title=$(this).find(ini.title).text();
            let No=$(this).find(".div_topic_question").text()-0;
})

这里获取标题title和题号No
通过info[][0].test(title)来匹配题号和个人信息
for(let i=0;i<info.length;i++){//匹配用户信息
                if(info[0].test(title)){//匹配到一处信息,判断答题框类型
                   for(let tp in ini.type){
                       let dom=$(this).find(ini.type[tp])
                       if(dom.length>0){
                           switch(tp){
                               case "input_text":
                                   $("#q"+No).val(info[1]);
                                   break;
                               case "radio":
                               case "checkbox":
                                   $(this).find("li").each(function(){
                                      if(info.length>=3&&info[2].test($(this).text()))$(this).find("a").click()
                                   })
                                   break;
                               default:alert("ini.type中没有匹配"+tp+"的键值");
                           }
                           break;
                       }
                   }
                    break;
                }
            }

switch根据答题框的类型,来进行相应的处理,
input型id为’q’+No,直接填入info[][1],
checkbox和radio都有标签<li>,<li>里有<a>和<label>
<label>提供选项文本,通过info[][2]来匹配选项
点击<a>进行选择选项
至此,电脑端的脚本就基本完成了,
手机端的脚本思路也是一样的,但是配置文件要改改
const ini={
        module:".field.ui-field-contain",//每个问题模块
        title:".field-label",//标题
        type:{
           "input_text":"input[type='text']",
           "input_tel":"input[type='tel']",
           "radio":".ui-radio",
           "checkbox":".ui-checkbox"
        }
    };

细微处还是有差异的,源码见https://github.com/wkmyws/wjxJS

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-8-6 11:48
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 09:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表