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 相关文章推荐
Jquery 最近浏览过的商品的功能实现代码
May 14 Javascript
jQuery Ajax 实例全解析
Apr 20 Javascript
基于jquery跨浏览器显示的file上传控件
Oct 24 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
键盘KeyCode值列表汇总
Nov 26 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
浅析javascript 定时器
Dec 23 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
微信小程序服务器日期格式化问题
Jan 07 Javascript
在vue-cli创建的项目中使用sass操作
Aug 10 Javascript
js实现简单的轮播图效果
Dec 13 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实现文件编码批量转换
2014/03/10 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
两种php实现图片上传的方法
2016/01/22 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
三步实现ionic3点击退出app程序
2019/09/17 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
详解Python的三种拷贝方式
2020/02/11 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
Java编程面试题
2016/04/04 面试题
群众路线领导对照材料
2014/08/23 职场文书
安全生产年活动总结
2014/08/29 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
python - timeit 时间模块
2021/04/06 Python