3. 手机自动化操作

到此,接下来就是如何做到手机自动去接取微信的账单cookies, 这里有多种方法:

  1. 可以手工隔一段时间,操作微信账单的下拉操作

  2. 自动化操作手机唤醒,并打开微信APP。自动定位到账单页面。

我们这里就介绍第二种方法,这里思考的地方,就是什么事件时,操作自动化呢?我们可以判断,当 redis 的wechat_cookies 为空时, 我们就自动化操作一次。这里的wechat_cookies当失效时,删除redis的wechat_cookies就可以达到通信,联动了。

唤醒,我们用 adb 操作, 自动化操作app 我们用 appium

可以通过以下两种方式之一安装Appium:通过NPM或通过下载Appium Desktop, 服务端可以安装appium-docker:

下载的Appium Desktop 启动:

https://lsol-house-upload.oss-cn-hangzhou.aliyuncs.com/2019-12-30/01a949f1-547b-413a-8986-460bae259622.png

安装 Appium-Python-Client:

$ pipenv install Appium-Python-Client

设置desired_caps:

{
   "platformName": "Android",
   "platformVersion": "4.4.2",
   "deviceName": "127.0.0.1:62001",
   "appPackage": "com.tencent.mm",
   "appActivity": "com.tencent.mm.ui.LauncherUI",
   "unicodeKeyboard": true,
   "resetKeyboard": true
}
  1. platformName可设置为:iOS or Android

  2. platformVersion: 安卓看下设置-关于平板电脑-Android版本号 这里为4.4.2

  3. deviceName: 这里通过adb devices查看,得到127.0.0.1:62001

  4. appPackage: “com.tencent.mm”

  5. appActivity: “com.tencent.mm.ui.LauncherUI”

上面两个用工具aapt dump badging weixin_1560.apk(包名,可以是绝对地值,我这里用了相对):

...
package: name='com.tencent.mm'
...
launchable-activity: name='com.tencent.mm.ui.LauncherUI'

就能查到apk的appPackage与launchable-activity

配置好appium后,在手机上安装好微信后,就可以启动服务

现在可以写代码自动化操作app:

from appium import webdriver
import time
import os

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '8.0.0'
desired_caps['automationName'] = 'xcuitest'
desired_caps['deviceName'] = 'iPhone Simulator'

def execute(cmd):
   str = adbShell.format(cmdStr=cmd)
   os.system(str)

while True:
   # 滑动 从  928 541  滑动到  928 331   用100毫秒,激活输入密码
   execute("input swipe 928 541 928 331 100")
   # 往输入框中输入文字 。前提是输入框获得了焦点, 输入密码
   execute("input text '1111'")
   self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps, direct_connection=True)
   time.sleep(3600)

写着,发现这一节的文章,要写的东西太多了,只能简单写了。关键点,其实也都描述了,就是逻辑可以根据你自已的需求来做程序。 主要是一个唤醒手机用adb,有密码的情况,可以用shell swipe上滑手机屏幕,再输入密码,接着打开APP。用appium定位到app的元素, 进行单击,与下拉刷新。