IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【好奇心驱动力】APP每日打卡自动化测试 -> 正文阅读

[系统运维]【好奇心驱动力】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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:39:26  更:2021-11-28 11:39:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:56:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码