当前位置:   article > 正文

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

uiautomator2 shell

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

首先导入需要的库:

import uiautomator2 as u2
import time
import subprocess
import re
  • 1
  • 2
  • 3
  • 4

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

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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在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")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/445229
推荐阅读
相关标签
  

闽ICP备14008679号