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 获取表单元素里面的值示例代码
Jul 28 Javascript
SeaJS 与 RequireJS 的差异对比
Dec 08 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
Jquery使用val方法读写value值
May 18 Javascript
javascript入门教程基础篇
Nov 16 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
Sep 23 Javascript
vue微信分享 vue实现当前页面分享其他页面
Dec 02 Javascript
layui默认选中table的CheckBox复选框方法
Sep 19 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生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
javascript 写类方式之五
2009/07/05 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
对python requests的content和text方法的区别详解
2018/10/11 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
转党组织关系介绍信
2014/01/08 职场文书
廉政承诺书范文
2015/04/28 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技