所以我尝试单击特定网页上的所有按钮。但棘手的是,这些按钮只有当鼠标悬停在按钮上时才会显示。单击完页面上的所有按钮后,我需要单击下一页按钮。再次单击新网页上的所有按钮,依此类推。
我实际上有一个工作脚本。但我在 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 代码的访问权限。
对于小书签,每次单击它时,您都可以在单击前进到下一页的按钮之前处理页面上的所有按钮。此时,您只需再次单击小书签即可。
对于扩展程序,我将使用一个 bool 值来指示每次访问所属域的页面时是否要执行指定的操作。然后,一旦启用,我只需访问第一页并让它单击所有按钮,单击前进的按钮并允许重复调用脚本。
我认为小书签是这两个选项中最合适的选择 - 快速、简单、需要注意的边缘情况很少。
我有一个书签,允许您使页面上的任何表格可排序。只需导航到该页面,单击小书签,然后瞧!单击标题行中的列可根据该行对表格进行排序。这是 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);})()
在我看来,插入一些代码来执行其中一个按钮的点击似乎是微不足道的。
关于javascript - 使用javascript单击页面上的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35122032/