繁体   English   中英

用javascript单击页面上的所有按钮

[英]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: 网页的HTML

我可能会考虑使用书签,或者,如果项目需要,可以使用浏览器扩展。

由于您的代码需要对多个页面应用相同的操作,因此您需要以某种方式访问​​每个页面的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM