uiautomator2+adb shell input tap 实现微博自动取消关注

很久没有玩微博了,最近无意间打开微博想刷刷新闻,不看不知道一看吓一跳,我关注的人既然超过了一千多人,我的天,我什么时候关注了这么多人?我立即进入我关注的人寻找批量取消关注按钮,当时我恨不得直接全部删除,遗憾的是,我找了半小时都没有找到能一键取消所有的关注,555…… ,百度一番,网友介绍可以使用微博反垃圾修正关注,于是我抱着信心去修正我的关注了,可是……一个月只能修正一次,而且一次只修掉了几个或十几个人…………我……,于是乎我被迫打开sublime,然后写下了import uiautomator2……

首先导入需要的库:

import uiautomator2 as u2
import time
import subprocess
import re

第一步,打开微博进入我的关注页面,获取‘已关注“按钮的坐标:

def auto():
	subprocess.run("adb shell am start com.sina.weibo/com.sina.weibo.MainTabActivity")
	time.sleep(1)
	device(description="我").click()
	device(resourceId="com.sina.weibo:id/cabFollow").click()
	device(text="关注的人").click()
	time.sleep(0.5)
	#获取所有”已关注“按钮信息
	for i in device(text="已关注"):
		data = i.info
		data = str(data)
		#通过正则获取x和y坐标
		com = re.compile(".*?left':(.*?),.*?")
		com_1 = re.compile(".*?top':(.*?)}.*?")
		left = re.findall(com, data)
		top = re.findall(com_1, data)
		return left[0], top[0]

在auto方法里,我开始是使用uiautomator2 库去点击”已关注“按钮,本以为这样就可以愉快的自动取消关注了,可……人算不如天算啊!uiautomator2点不上”已关注“这个按钮,后面经过多轮的测试,我发现原来是uiautomator2里点击方法压下按钮到松开按钮时间太久了,也就是点击太慢……这这这 怎么办了?
于是无奈使用”adb shell input tap“,通过按钮的x y 坐标去点击按钮,但又有一个新的问题,我并不能确定每把手机的屏幕都是相同分辨率,在沉思了片刻后,我突然想到uiautomator2虽然无法点击”已关注“按钮,但我可以通过它获取”已关注“按钮的坐标啊!话落就干,盘它……

第二步,点击”已关注“按钮,如果当前页面没有”已关注“按钮,就滑动屏幕:

def main():
	while True:
		try:
			while True:
				data = auto()
				subprocess.run("adb shell input tap {} {}".format(data[0], data[1]))
				device(text="确定").click()
		except:
			subprocess.run("adb shell input swipe 100 400 100 100")

效果:
在这里插入图片描述
最后还是那句话,人生苦短,我用python,预祝我们早日成为大神………………
更多文章、小工具请访问我的个人博客:https://www.zztdd.cn/

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值