[英]Clicking all the buttons on the page with javascript
因此,我尝试单击特定网页上的所有按钮。 但是棘手的是,只有当鼠标悬停在按钮上方时,按钮才会显示。 单击页面上的所有按钮后,需要单击下一页按钮。 然后再次单击新网页上的所有按钮,依此类推。
我实际上有一个工作脚本。 但是我在javascript中使用setInterval函数,我觉得这是一种很怪异的方法。 这是我的工作脚本:
alert ("Please refresh the page to stop");
setInterval(function () {
var inputs=document.getElementsByClassName('tw-action-button btn btn-sm ng-isolate-scope btn-primary');
var names=document.getElementsByClassName('screen-name');
for(var i=0; i<inputs.length; i++){
inputs[i].click();
}
}, 250);
//Change the page in every 15 seconds
setInterval(function () {
var nextButton=document.getElementsByClassName('btn btn-default btn-forward');
for(var i=0; i<nextButton.length; i++){
nextButton[i].click();
}
window.scrollTo(0,0);
}, 10000);
但是,当我将上面的代码更改为下面的代码时,脚本不会单击按钮。 我必须使用setInterval函数吗? 这是修改后的但不起作用的代码:
function clickButtons(){
var followButtons = $('.buttonClass');
var numberOfButtons = followButtons.length;
for(var i=0; i<numberOfButtons; i++){
followButtons[i].click();
}
setTimeout(nextPage, 500);
}
function nextPage(){
var nextPageBtn = $('.nextPageButtonClass');
nextPageBtn.click();
setTimeout(clickButtons,500);
}
我可能会考虑使用书签,或者,如果项目需要,可以使用浏览器扩展。
由于您的代码需要对多个页面应用相同的操作,因此您需要以某种方式访问每个页面的HTML,同时始终保持对JS代码的访问。
对于书签,每次单击书签时,您都可以处理页面上的所有按钮,然后单击前进到下一页的按钮。 此时,您只需再次单击小书签。
对于扩展,我将使用一个布尔值,该值指示每次我从拥有的域访问页面时是否要执行指定的操作。 然后,一旦启用,我将访问第一页,让它单击所有按钮,单击前进的按钮,并允许重复调用脚本。
我认为小书签将是这两者中最合适的选择-快速,容易,需要注意的边缘情况。
我有一个小书签,可让您对页面上的任何表格进行排序。 只需导航到页面,单击书签,然后瞧瞧! 单击标题行中的一列将根据该行对表进行排序。 这是sorttable js库( http://www.kryogenix.org/code/browser/sorttable/#ajaxtables )提供的示例代码。
这是书签的“ URL”: javascript:(function(){var s=document.createElement('script');s.src='http://kryogenix.org/code/browser/sorttable/sorttable.js';s.onload=function(){sorttable.init();Array.prototype.slice.call(document.getElementsByTagName('table')).forEach(function(t){sorttable.makeSortable(t);})};document.getElementsByTagName('head')[0].appendChild(s);})()
在我看来,插入一些代码来执行按钮单击其中之一似乎微不足道。
奇怪,它应该可以正常工作。 我试图产生与您相同的逻辑,并且成功运行,这是我的代码:
<!DOCTYPE html>
<HTML>
<HEAD>
</HEAD>
<BODY>
<button type="button" onclick="doAction()" class="tw-action-button btn btn-sm ng-isolate-scope btn-primary"></button>
<button type="button" onclick="doAction()" class="tw-action-button btn btn-sm ng-isolate-scope btn-primary"></button>
<script type="text/javascript">
function doAction(){
alert("I'm clicked");
}
function clickButtons(){
var inputs = document.getElementsByClassName("tw-action-button btn btn-sm ng-isolate-scope btn-primary");
for (var index=0;index < inputs.length; index++){
inputs[index].click();
}
}
setTimeout(clickButtons,500);
</script>
</BODY>
</HTML>
然后,当我再次查看您的代码时,您的JQuery似乎未成功加载,因为您使用选择器,这是我能想到的唯一可能性。
var followButtons = $('.buttonClass');
为确保已成功加载,请尝试用此脚本替换所有JavaScript脚本,然后查看它是否弹出警告消息:
<script type="text/javascript">
$(document).ready(function(){
alert("JQuery loaded");
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.