【问题标题】:Programmatically clicking all buttons on a page in Chrome's console以编程方式单击 Chrome 控制台中页面上的所有按钮
【发布时间】:2013-06-22 10:17:44
【问题描述】:

我正在尝试使用 Chrome 控制台选择页面中的所有按钮并以编程方式单击它们。与我正在玩的页面类似的页面是:http://api.openstack.org/api-ref.html#compute-ext

我已经尝试执行下面的命令,但它没有达到我想要的效果。

$("btn small info").click()

这可能吗?我应该发出什么命令?

【问题讨论】:

  • 上课? $(".btn.small.info").click();
  • 您可能还想延迟点击...只是一个想法,但同时点击所有按钮可能会产生奇怪的效果,具体取决于它们的实际行为。
  • 在这种情况下不需要延迟点击。
  • 有人可以帮我解决这个问题吗? stackoverflow.com/questions/24043355/…

标签: jquery html google-chrome console


【解决方案1】:

好吧,您要确保只选择该部分中的按钮,这样您就不会运行搜索。

$("#body .btn").trigger("click");

【讨论】:

  • 这是完美的解决方案。正确操作需要#body
  • Linux 上 Chromium 50.0 上的错误:Uncaught TypeError: $(...).trigger is not a function(…)
  • @pevik 我猜这个解决方案使用的页面上没有 jQuery。
【解决方案2】:

根据 Salketers 对该问题的评论,这里有一个小脚本,它将以编程方式以 1 秒的间隔一个接一个地单击所有按钮,并将单击的按钮记录到控制台:

var buttons = $("button"), 
    interval = setInterval(function(){
        var btn = $(buttons.splice(0, 1));
        console.log("Clicking:", btn);
        btn.click();
        if (buttons.length === 0) {
            clearInterval(interval);
        }
    }, 1000);

【讨论】:

【解决方案3】:

您的班级似乎缺少.。 尝试以下方法之一:

$(".btn").click();
$("button").click();
$("input:submit").click();
$(".btn.small.info").click();

【讨论】:

  • 所有这些都只选择第一个按钮(在更多页面上),有什么问题? Linux 上的 Chromium 50.0。
  • $(".delete").click(); --> 这就像一个魅力?? 谢谢!
【解决方案4】:

假设页面已经包含了 jQuery 库(引用的页面就是这样),那么:

$(".btn.small.info").click();

这将隐式遍历具有这三个类的所有选择器,并模拟点击事件。

如果页面没有必要的 jQuery 库,那么在执行上面的命令之前试试这个:

var jq = document.createElement('script');
jq.src = "http://code.jquery.com/jquery-latest.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();

请注意,您在问题中使用的命令不会选择 btn 类的元素等。您必须使用点来选择 .class

【讨论】:

    【解决方案5】:

    [新手的简单解决方案]使用下面点击所有匹配的元素

    var btns = document.getElementsByClassName('followBtn')
    for (var i =0; i<btns.length; i++) 
    btns[i].click();
    

    也可以与标签名称一起使用。

    或者你也可以使用 Xpaths 来定义特定的元素使用下面的代码示例

    *//Xpath to get all the elements whose class is "followBtn" and tagname button*
    var btns = $x('//button[@class="followBtn"]')
    
    *// looping through all the elements in btns*
    for (var i =0; i<btns.length; i++) 
    btns[i].click();
    

    【讨论】:

      【解决方案6】:

      您的选择器可能有误。 尝试做这样的事情

      $(".btn.small.info").click();
      

      这将单击一个带有 btn small info 类的按钮,您尝试单击 dom 元素。

      这里有更多关于 jQuery 选择器的文档:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-10
        • 1970-01-01
        • 2021-08-05
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多