GreaseMonkey批量删除微博代码

没直接使用HTTP协议,我想试试JavaScript直接操控Web界面,类似某些自动化测试工具那样。

删除确认对话框不知道是动画效果还是防bot保护等缘故,同一个div会弹出消失重复6次,如果在第一次自动点击“确定”,会无效,并且之后再也无法弹出。

在这里插入图片描述
在这里插入图片描述我写了一个自动删除下一条的按钮,效果还行,按一下删除一个。代码如下:

let button = document.createElement('button');
button.innerHTML = '删除下一条';
button.style.cssText = 'display:block;position:fixed;right:0;bottom:0;';
button.onclick = function() {
	let deleteLink = document.querySelector('a[action-type=feed_list_delete]');
  if (deleteLink) {
    console.log(deleteLink);
    let popupCount = 0;
    let autoClickPopupOkButton = function(e) {
      let node = e.target;
      if (node.classList.contains('W_layer_pop')) {
        popupCount++;
        console.log('inserted', popupCount, node);
        if (popupCount == 6) {
          document.removeEventListener('DOMNodeInserted', autoClickPopupOkButton);
          let okButton = node.querySelector('a[action-type=ok]');
          if (okButton) {
            okButton.click();
          }
        }
      }
    }
    document.addEventListener('DOMNodeInserted', autoClickPopupOkButton);
    deleteLink.click();
  }
};
document.body.appendChild(button);

如果需要完全自动地删除本页所有微博,代码大致如下,不过确认对话框多次弹出的问题不太好解决,即便写出来也未必完美,未必以后还能用,不想费这个功夫了。

function* clickNextDeleteLink() {
  for (let deleteLink of document.querySelectorAll('a[action-type=feed_list_delete]')) {
  	console.log(deleteLink);
    deleteLink.click();
    yield true;
  }
}

function batchDelete() {
  document.addEventListener('DOMNodeInserted',function(e) {
    let node = e.target;
    if (node.classList.contains('W_layer_pop')) {
      console.log('inserted', node);
      let okButton = node.querySelector('a[action-type=ok]');
      if (okButton) {
        okButton.click();
      }
    }
  });
  document.addEventListener('DOMNodeRemoved',function(e) {
    let node = e.target;
    if (node.classList.contains('W_layer_pop')) {
      console.log('removed', node);
      clickNextDeleteLink.next();
    }
  });
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值