控制台脚本触发 3,000 多个连续点击启用的前端操作
Console Script to Trigger 3,000+ Consecutive Click-enabled Front-end Actions
问题
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 -->
...
点击“删除”按钮后,一个“取消”按钮代替了“删除”按钮,“删除”按钮移到了旁边,在“取消”按钮旁边。
为了删除 item/device,我需要单击第一个“删除”按钮,然后单击第二个“删除”按钮。我将它们称为“第一”和“第二”,因为最初“删除”按钮具有 class“.hover-red”,但在单击它之后,更新后的“删除”按钮具有 class“ .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>
到目前为止我已经尝试过什么
我试过很多脚本,有些更简单,有些更复杂,但 none 似乎可行。到目前为止,这给出了最好的结果。它点击按钮(虽然我不知道按哪个顺序)但它不会删除任何条目。此代码限制为 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 设备屏幕”代码,所以如果有任何我可以帮助你的方法,请让我知道(并给我钱!)
我终于想出了一个方法来将这段代码写入
- 先点击"Delete"按钮
- 等待 1.5 秒 DOM 更改 --> 第一个按钮的 class 和 position/CSS 更改
- 然后按下新的红色 "Delete" 按钮
- 最后,它又等了 1.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();
问题
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 -->
...
点击“删除”按钮后,一个“取消”按钮代替了“删除”按钮,“删除”按钮移到了旁边,在“取消”按钮旁边。
为了删除 item/device,我需要单击第一个“删除”按钮,然后单击第二个“删除”按钮。我将它们称为“第一”和“第二”,因为最初“删除”按钮具有 class“.hover-red”,但在单击它之后,更新后的“删除”按钮具有 class“ .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>
到目前为止我已经尝试过什么
我试过很多脚本,有些更简单,有些更复杂,但 none 似乎可行。到目前为止,这给出了最好的结果。它点击按钮(虽然我不知道按哪个顺序)但它不会删除任何条目。此代码限制为 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 设备屏幕”代码,所以如果有任何我可以帮助你的方法,请让我知道(并给我钱!)
我终于想出了一个方法来将这段代码写入
- 先点击"Delete"按钮
- 等待 1.5 秒 DOM 更改 --> 第一个按钮的 class 和 position/CSS 更改
- 然后按下新的红色 "Delete" 按钮
- 最后,它又等了 1.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();