顺晟科技
2021-06-16 10:41:03
538
最近收到一个任务,需要自动操作微信,这样就可以在微信好友之间自动收发消息,自动添加群成员为好友。个反应很简单,使用自动化测试工具,比如appium。实施完了才知道。首先,我无法连接usb电缆。第二,它们不能在同一个局域网中。第三,不能扎根。因为之前没有做过app的自动测试,所以不会开发app。所以走了很多弯路,所以做了特别说明。
微信自动化有几种方案:
1.它是通过ItChat api实现的
2.通过自动化工具如appium,
3.在手机上运行uiautomator2脚本,用ATX的QPython
4.将uiautomator2脚本打包成apk,在手机上运行
5.自动化是通过安卓系统的访问服务功能实现的
方案1:通过ItChat api实现
它的原理是实现网络微信的请求,模拟网络微信的请求,实现相应的功能。也就是说,只要网络版微信有一些功能,你就可以拥有。
图书馆的仓库地址:一个简单的介绍例子https://github.com/littlecodersh/ItChat
ItChat库的API文档是https://github.com/little codersh/ItChat/blob/master/docs/API . MD。
问题:
据说新注册的微信号无法登录微信网页版。由于这个计划被否决了,我没有继续学习
很容易封号。我觉得这是第二条消息造成的。随便写个回复应该没问题
它的一些功能已经过时了。看的时候最后一次更新是18年9月。微信界面升级后,部分API可能会出现错误。比如你得到了群成员,列表目前只返回你自己。看了源代码,在网页上查了一下F12,发现界面地址变了。既然这个方案被拒绝了,那就不往下看了,理论上可以稍微修改一下
选项2:通过自动化工具,
这个方案也是我们测试工程师常用的。具体实施请参考百度。
问题:您必须连接usb电缆(您可以通过wifi无线连接)或在虚拟机中运行。
Wifi无线链接:
通过adb命令启动远程服务,参考文档:https://www.cnblogs.com/howardwu/p/10182281.html.缺点:必须在同一个局域网,每次重启手机后都需要重启adb远程服务
通过无线ADB启用远程连接,参考文档:https://testerhome.com/topics/1383.缺点:它必须在同一个局域网上(当然虚拟专用网可以解决),并且这个应用程序需要root权限才能运行
方案三:和ATX在手机上用QPython运行uiautomator2脚本
这个方案的原理是在手机上安装atx-agent。然后在手机上启动atx-agent服务,然后在手机的QPython上运行uiautomator2脚本(其实就是把pc服务器运行到手机上)。
问题:重启手机后,必须先连接usb电缆才能启动atx-agent。你试图在手机上启动atx代理,但最终失败了。请让我知道谁会开始~ ~ ~
文档的大意是先在pc上安装必要的库,然后手动复制uiautomator2,重试库到手机,但是有可能我的手机没有根目录,对应的目录adb没有推送文件的权限。
后来直接在QPython中执行pip3安装,安装uiautomator2,重试成功。命令如下:
pip3安装uiautomator2
pip3安装重试
方案四:将uiautomator2脚本打包成apk,在手机上运行
这个方案的原理是把uiautomator2脚本打包成apk,然后直接在手机上运行打包好的apk。
具体实现很简单,可以按照文档一步一步来。参考文件:https://blog.csdn.net/pgz100/article/details/82971699
问题:运行此apk需要root权限。也就是说,要么手机系统是root,要么利用系统签名将apk打包成具有系统权限的apk。
个比较简单,只要你根手机系统
第二个不容易做到
国内厂商定制了Android系统,修改了签名文件。如果他们打开系统签名文件,也就是你可以轻松卸载他们预装的app,那么这个签名文件就没那么容易得到了。
或者你可以下载google的开源签名文件来打包你的apk,然后从google下载打包好的原生Android包,这样你的签名apk就有了在这个系统上运行的系统权限。或者下载安卓源代码,自己编译打包一个安卓系统,想怎么做就怎么做,我没有机会。
方案五:通过安卓系统的AccessibilityService功能实现自动化
接入服务最初是为了帮助残疾人使用安卓设备而设计的。首先对AccessibilityService进行扩展,实现自己的服务,实现了onAccessibilityEvent抽象方法,作为服务在后台运行。这样,当页面切换时,焦点发生变化,收到通知,弹出Toast等。系统会回调onAccessibilityEvent方法,这样就可以做自己想做的事情了。
问题:每次运行apk时,都需要手动打开辅助功能。这样做有点费力,但也是最接近我们要求的~ ~ ~ ~
21
2022-04
28
2021-08
28
2021-08
28
2021-08
28
2021-08
28
2021-08