【好奇心驱动力】APP每日打卡自动化测试

0.前言

最开始写过利用夜神模拟器结合appium,做APP自动化测试
1.python–安卓APP自动化测试环境搭建(Appium+夜神模拟器)
这是win10实现的,电脑总不能一直开着,想到能不能在树莓派上跑一下,弄了很久也没安装成功安卓模拟器,退而求其次现在用旧手机作为安卓终端,直接控制实现。

1.实验目的

自动化实现【什么值得买】APP自动打卡功能,并截图发送到微信,及时检查打卡是否成功。

2.实验方法

树莓派连接安卓手机,adb代码控制打卡截图,上传【巴法云】推送到微信。

  • 连接手机
    安卓手机通过数据线连接树莓派后,打开手机USB调试,找到【开发者选项】-【指针位置】
    ,打开之后能够看到当前按压位置的准确坐标,记录下来作为输入密码用。在这里插入图片描述

  • 解锁手机
    直接用adb的命令可以模拟触摸操作,很多功能也有现成的。
    【 需要点亮屏幕,上划进入解锁界面,输入密码】
    在这里隐去部分解锁密码,测试好每个数字精确位置,如下代码,首先adb keyevent26是作为开启电源键;滑动屏幕需要adb swipe从一个位置到另一个位置;输入密码需要adb tap 数字位置。

def mobile_in(code):
    #   开启电源键
    os.popen('adb shell input keyevent 26')
    time.sleep(1)
    #   滑动屏幕进入输入密码界面
    os.popen('adb shell input swipe 800 1800 800 1000')
    time.sleep(1)
    for i in range(len(code)):
        if code[i] == '9':
            os.popen('adb shell input tap 820 1600')
            time.sleep(0.5)
        elif code[i] == '6':
            os.popen('adb shell input tap 850 1400')
            time.sleep(0.5)
  • APP打卡
    首先确定APP包的具体名称【com.smzdm.client.android/.app.HomeActivity】
    可以通过以下命令行查看。
adb shell pm list package

打开APP后,需要找到打卡位置坐标进行tap,完成打卡。
在这里思路和python–安卓APP自动化测试环境搭建(Appium+夜神模拟器),不太一样,之前可以通过关键字进行定位,在这里为了方便还是通过坐标进行定位,注意如果有APP更新或者其他弹窗提示,需要进一步对应进行优化。

def check():
    time.sleep(3)
    os.system('adb shell am start -n com.smzdm.client.android/.app.HomeActivity')
    time.sleep(5)
    os.system('adb shell input tap 950 2200')
    time.sleep(5)
    os.system('adb shell input tap 880 310')
    time.sleep(5)
    os.system('adb shell am force-stop com.smzdm.client.android')
  • 截图上传
    截图上传这个想法,是整体功能做好了以后突然想到的,参照之前ESP32cam拍照上传,所以可以截图上传,推送到微信,对打卡情况进行检查。
    ESP32cam拍照上传参考:
    2.【好奇心驱动力】ESP32-CAM人体感应拍照并推送到微信
    【巴法云】官方示例都是基于ESP32的,需要考虑上传数据具体格式,通过查看接入文档,能够找到图片HTTP POST要求,消息体是图片二进制格式。
    在这里插入图片描述
    对应对构造POST内容。
    截图保存到树莓派,直接通过adb screencap,开始以为截图会保存一份到手机,后面发现只存一份到代码同一目录下。
def screencap():
    os.system("adb shell screencap -p /sdcard/a.png")
    os.system("adb pull /sdcard/a.png .")
    load()
    
def upload():
    data = open("a.png","rb").read()
    headers = {"Content-Type":"image/jpg","Authorization":uid,"Authtopic":topic,"Wechatmsg":wechatMsg}
    rep = requests.post(url=post_url,data=data,headers=headers)
    print (rep)
  • 定时启动
    定时启动暂时用的是python schedule库,没有用树莓派sudo crontab -e,这个后续运行一段时间再进行调整,主要是懒得再写日志了。
schedule.every().day.at("20:49").do(main)
while True:
    schedule.run_pending()
    time.sleep(1)

3.实验结果

【解锁手机】
在这里插入图片描述
【APP打卡】

在这里插入图片描述
【截图上传】
代码运行结果
在这里插入图片描述

微信提醒
在这里插入图片描述
打卡记录
在这里插入图片描述

4.后续问题

最好能够在树莓派上安装安卓模拟器,这样能够省去连接手机。
代码运行改为计划任务比较好。
【源代码】
https://download.csdn.net/download/m0_46622606/50678738

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>