javascript网页自动填表_学个锤子 | 从零开始填表刷票

34ef77d9b8dfc64a74c1c3e7f47b6595.gif

晚上好,同学们。 之前和大家一起研究了几个在线报名表平台,随之而来又有了一个问题,当我们需要填写大量数据来完成领导安排的任务时,应该怎么办呢? 接下来我们以 问卷星 为例。 教程演示用表单地址为: https://www.wjx.cn/jq/78425667.aspx 94e298d2f4c23be3129d72b38814bd91.png 四个很简单的基础题型,两个单选,一个多选,一个填空。 de6f11b1b68c78502c127d0effeeea4a.png

分析表单

接下来我们来研究怎么进行自动填表。 在上一节课上,我们教过大家用审查元素的方法定位网页上的内容,这节课我们继续使用这个知识,来定位网页上的表单。 要补课的同学快点点进去。 412b0eb1f43b53c143517ca92849643d.png 审查元素,"黑掉"熊爪度就这么简单 首先要解决的一个问题在于,问卷星的表单上屏蔽了鼠标的右键菜单,这使得你没法使用右键进行元素审查。 突破方法很简单,如果你用的是从公众号或者我博客下载的定制版 Chrome,则你可以从 书签栏->小书签栏->阅读 中选择 解除右键限制 。 35a014ba2050e0a8849e81fdc0f9f268.png 如果你没有用我提供的 Chrome,则你可以在书签栏上点右键,添加网页。 7146804ba6758aac9f45196885ebdf57.png 起一个好听的名字,然后把下面这段代码粘贴进去,你就可以得到和我一样的小书签了。
javascript:(function(bookmarklets)%7Bfor(var%20i=0;i%3Cbookmarklets.length;i++)%7Bvar%20code=bookmarklets%5Bi%5D.url;if(code.indexOf(%22javascript:%22)!=-1)%7Bcode=code.replace(%22javascript:%22,%22%22);eval(code)%7Delse%7Bcode=code.replace(/%5Es+%7Cs+$/g,%22%22);if(code.length%3E0)%7Bwindow.open(code)%7D%7D%7D%7D)(%5B%7Btitle:%22%E7%A0%B4%E9%99%A4%E5%8F%B3%E9%94%AE%E8%8F%9C%E5%8D%95%E9%99%90%E5%88%B6%22,url:%22javascript:function%20applyWin(a)%7Bif(typeof%20a.__nnANTImm__===%5Cx22undefined%5Cx22)%7Ba.__nnANTImm__=%7B%7D;a.__nnANTImm__.evts=%5B%5Cx22mousedown%5Cx22,%5Cx22mousemove%5Cx22,%5Cx22copy%5Cx22,%5Cx22contextmenu%5Cx22%5D;a.__nnANTImm__.initANTI=function()%7Ba.__nnantiflag__=true;a.__nnANTImm__.evts.forEach(function(c,b,d)%7Ba.addEventListener(c,this.fnANTI,true)%7D,a.__nnANTImm__)%7D;a.__nnANTImm__.clearANTI=function()%7Bdelete%20a.__nnantiflag__;a.__nnANTImm__.evts.forEach(function(c,b,d)%7Ba.removeEventListener(c,this.fnANTI,true)%7D,a.__nnANTImm__);delete%20a.__nnANTImm__%7D;a.__nnANTImm__.fnANTI=function(b)%7Bb.stopPropagation();return%20true%7D;a.addEventListener(%5Cx22unload%5Cx22,function(b)%7Ba.removeEventListener(%5Cx22unload%5Cx22,arguments.callee,false);if(a.__nnantiflag__===true)%7Ba.__nnANTImm__.clearANTI()%7D%7D,false)%7Da.__nnantiflag__===true?a.__nnANTImm__.clearANTI():a.__nnANTImm__.initANTI()%7DapplyWin(top);var%20fs=top.document.querySelectorAll(%5Cx22frame,%20iframe%5Cx22);for(var%20i=0,len=fs.length;i%3Clen;i++)%7Bvar%20win=fs%5Bi%5D.contentWindow;try%7Bwin.document%7Dcatch(ex)%7Bcontinue%7DapplyWin(fs%5Bi%5D.contentWindow)%7D;void%200;%22%7D,%7Btitle:%22%E7%A0%B4%E9%99%A4%E9%80%89%E6%8B%A9%E5%A4%8D%E5%88%B6%E9%99%90%E5%88%B6%22,url:%22javascript:(function()%7Bvar%20doc=document;var%20bd=doc.body;bd.onselectstart=bd.oncopy=bd.onpaste=bd.onkeydown=bd.oncontextmenu=bd.onmousemove=bd.onselectstart=bd.ondragstart=doc.onselectstart=doc.oncopy=doc.onpaste=doc.onkeydown=doc.oncontextmenu=null;doc.onselectstart=doc.oncontextmenu=doc.onmousedown=doc.onkeydown=function%20()%7Breturn%20true;%7D;with(document.wrappedJSObject%7C%7Cdocument)%7Bonmouseup=null;onmousedown=null;oncontextmenu=null;%7Dvar%20arAllElements=document.getElementsByTagName(%5Cx27*%5Cx27);for(var%20i=arAllElements.length-1;i%3E=0;i--)%7Bvar%20elmOne=arAllElements;with(elmOne.wrappedJSObject%7C%7CelmOne)%7Bonmouseup=null;onmousedown=null;%7D%7Dvar%20head=document.getElementsByTagName(%5Cx27head%5Cx27)%5B0%5D;if(head)%7Bvar%20style=document.createElement(%5Cx27style%5Cx27);style.type=%5Cx27text/css%5Cx27;style.innerHTML=%5Cx22html,*%7B-moz-user-select:auto!important;%7D%5Cx22;head.appendChild(style);%7Dvoid(0);%7D)();%22%7D%5D)
f7f5caa2c507015ed6a040e313b2bc7f.png 好了,使用上节课讲的审查元素,定位到普通的单选题的 选项1 上。 21b2fe937d731a4f7826694827a141c3.png
<input style="display:none;" type="radio" name="q1" id="q1_1" value="1">
可以看到这个标签有 name 属性和 id 属性。 简单的介绍这两个属性,name 就是给这个元素起一个名字作为标志,而 id 则和我们的身份证一样,也是用来标识这个元素的,但 id 是唯一的。 通常情况下建议在书写 html 时使用 id 而不是 name,二者更多的不同可以自行百度。 在控制台 -> Console中输入:
document.getElementById("q1_1")
回车执行,得到结果。 0f5d1cdc594fb508a8a3e7eb828604ab.png 可以看到其输出了刚才这个元素,我们把这种方法叫做元素选择器,可以通过一定的特征去选择网页中的元素。 在Chrome控制台中的自动补全里你可以看到还有很多选择器。 e533bb4f75c3bf140cdf7d18c2e67a28.png 刚才这个题如果我们使用 Name 选择器,可以得到一个包含了两个成员的结果。 472078ca05543faa33e014c2a43df6a8.png 为什么呢?审查元素可以看到,选项2 也叫这个名字。 ddce4da8697a7559b30540250f91c43a.png

填写表单

接下来我们利用 id 属性来填表。 最简单有效的方法,就是模拟点击。 可以使用 click() 方法。 0f45463e95632e135a63ac3bfa053cca.png 同样,也可以用 name 属性来填表,但注意 name 的选择结果不一定唯一,所以需要用数组,数组编号从 0 开始。 3de4dabcf60f874c2569ee7e62f2a89e.png 在多选上,你会发现这个方法行不通了,执行了 click 后对应的元素没有被勾上。 81171beaa9c98b4e41386492e438b1e4.png 手动勾上一个对比看看。 1fb12b58c3f614e1e64e5bce4e6b4b01.png 勾上的样式和没勾上的元素在样式上少了一个被选中的样式。 实际上元素被选中了,只是在表单中没有展现出来。 思考下,为什么手动点击的时候就会增加被选中的样式呢? 答案是因为手动点击时,被点击到的不是 q3_1,而是它的父元素,li。 那我们也改成点击父元素即可。 0525cb116267cceda85faf334e00ae60.png 最后还有一个填空题,我们使用 value 方法来给 input 里写入内容即可。 81d89af01113b966a765f79828192b03.png 就连最后的提交,我们也可以用代码完成。 65501e0a675f221fe4d8ff89155606d0.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值