在Chrome控制台中以编程方式单击页面上的所有按钮

13

我试图使用Chrome控制台来选择页面上的所有按钮并通过编程方式点击它们。类似于我正在测试的页面是这个:http://api.openstack.org/api-ref.html#compute-ext

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

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

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


1
类? $(".btn.small.info").click(); - mekwall
2
你可能还想延迟点击...只是一个想法,但同时点击所有按钮可能会根据它们的实际行为产生奇怪的效果。 - Salketer
在这种情况下,延迟点击是不必要的。 - allprog
有人能帮我解决这个问题吗? https://dev59.com/9WAg5IYBdhLWcg3wBXKs - Berque Cemilian
6个回答

14

好的,您需要确保仅选择部分中的按钮,以便不运行搜索。

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

1
这是完美的解决方案。#body 是正确运行所必需的。 - allprog
在Linux上的Chromium 50.0出现错误:Uncaught TypeError: $(...).trigger is not a function(…) - pevik
1
@pevik 我猜测这个解决方案所使用的页面上没有jQuery。 - epascarello

6

基于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);

嗨,虽然这是一个旧的帖子,但我想知道是否有解释。splice方法实现了什么?我猜测每次单击按钮时都会从数组中删除它? - James
@James 没错 :) https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice - mekwall

5

你的类似乎缺少了.。尝试以下其中之一:

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

所有这些只选择第一个按钮(在具有更多页面的情况下),出了什么问题?Chromium 50.0在Linux上。 - pevik
$(".delete").click(); --> 这个工作得很好!谢谢! - chainstair

5
假设页面已经包含了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。

4

4

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

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

可以使用标签名称来使用。

或者您也可以使用Xpath来定义特定元素 使用以下代码示例

*//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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接