18910140161

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

顺晟科技

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时,都需要手动打开辅助功能。这样做有点费力,但也是最接近我们要求的~ ~ ~ ~

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航