聊聊 Python 自动化脚本打包成 APK
云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!
之前有读者朋友说 Airtest 官方支持将自动化脚本编译成 APK 直接运行,照着官方提供的文档操作了一遍,发现不少的坑,今天带大家一起来填这些坑。
在开始编写自动化脚本之前,我们首先要下载安装 JDK,并配置 JDK 和 ADB 到环境变量中。
以刷抖音短视频这一自动化操作为例,首先我们使用 Airtest IDE 新建一个 .air Airtest 项目。
和常规自动化操作类似,我们需要借助 ADB 命令拿到抖音 App 的应用包名和初始 Activity,利用 start_app() 方法打开抖音。
package_name = 'com.ss.android.ugc.aweme' activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity' # 部分手机需要开启模拟点击 start_app(package_name,activity=activity_name)
接着拿到屏幕的宽、高数值,利用 swipe() 方法模拟滑动,即可以实现切换视频的操作。
device_attrs = device() print(device_attrs.uuid) # 获取设备的高度和宽度 width, height = device_attrs.get_current_resolution() print(width) print(height) # 开始刷抖音 while True: # 滑动一次 swipe( (width * 0.5, height*3/ 4),(width * 0.5, height / 4),duration=1) sleep(2)
上面这段代码直接在 IDE 运行,自动化操作能正常运行。
下一步,利用 Firebase 打包脚本,依次点击:Firebase - 打包多个脚本 - 选择目标脚本,等待本地生成一个 apk 文件。
使用 adb 命令将 apk 安装到手机上,接着通过 instrument 开启自动化操作。
# 开启自动化任务 adb shell am instrument -w com.netease.open.airbase/android.support.test.runner.AndroidJUnitRunner
坑一:运行之后很快就报错了,报 device() 方法在 kivy 中没有实现。
官方文档提到的原生应用的 poco 没法使用,包含 device() 在内的很多方法,虽然属于 airtest 内部的方法,但是打包成 apk 识别不到。
我们可以将宽度和高度写死,然后再进行滑动操作。
width = 1080 height = 2160 swipe( (width * 0.5, height*1/ 4),(width * 0.5, height*3 / 4),duration=0.5)
坑二:向上滑动事件处理不当。
测试多台设备后发现,脚本代码生成的 apk 在不同设备上运行结果不一致。
仅上面的向上滑动这一步操作,有些手机当做 长按屏幕 来消费,还有一些手机当做 下拉刷新 来处理。
建议先在 Airtest IDE 中运行,保证脚本的正确性的前提下,再去替换改写不被 apk 识别的部分。
总之,利用 Firebase 打包自动化脚本成 apk 单独运行还不是很稳定,另外一起打包内置的 kivy 库还需要兼容和完善,期待官方下一版本。
云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
疫情后的裁员,会轮到你么:想稳定,你得有铁饭碗
【背景】 2月6日,知名IT培训机构“兄弟连教育”创始人李超,发表了《致兄弟连全体学员、员工、股东的一封信》,他表示即日起,兄弟连北京校区停止招生,员工全部遣散。 2.10春节之后复工的第一天。在上班第一天的员工大会上,新潮传媒宣布减员500人。新潮传媒高管向媒体透露上午开会宣布减员500人,占总员工数的10%,高管集体降薪20%。 而更残酷的是,有些人还没等到复工,就已经被裁了。这真应了网上的一个段子: 公司通知一,假期延迟到2月2日; 公司通知二,假期延长到2月10日; 公司通知三,假期延长到2月17日; 公司通知四,公司没有了,不用回来了。 【疫情下,每个职场人都要思考这三点 】 01 为什么疫情后一定会有一波裁员? 很多时候,我们不需要过多分析,看政策就知道了,国家比我们敏感得多。 拿北京举例吧。2月6日北京出台了促进中小微企业发展的政策。 我拿关键词“裁员”检索出两条相关信息: 1、减免中小微企业房租:中小微企业承租京内市及区属国有企业房产从事生产经营活动,按照政府要求坚持营业或依照防疫规定关闭停业且不裁员、少裁员的,免收2月份房租;承租用于办公用房的,给予2月份租金50%的...
- 下一篇
物联网平台服务端订阅排查流程
简介 服务端可以直接订阅产品下所有类型的消息:设备上报消息、设备状态变化通知、网关发现子设备上报、设备生命周期变更、设备拓扑关系变更。配置服务端订阅后,物联网平台会将产品下所有设备的已订阅类型的消息转发至您的服务端。⭕️消息流转过程为:设备——物联网平台——服务端⭕️如果是老的HTTP2订阅,请尽快更新到AMQP订阅 排查过程 一、检查控制台相应参数配置。A.相应产品订阅类型(AMQP还是MNS) 1.如果是AMQP订阅,检查这个产品选择的消费组(例如:如果只选择了消费组A,但是服务端代码里用的是消费组B的消费组ID,自然订阅不到消息) 2.MNS订阅不涉及消费组概念,检查产品对应的队列是否正常创建即可B.勾选的推送消息类型 1.如果只勾选了设备状态变化通知,那服务端自然订阅不到“设备上报消息”了 二、检查上报的数据格式大多数情况都是设备端进行属性上报,然后在服务端订阅不到消息。这个时候看一下控制台上的日志,找到物模型数据分析的日志,检查物模型解析是否正常。(在上行消息分析日志里看到消息,只能表示消息到了平台,但是很有可能物模型解析失败,所以不会推送到服务端。因此一定要看物模型数据分析...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- MySQL8.0.19开启GTID主从同步CentOS8