首页 > 上网技巧 > 电脑小技巧 > 自动化操作微信的几种解决方案

自动化操作微信的几种解决方案

时间:2020-02-13 11:26 作者:QQ地带 我要评论

 最近接到一个任务,需要自动操作微信,实现微信好友间自动收发消息,自动将群成员添加为好友。第一反应就是简单,使用 appium 等自动化测试工具即可。等实现完了才知道,第一,不能连usb线。第二,不能在同一个局域网。第三,不能root。由于之前没做过app自动化测试,也不会app开发。所以走了很多弯路,所以特意记录一下。
 
  自动化操作微信有如下几种方案:
 
    1、通过 ItChat api 实现
 
    2、通过 appium 等自动化工具
 
    3、借助 ATX 在手机上使用 QPython 运行 uiautomator2 脚本
 
    4、将 uiautomator2 脚本打包到 apk 中在手机上运行
 
    5、通过安卓系统辅助服务(AccessibilityService)功能实现自动化
 
方案一:通过 ItChat api 实现
   ItChat api 的原理是实现了网页版微信的请求,模拟网页微信的请求,实现对应的功能。也就是说只要网页版微信有的功能,你就可以有。
 
  ItChat 库的GitHub仓库地址+简单入门示例 https://github.com/littlecodersh/ItChat
 
  ItChat 库的API文档 https://github.com/littlecodersh/ItChat/blob/master/docs/api.md
 
  问题:
 
据说新注册的微信号不能登录网页版微信,由于这个方案被否,我也没继续研究
ItChat容易封号,这个我考虑是秒回消息引起,写个方法随机回复应该没有问题
ItChat部分功能过时。我看的时候最后更新时间是18年9月。有些api可能是因为微信接口升级后造成错误。例如得到群成员,目前list只返回你自己。看了下源码,并对了一下网页中的F12,发现接口地址改了。由于这个方案被否,也没往下看,不过理论上稍做修改即可
方案二:通过 appium 等自动化工具
   这种方案也是咱们测试工程师最常用的,具体实现请参见baidu。
 
  问题:必须连接usb线(当然可以通过wifi无线连接)或跑在虚拟机中。
 
  wifi无线链接:
 
通过 adb 命令启动远程服务,参考文档:https://www.cnblogs.com/howardwu/p/10182281.html 。缺点:必须在同一局域网,每次重启手机后需要重新开启 adb 远程服务
通过 Wireless ADB 启动远程连接,参考文档: https://testerhome.com/topics/1383 。缺点:必须在同一局域网(当然vpn等可以解决),这个 app 需要root权限才能运行
 方案三:借助 ATX 在手机上使用 QPython 运行 uiautomator2 脚本
   此方案的原理是在手机上安装 atx-agent 。然后在手机上启动 atx-agent 服务,之后在手机的 QPython 上运行 uiautomator2 脚本(其实就是将pc服务端,跑到了手机上)。
 
  问题:每次重启手机后必须先连接 usb 线启动 atx-agent,曾经尝试在手机上启动 atx-agent 但最后没能成功,谁会启动还请不吝赐教~~~
 
 
 
    文档的总体思路是先在pc上安装必要库,然后手动将 uiautomator2、retry 库复制到手机上,但有可能是我的手机没有 root 的原因相应的目录 adb 没有权限 push 文件。
 
    后来直接在 QPython 中执行 pip3 install 直接安装 uiautomator2、retry 成功,命令如下: 
 
 
pip3 install uiautomator2
pip3 install retry
方案四:将 uiautomator2 脚本打包到 apk 中在手机上运行
  此方案的原理是将 uiautomator2 脚本打包到 apk 中,然后在手机上直接运行打包好的 apk 即可。
 
  具体实现很简单,按照文档一步步做即可,参考文档:https://blog.csdn.net/pgz100/article/details/82971699
 
  问题:要想运行此 apk 需要 root 权限。也就是要么将手机系统 root 了,要么将 apk 使用系统签名打包成具有系统权限的 apk 。
 
第一种相对简单,只要你 root 了你的手机系统即可
  第二种就不好搞了
 
国内厂商对安卓系统进行了定制,并且修改了签名文件。如果他们开放系统签名文件,也就是你可以轻易的卸载他们预装的app,所以这个签名文件不是那么好得到。
或者可以下载 google 开源的签名文件打包你的 apk,然后再从 google 下载打包好的原生安卓包,这样你签名的 apk 在这个系统上运行就有系统权限。 或者下载安卓源码自己编译打包一个安卓系统,这样你想干嘛都可以了,但我没戏。
 方案五:通过安卓系统的辅助服务(AccessibilityService)功能实现自动化
  辅助服务(AccessibilityService)本来是为了帮助残障人使用安卓设备。首先扩展 AccessibilityService 实现一个自己的服务,并实现 onAccessibilityEvent 抽象方法,并以一个服务的形式在后台运行。这样当页面切换、焦点改变、收到通知、弹出Toast等,系统会回调 onAccessibilityEvent 方法,这样你就可以干自己想干的事情了。
 
 
 
  问题:每次运行你的 apk 都需要手动打开 辅助功能。这么干有些费劲,不过也是最接近我们的要求~~~~

标签: 微信
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告