javascript - 用于触发 3,000 多个连续点击启用的前端操作的控制台脚本

标签 javascript jquery browser console pushbullet

问题

Pushbullet,由于我的 Asus Nexus 7 上的 Android 版本过时而导致一些错误,错误地添加了设备数千次。

我需要以编程方式(通过脚本)删除所有这些条目,因为删除的数量(每个都需要多次点击)实在太多,无法手动完成。 (我已经联系过 Pushbullet,但他们不会帮忙——没有牛肉。说真的,我完全理解。而且 PushBullet 也很棒。)

<小时/>

Pushbullet 设备列表页面上的代码

最初,我需要点击的按钮如下所示:

  <table class="crud" style="width:100%;white-space:nowrap">
    <tr>
      <td><input type="text" placeholder="nickname" value="Sony D5803" name="nickname" onchange="window._handler[12].apply(null, arguments);" onblur="window._handler[13].apply(null, arguments);" onkeypress="window._handler[14].apply(null, arguments);" /></td>
      <td>added 6 days ago</td>
      <td><button class="hover-red" onclick="window._handler[15].apply(null, arguments);">Delete</button></td>
    </tr>

    <tr>
      <td><input type="text" placeholder="nickname" value="Firefox" name="nickname" onchange="window._handler[20].apply(null, arguments);" onblur="window._handler[21].apply(null, arguments);" onkeypress="window._handler[22].apply(null, arguments);" /></td>
      <td>added 4 months ago</td>
      <td><button class="hover-red" onclick="window._handler[23].apply(null, arguments);">Delete</button></td>
    </tr>

    <-- I need to delete THESE entries below -->    
    <-- I need to delete THESE entries below -->    
    <-- I need to delete THESE entries below -->    
    <tr>
      <td><input type="text" placeholder="nickname" value="Asus Nexus 7" name="nickname" onchange="window._handler[28].apply(null, arguments);" onblur="window._handler[29].apply(null, arguments);" onkeypress="window._handler[30].apply(null, arguments);" /></td>
      <td>added 6 months ago</td>
      <td><button class="hover-red" onclick="window._handler[31].apply(null, arguments);">Delete</button></td>
    </tr>

    <tr>
      <td><input type="text" placeholder="nickname" value="Asus Nexus 7" name="nickname" onchange="window._handler[32].apply(null, arguments);" onblur="window._handler[33].apply(null, arguments);" onkeypress="window._handler[34].apply(null, arguments);" /></td>
      <td>added 6 months ago</td>
      <td><button class="hover-red" onclick="window._handler[35].apply(null, arguments);">Delete</button></td>
    </tr>
    <-- I need to delete THESE entries above -->    
    <-- I need to delete THESE entries above -->    
    <-- I need to delete THESE entries above -->    
    ...

单击“删除”按钮后,“取消”按钮将取代“删除”按钮,并且“删除”按钮会移至“取消”按钮旁边的一侧。

为了删除项目/设备,我需要单击第一个“删除”按钮,然后单击第二个“删除”按钮。我将它们称为“第一”和“第二”,因为最初“删除”按钮具有“.hover-red”类,但单击它后,更新的“删除”按钮具有“.red”类,如下所示:

<tr>
    <td><input type="text" placeholder="nickname" value="Asus Nexus 7" name="nickname" onchange="window._handler[32].apply(null, arguments);" onblur="window._handler[33].apply(null, arguments);" onkeypress="window._handler[34].apply(null, arguments);" /></td>
    <td>added 6 months ago</td>
    <td>
<-- this is what the button code changes to once clicking a "Delete" button -->
        <button class="red" onclick="window._handler[39].apply(null, arguments);">Delete</button> 
        <button class="gray" onclick="window._handler[40].apply(null, arguments);">Cancel</button>
    </td>    
</tr>
<小时/>

到目前为止我尝试过的

我尝试过很多脚本,有些更简单,有些更复杂,但似乎都不起作用。到目前为止,这给出了最好的结果。它单击按钮(虽然我不知道按什么顺序),但它不会删除任何条目。该代码仅限于 5 个条目,因为当我执行整个列表时,它会持续大约 5 分钟而没有结果 - 至少这样我很快就会发现它不起作用。

我的选择器是正确的,因为当我执行 console.logging 时,会选择所有正确的内容,但单击仍然失败。另请注意,我的代码始终将列表中的一个按钮保持打开状态(例如,它成功单击了按钮,并且单击的最后一个“删除”按钮在其位置留下了“删除”按钮和“取消”按钮一次代码已完成运行)。

function deleteAsus() {
    var n;
    $('.crud input[value="Asus Nexus 7"]').each(function(){
        n++;
        if (n =< 5) {
            //console.log(this); //works!
            //console.log($(this).parent().parent().find('.hover-red')); //works!
            //console.log($(this).parent().parent().find('.red')); //works!
            $(this).parent().parent().find('.hover-red').click().delay(3000).parent().parent().find('.red').click();
            //$(this).parent().parent().find('.red').click();
        } else {
            return;
        }
    });
}
deleteAsus();

正如您在上面的代码中看到的,我最近的尝试是在单击“第一个删除”按钮和“第二个删除”按钮之间设置延迟,但这似乎没有任何作用,而且延迟似乎不起作用全部。

我知道很难帮助您解决此问题,因为除非您拥有自己的 Pushbullet 帐户,否则实际上不可能重新创建“Pushbullet 设备屏幕”代码,因此如果我有任何方法可以帮助您,请告诉我(并给我看钱!)

最佳答案

我终于找到了一种方法来编写这段代码

  1. 点击第一个“删除”按钮
  2. 等待 1.5 秒,让 DOM 发生变化 --> 第一个按钮的类和位置/CSS 发生变化
  3. 然后按新的红色“删除”按钮
  4. 最后,它会再等待 1.5 秒,然后重新启动该进程
  5. 此操作将持续到删除所有具有重复名称的设备

正如我们所说,它正在删除重复的设备,每 3 秒删除 1 个。当我开始时,总数为 1420,当我输入此内容时,总数已降至 1300 左右。

代码:

var assNex7 = $('.crud input[value="Asus Nexus 7"]');
var n = 0;
function clickRed() {
    n++;
    setTimeout(function() {
        $('.red').click();
        setTimeout(function() {
            deleteDevice();
        }, 1500);
    }, 1500);
}
function clickDelete() {
    $('.crud input[value="Asus Nexus 7"]').eq(0).parent().parent().find('.hover-red').click();
    clickRed();
}
function deleteDevice() {
    if (n < assNex7.length) clickDelete();
}
deleteDevice();

关于javascript - 用于触发 3,000 多个连续点击启用的前端操作的控制台脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758692/

相关文章:

javascript - Bootstrap/Javascript/JQuery 使按钮一次改变一种颜色

jquery - 在移动/桌面模式之间切换时如何启用/禁用某些 css 属性?

javascript - 我如何获得文本所属的跨度类ID?

c# - 使用C#登录网站

java - 是否可以使用 GWT 构建像独立小部件(如 slider 或日期选择器等)一样的 jquery?

javascript - Firefox 的右键单击检测

javascript - 重新编码fly-out menu函数使parent LI的 "sticky"

javascript - 当输入[范围]值改变/拇指拖动时触发功能

browser - 普通浏览器和 headless 浏览器的区别

Javascript检查浏览器