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插件实现大图全屏图片相册
Mar 14 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
Angular企业级开发——MVC之控制器详解
Feb 20 Javascript
Bootstrap模态框(Modal)实现过渡效果
Mar 17 Javascript
vue2中filter()的实现代码
Jul 09 Javascript
详解VueJS 数据驱动和依赖追踪分析
Jul 26 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
js隐式转换的知识实例讲解
Sep 28 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
php实现单链表的实例代码
2013/03/22 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
关于jquery css的使用介绍
2013/04/18 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
JS判断数组那点事
2017/10/10 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
独特的python循环语句
2016/11/20 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
Python读写锁实现实现代码解析
2020/11/28 Python
智利最大的网上商店:Linio智利
2016/11/24 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
捐书倡议书
2014/08/29 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
单位委托书
2014/10/15 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
技能培训通讯稿
2015/07/18 职场文书