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

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

  1. adb shell input(系统服务:input)

    adb shell input 模拟登陆,需要使用如下命令 备注:"开发者选项" - "指针位置"打开后,可以获取坐标值 用途一: adb shell inpu ...

  2. adb模拟三指划动,ADB命令系列之 adb shell input(Android模拟输入)简单总结

    最近开发一个新的接口,在调试的时候要手动输入蛮多参数,关键是参数又都太长,就专门看了下 adb 有木有模拟输入,果然adb shell里是有的.这样以后开发调试.自动化测试等就更加方便了.专门简单总结 ...

  3. adb inputswipe shell_android adb shell input各种妙用

    项目中使用一个开发版,预留两个usb接口.类似华硕TinkerBoard. 一个用户连接摄像头,一个用于adb调试.结果就没了鼠标的接口. 多次切换鼠标和摄像头插头,非常不方便,带摄像头的app没法调 ...

  4. 我的Android进阶之旅------gt;Android中通过adb shell input来模拟滑动、按键、点击事件...

    今天在维护公司的一个小项目的时候,发现按公司手机的某个物理按键,激活相应的Service后,会在屏幕上模拟的点击了屏幕的某个坐标点.好家伙,原来是之前该项目的版本是按这个物理按键后,会弹出一个对话框, ...

  5. adb shell input text 完美支持中文输入

    adb 默认是不支持Unicode编码的,无法通过adb shell input text 命令输入中文到手机或模拟器 解决中文输入 还得感谢老外写了一个输入法,源码地址:https://github ...

  6. appium---操作手机按键(adb shell input keyevent )

    通常在做app测试的时候,我们都会用到一些开机键,返回键,home键等一系列的操作来帮助我们测试,那么在自动化中如何实现这些呢? keyevent keyevent表示android中的模拟手机的一些 ...

  7. adb inputswipe shell_[Android]通过adb shell input上报命令模拟屏幕点击事件【转】

    常用的 input上报命令: input text 1234 实际向界面注入1234文字,有输入框,能明显看到效果 input keyevent 4 键盘事件,4 为返回 input tap 100 ...

  8. [Android]通过adb shell input上报命令模拟屏幕点击事件

    常用的 input上报命令: input text 1234 实际向界面注入1234文字,有输入框,能明显看到效果 input keyevent 4 键盘事件,4 为返回 input tap 100 ...

  9. adb shell input text 中文输入方法

    adb输入中文问题:adb不支持unicode字符,只支持ASICC字符.所以直接输入汉字会报错 那么可以用ADBKeyBoard.apk 下载地址https://pan.baidu.com/s/1z ...

最新文章

  1. 产品经理要读什么书?怎么读?
  2. 理解AMD ,CMD,CommonJS规范
  3. 基于mysql的主从复制之Mycat简单配置和高可用
  4. 2.mysql优化---增删改优化
  5. c语言3种链接属性: 外部(external), 内部(internal),无设置(none)
  6. python ide如何运行_ide - 如何运行Python程序?
  7. angularjs php 实例下载,AngularJS Eclipse 1.2.0 插件下载
  8. 基于JAVA+SpringMVC+MYSQL的在线考试系统
  9. mysql无法通过工具连接_MySQL 8.0版本无法使用 node、Navicat等三方工具连接的问题...
  10. 黑马十次方2.0项目
  11. excel power bi 常用函数
  12. linux 计算cpu利用率
  13. HTML设置文字的格式
  14. 利用XMLHTTP实现ASP.NET无刷新提交 (老梁)
  15. 百忙之中抽空看了下最近几个月问的比较多的问题(为了不让一些朋友继续走弯路)...
  16. 计算机中函数vlookup怎么用,教您使用excel函数vlookup
  17. matlab 色温图,技术:图文教你了解色温及如何选择色温
  18. ogg高版本到低版本同步
  19. python_day11(笔记及练习)
  20. HaaS EDU物联网教育开发板来啦!漂亮的不像开发板!

热门文章

  1. 控制台、操作台、调度台如何区分?
  2. 简单的视频剪辑入门制作软件,适合新手哦,快快收藏
  3. 鹏业安装云算量免费使用,只需这几步
  4. Python教程三:使用Flask搭建web服务
  5. 虾皮shopee跨境电商靠谱吗
  6. ps CS6 不能直接拖入图片的问题!!win8 系统下
  7. Java实现CRC16 CCITT
  8. 软件开发中 常见英文文档 缩写(转)
  9. LintCode 488.快乐数
  10. 不等式的格式(python)