JS实现问卷星自动填问卷脚本并在两秒自动提交功能


Posted in Javascript onJune 17, 2020

脚本只使用问卷星,多选题目前为选中任意选项数量!!!!!!!

最近看到很多群里都在发问卷连接,各种求帮忙,正好这两天没任务,尝试写了自动填问卷的脚本,类似的脚本网上已经有了,但是后来问卷星加了验证,并且多选题已经不能适用

脚本使用方式(以Firefox为例):

一:鼠标移动到浏览器地址栏下空白处,右键,新建书签

二:填写名称(任意),代码复制到地址栏中

JS实现问卷星自动填问卷脚本并在两秒自动提交功能

三:打开问卷星连接,然后点击刚刚添加的书签,即可。

JS实现问卷星自动填问卷脚本并在两秒自动提交功能

JS实现问卷星自动填问卷脚本并在两秒自动提交功能

代码:

javascript: void ( 
 (function () { 
 var hash = {}; 
 var a = document.evaluate('//input[(@type="radio") and not(@value="0")]//@name', 
   document, 
   null, 
   XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
   null); 
 if (a.snapshotLength){ 
 for (var i = 0; i < a.snapshotLength; i++) { 
 if (!(a.snapshotItem(i).value in hash)) 
 hash[a.snapshotItem(i).value] = 0; 
 hash[a.snapshotItem(i).value]++; 
 } 
 for (i in hash) { 
 document.evaluate('//input[(@type="radio") and not(@value="0") and @name="' + i + '"]', 
   document, 
   null, 
   XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, 
   null).snapshotItem(Math.floor(Math.random() * hash[i])).click(); 
 } 
 } 
 var array = new Array(); 
 var as = document.getElementsByTagName("a"); 
 var preName = ""; 
 var change = false; 
 for(var i=0; i < as.length; i++){ 
 if(as[i].getAttribute("rel") != null && as[i].nextSibling.getAttribute("type") == "checkbox"){ 
 var name = as[i].nextSibling.getAttribute("name"); 
 var check = as[i].nextSibling.getAttribute("checked"); 
 if(check == "checked"){ 
  as[i].click(); 
 } 
 if(preName == "" || preName == name){ 
  if(Math.random() * 10 > 5){ 
  as[i].click(); 
  change = true; 
  } 
 } 
 var next = as[i + 1]; 
 if(next.getAttribute("rel") != null && next.nextSibling.getAttribute("type") == "checked" && next.getAttribute("name") != name){ 
  if(!change){ 
  as[i].click(); 
  } 
  change = false; 
 } 
 if(i == as.length - 1 && !change){ 
  as[i].click(); 
 } 
 preName = name; 
 } 
 } 
 var objs = document.getElementsByTagName("textarea"); 
 for (var i = 0; i < objs.length; i++){ 
 objs[i].focus(); 
 objs[i].value = "最好的意见就是没有意见,哈哈哈哈哈哈哈"; 
 objs[i].blur(); 
 } 
 var choose = document.getElementsByTagName("select"); 
 for (var i = 0; i < choose.length; i++) { 
 choose[i].focus(); 
 choose[i].value = "1"; 
 choose[i].blur(); 
 } 
 })()); 
function validate(){return true;} 
var btn = document.getElementById("submit_button"); 
window.setTimeout(btn.click(),2000);

之前问卷星的前端加入了一个隐藏的选择题,如果直接遍历页面上的input标签,会把这道题一起做了,然后validate函数执行的时候会报错,提示非法填问卷!!!!

下面是问卷星的js代码

if (J[0].checked || J[1].checked) { 
 alert('系统检测到非法填写问卷'); 
 window.location.href = window.location.href; 
 return; 
}

这里我直接屏蔽了验证函数

单选题直接用XPath查找填写,random生成随机数选择选项

对于多选题,使用的是a标签与input绑定的方式,似乎是优化过的,因为之前网上流传的脚本都填不了多选了,这里我直接取出页面中所有的a标签,如果当前的a标签有rel属性,并且下一个兄弟标签的type是checked,则认定当前标签为一个多选的选项
问卷星页面的命名的一些规则,input的name为q+对应的题目编号,多选题是a标签跟input绑定,使用的是rel属性,rel命名规则是:q+对应的题目编号+选项编号

<li style="width:99%;"> 
<a href="javascript:" rel="external nofollow" class="jqCheckbox" rel="q2_2"></a> 
<input style="display:none;" id="q2_2" name="q2" value="2" type="checkbox"> 
<label>选项8</label> 
</li>

文本框是固定文字的。

总结

以上所述是小编给大家介绍的JS实现问卷星自动填问卷脚本两秒自动提交功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
Feb 18 Javascript
JS中Eval解析JSON字符串的一个小问题
Feb 21 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
JavaScript模块详解
Dec 18 Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 Javascript
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
Vuex的actions属性的具体使用
Apr 14 Javascript
CKeditor4 字体颜色功能配置方法教程
Jun 26 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
Mar 16 Javascript
简单实现jQuery上传图片显示预览功能
Jun 29 #jQuery
浅谈vue-lazyload实现的详细过程
Aug 22 #Javascript
关于定制FileField中的上传文件名称问题
Aug 22 #Javascript
React复制到剪贴板的示例代码
Aug 22 #Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 #Javascript
vue.js异步上传文件前后端实现代码
Aug 22 #Javascript
node中koa中间件机制详解
Aug 22 #Javascript
You might like
php cookie的操作实现代码(登录)
2010/12/29 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
javascript基本语法
2016/05/31 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
Python学习思维导图(必看篇)
2017/06/26 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
Python中无限循环需要什么条件
2020/05/27 Python
浅谈Python协程
2020/06/17 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
简单的辞职信范文
2014/01/18 职场文书
会计系毕业求职信
2014/08/07 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA