赞
踩
很久没有玩微博了,最近无意间打开微博想刷刷新闻,不看不知道一看吓一跳,我关注的人既然超过了一千多人,我的天,我什么时候关注了这么多人?我立即进入我关注的人寻找批量取消关注按钮,当时我恨不得直接全部删除,遗憾的是,我找了半小时都没有找到能一键取消所有的关注,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/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。