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 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
简述JavaScript对传统文档对象模型的支持
Jun 16 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
JavaScript实现三级联动效果
Jul 15 Javascript
node实现简单的反向代理服务器
Jul 26 Javascript
浅谈React + Webpack 构建打包优化
Jan 23 Javascript
ES6中字符串的使用方法扩展
Jun 04 Javascript
vue请求服务器数据后绑定不上的解决方法
Oct 30 Javascript
Js跳出两级循环方法代码实例
Sep 22 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
解析php常用image图像函数集
2013/06/24 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
重定向实现代码
2006/11/20 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
Python读大数据txt
2016/03/28 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
路政管理专业推荐信
2013/11/11 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
小学教师读书活动总结
2014/07/08 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
2019个人工作总结
2019/06/21 职场文书
python基础之模块的导入
2021/10/24 Python
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python