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 foreach使用示例
Sep 12 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
Oct 16 Javascript
浅谈js 闭包引起的内存泄露问题
Jun 22 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
Feb 05 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
Jan 11 Javascript
使用JavaScript中的lodash编写双色球效果
Jun 24 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
Vue中全局变量的定义和使用
Jun 05 Javascript
vue element upload实现图片本地预览
Aug 20 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
python实现简单的socket server实例
2015/04/29 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
酒店前台接待岗位职责
2013/12/03 职场文书
高中运动会入场词
2014/02/14 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python