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 相关文章推荐
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
jquery UI 1.72 之datepicker
Dec 29 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
在父页面调用子页面的JS方法
Sep 29 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
Dec 01 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
javascript的document中的动态添加标签实现方法
Oct 24 Javascript
javaScript之split与join的区别(详解)
Nov 08 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
Node.JS如何实现JWT原理
Sep 18 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 页面执行时间计算代码
2008/12/04 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
php去除重复字的实现代码
2011/09/16 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
浅析JavaScript动画
2015/06/10 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
Python pandas常用函数详解
2018/02/07 Python
Python中的Numpy矩阵操作
2018/08/12 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
新郎新娘答谢词
2015/01/04 职场文书
五年级下册复习计划
2015/01/19 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python
讲解Python实例练习逆序输出字符串
2022/05/06 Python