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 ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
node.js中的http.request方法使用说明
Dec 14 Javascript
javascript中数组的定义及使用实例
Jan 21 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
jQuery实现的分子运动小球碰撞效果
Jan 27 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
JS如何获取地址栏的参数实例讲解
Oct 06 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 Javascript
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
简单实现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
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python中防止sql注入的方法详解
2017/02/25 Python
详谈python http长连接客户端
2017/06/12 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
python reverse反转部分数组的实例
2018/12/13 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
中学实习教师自我鉴定
2013/12/12 职场文书
家长会演讲稿
2014/04/26 职场文书
工程部主管岗位职责
2015/02/12 职场文书