【使用 uiautomator2 脚本进行波点音乐app自动化操作的教程】

本教程将指导您使用 uiautomator2 库编写脚本,实现自动化操作。如果您需要在设备断开连接或出现异常时重新连接设备并继续执行任务,这里有一份详细的代码示例和使用说明。

环境准备
  1. 安装 Python

    • 确保您的系统上安装了 Python(推荐使用 Python 3.7 及以上版本)。
    • 可以从Python 官网下载并安装。
  2. 安装 uiautomator2

    pip install uiautomator2
    
  3. 安装 ADB

    • 确保您的系统上安装了 ADB(Android Debug Bridge)。可以从ADB 下载页面下载。
  4. 连接设备

    • 确保您的 Android 设备通过 USB 连接到计算机,并且开发者模式和 USB 调试已启用。
脚本代码

以下是用于连接设备、启动 ATX-Agent、启动应用并处理广告的脚本代码:

import uiautomator2 as u2
import time
import osdef connect_and_setup_device(retry_interval=1, max_retries=10):retries = 0while retries < max_retries:try:d = u2.connect()if d:print('设备连接成功')breakexcept Exception as e:print(f'设备连接失败,重试 {retries + 1}/{max_retries} 次,错误: {e}')time.sleep(retry_interval)retries += 1retry_interval *= 2  # 指数退避算法else:raise RuntimeError('设备连接失败,达到最大重试次数。')# 打印设备信息print('设备信息:', d.info)# 启动 ATX-Agenttry:d.shell('chmod 775 /data/local/tmp/atx-agent')d.shell('/data/local/tmp/atx-agent server -d')d.shell('/data/local/tmp/atx-agent server --nouia')print('ATX-Agent 启动成功')except Exception as e:print(f'启动 ATX-Agent 失败: {e}')raiseprint('连接完成~')return ddef main():d = connect_and_setup_device()os.system('adb shell am force-stop cn.wenyu.bodian')time.sleep(2)num = 1while True:try:# 检查设备连接状态d.shell('echo test')os.system('adb shell am start -n cn.wenyu.bodian/cn.wenyu.bodian.MainActivity')print("应用启动成功")if d(text='跳过广告').exists:d(text='跳过广告').click()print("点击:跳过广告")time.sleep(2)if d(description='去看看').exists:d.click(0.49, 0.324)print("点击:去看看")time.sleep(2)try:d.click(0.781, 0.065)print('点击广告入口成功')except:print('点击广告入口失败')if d(description='开启免费模式').exists:d(description='开启免费模式').click()print('执行:d(description=开启免费模式).click()')else:d.click(0.574, 0.078)print('开始看广告了d.click(0.574, 0.078)')d(description='获取更多时间').click_exists()start_time = time.time()if d(description='关闭声音').exists:while d(description='关闭声音').exists:elapsed_time = time.time() - start_timetime.sleep(elapsed_time)print('等待', elapsed_time, '秒')try:d(description='关闭广告').click_exists()print('广告已关闭')except Exception as e:print("关闭广告元素不存在:", e)else:try:d(text='点击一下,立即免费听歌').wait(timeout=4)d(text='点击一下,立即免费听歌').click()print('点击一下,立即免费听歌')time.sleep(2)d.keyevent('4')time.sleep(2)d(resourceId='cn.wenyu.bodian:id/tme_ad_skip_button').click()print('广告跳过')except Exception as e:print("广告跳过元素不存在:", e)time.sleep(3)num += 1print('执行第:', num, '次看广告')except Exception as e:print(f'发生异常: {e}')print("尝试重新连接设备...")d = connect_and_setup_device()if __name__ == "__main__":main()
使用说明
  1. 连接和启动设备

    • connect_and_setup_device 函数用于连接设备并启动 ATX-Agent。如果连接失败,它会重试多次,并使用指数退避算法增加重试间隔。
  2. 启动应用并处理广告

    • main 函数是脚本的入口。它首先连接设备并启动应用,然后在主循环中执行自动化操作,包括点击广告入口、处理广告等。
    • 如果在执行过程中发生异常,脚本会尝试重新连接设备并继续执行。
注意事项
  1. 连接设备

    • 确保设备通过 USB 连接到计算机,并启用开发者模式和 USB 调试。
  2. 设备权限

    • 运行脚本之前,确保已授予设备必要的权限,例如存储权限和安装应用权限。
  3. 异常处理

    • 脚本包含基本的异常处理逻辑。如果遇到更复杂的错误场景,可以根据需要扩展异常处理部分。
  4. 调试和日志

    • 在实际使用过程中,可以添加更多的日志信息,以便更好地调试和监控脚本运行状态。

通过本教程,您可以使用 uiautomator2 库编写一个自动化脚本,实现设备连接、应用启动和广告处理等操作。如果遇到设备连接问题或异常,脚本会自动重新连接设备并继续执行,从而提高了自动化任务的可靠性和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/22940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据集][目标检测]盲道检测数据集VOC+YOLO格式2173张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2173 标注数量(xml文件个数)&#xff1a;2173 标注数量(txt文件个数)&#xff1a;2173 标注…

基于R语言BIOMOD2 及机器学习方法的物种分布模拟与案例分析实践技术

BIOMOD2是一个R软件包&#xff0c;用于构建和评估物种分布模型&#xff08;SDMs&#xff09;。它集成了多种统计和机器学习方法&#xff0c;如GLM、GAM、SVM等&#xff0c;允许用户预测和分析物种在不同环境条件下的地理分布。通过这种方式&#xff0c;BIOMOD帮助研究者评估气候…

常用接口测试及接口抓包常用的测试工具

一、常用抓包工具 01、F12 Web端的话&#xff0c;google浏览器直接F12开发者模式 点击network进行抓包分析。 02、Fiddler抓包工具 客户端和服务端的http代理&#xff0c;客户端所有的请求都要先经过Fiddler&#xff0c;到响应的服务端&#xff0c;然后端返回的所有数据也都…

pytorch数学操作

文章目录 1.torch.bitwise_not()2.torch.bitwise_and()3.torch.ceil()3.torch.clamp()4.torch.torch.floor() 1.torch.bitwise_not() 在 PyTorch 中&#xff0c;torch.bitwise_not() 是一个函数&#xff0c;用于执行逐元素的位非&#xff08;bitwise NOT&#xff09;操作。 t…

如何组织基于Sqlalchemy的项目

在使用 SQLAlchemy 构建项目时&#xff0c;可以遵循一些常用的组织结构和最佳实践&#xff0c;以确保项目清晰、易于维护。下面就是我在构建项目时遇到的一些问题&#xff0c;并做了详细的记录&#xff0c;为了方便大家学习少走一些弯路。 1、问题背景 在基于Sqlalchemy的项目…

IDEA的使用配置Maven(及selenium+webdriver的下载配置)

一. 下载maven 1. maven官网下载链接 2.​​安装第二行第一列的zip压缩包 ​​​​​​​​ 二. 配置环境变量 1.新建环境变量 2.在系统变量Path环境变量中添加%Maven_HOME%\bin 三.验证环境变量是否配置成功 winr >cmd>mvn -v 如果出现Maven的版本信息&#xff0…

Matlab解决矩阵微分方程建模(代码开源)

#用matlab解决施密特正交规范化矩阵之后&#xff0c;我又想到矩阵的微分方程计算量真的太大了&#xff0c;来回转化让我头大&#xff0c;于是我尝试了一下用matlab建立模型来解决这类问题。 代码部分如下&#xff1a;注解还挺清晰的&#xff1a; %%%解微分方程组%eg&#xff…

【设计模式】代理模式(结构型)⭐⭐⭐

文章目录 1.概念1.1 什么是代理模式1.2 优点与缺点 2.实现方式2.1 静态代理2.2 动态代理 3. Java 哪些地方用到了代理模式4. Spring 哪些地方用到了代理模式 1.概念 1.1 什么是代理模式 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许…

带你认识ffmpeg

FFmpeg是一个开源的跨平台音视频处理工具集&#xff0c;它提供了丰富的音视频处理功能和库&#xff0c;被广泛应用于音视频编解码、格式转换、流媒体处理等领域。 应用场景&#xff1a; 视频编解码&#xff1a;FFmpeg可以对各种视频格式进行编解码&#xff0c;包括但不限于AV…

类的特殊成员函数

使用类的嵌套&#xff0c;并自定义析构函数 #include <iostream>using namespace std; class Per{ private:string name;int age;double hight;double weight; public:Per(string name,int age,double hight,double weight):name(name),age(age),hight(hight),weight(we…

图片如何修改尺寸?四种好用的修改图片尺寸方法!

图片如何修改尺寸&#xff1f;图片是一种常见的文件类型&#xff0c;它存在于什么生活的方方面面&#xff0c;虽然图片很好用&#xff0c;但是大家日常也要注意图片的尺寸&#xff0c;如果图片尺寸不对是会带来很多问题的&#xff0c;下面小编就举例说明几个问题&#xff0c;首…

web 前端技术的一些知识点分享~

css的规则是由选择器和 组成的 目录 css的规则是由选择器和 组成的 CSS&#xff08;层叠样式表&#xff09;的规则是由选择器和声明块组成的。 选择器用于选定页面上的元素&#xff0c;这可以是一个元素标签&#xff08;如 h1&#xff09;、类&#xff08;如 .classname…

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——物体占用的区域及放置点自动化

放置物体功能 效果&#xff1a; 功能&#xff1a; 自定义物体占用区域的大小一键调整占用区域调整旋转度数&#xff0c;分四个挡位&#xff1a; NoRotation&#xff1a;该物体不能调整旋转。MaximumAngle&#xff1a;每次转动90。NormalAngle&#xff1a;每次转动45&#xff…

根据租户id切换数据源

花了半天时间&#xff0c;使用spring-boot实现动态数据源&#xff0c;切换自如 在一个项目中使用多个数据源的情况很多&#xff0c;所以动态切换数据源是项目中标配的功能&#xff0c;当然网上有相关的依赖可以使用&#xff0c;比如动态数据源&#xff0c;其依赖为&#xff0c;…

银河麒麟解压命令

银河麒麟&#xff08;Kylin&#xff09;操作系统是基于Linux的操作系统分支之一&#xff0c;其使用的解压命令与Linux系统中的命令基本相同。 在银河麒麟系统中&#xff0c;常用的解压命令有以下几种&#xff1a; 对于.tar文件&#xff1a; tar -xvf file.tar对于.tar.gz或.…

探索营销系统业务架构的设计与应用

随着市场竞争的日益激烈和消费者需求的不断变化&#xff0c;营销系统作为企业营销管理的重要组成部分&#xff0c;扮演着至关重要的角色。本文将深入探讨营销系统业务架构的设计与应用&#xff0c;从客户关系管理、营销活动管理、数据分析和智能化服务等方面进行全面解析&#…

Innodb Buffer Pool缓存机制(四)预读与Mysql改进的LRU策略

一、什么是预读 InnoDB提供了预读(read ahead)。所谓预读&#xff0c;就是InnoDB认为执行当前的请求可能之后会读取某些页面&#xff0c;就预先把它们加载到Buffer Pool中。根据触发方式的不同&#xff0c;预读又可以细分为下边两种&#xff1a; 1.1 线性预读 InnoDB提供了一…

掘金AI商战宝典-高阶班:如何用AI制作视频(11节视频课)

课程下载&#xff1a;掘金AI商战宝典-高阶班&#xff1a;如何用AI制作视频(11节视频课)-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载&#xff1a;关注我。 课程目录&#xff1a; 1-第一讲用AI自动做视频(上)_1.mp4 2-第二讲用AI自动做视频(中)_1.mp4 3-第四讲A…

U9C的数据查询视图Sql

U9C的数据查询视图Sql if object_id(TEMPDB..#priceTable) is not null begin drop table #priceTable endcreate table #priceTable (polineCreatedOn date,price varchar(max),itemid varchar(max),purchaseOrderdocno varchar(max),)insert into #priceTable select max(…

阿里云邮件推送服务配置教程:怎么做批发?

阿里云邮件推送的API配置步骤&#xff1f;配置教程有哪些步骤&#xff1f; 阿里云邮件推送服务凭借其高并发、稳定性强和安全性高等特点&#xff0c;成为众多企业的首选。Aok将详细介绍如何使用阿里云邮件推送服务进行批发配置&#xff0c;并简要提及AokSend的优势。 阿里云邮…