当前位置: 首页 > news >正文

【波点音乐看广告】

import uiautomator2 as u2
import time
from datetime import datetime
import xml.etree.ElementTree as ET
import re
import os

连接设备

d = u2.connect()
os.system(‘adb shell chmod 775 /data/local/tmp/atx-agent’)
os.system(‘adb shell /data/local/tmp/atx-agent server -d’)

打印设备信息

print(d.info)
def print_description_to_file(d):
# 获取当前页面的 XML结构
xml_content = d.dump_hierarchy()

# 解析 XML结构
root = ET.fromstring(xml_content)# 定义正则表达式
time_pattern = re.compile(r'\d{2}:\d{2}:\d{2}')with open('test.txt', 'a') as f:# 遍历所有元素for element in root.iter():# 检查元素是否可点击if element.attrib.get('clickable', 'false').lower() == 'true':# 获取 description 属性值description = element.attrib.get('content-desc', '')# 使用正则表达式匹配if time_pattern.match(description):# 写入文件print("Description 属性值:", description)f.write("Description 属性值: " + description + '\n')

def swipe_left_to_right(d):
width, height = d.window_size()
start_x = width // 4
start_y = height // 2
end_x = width * 3 // 4
end_y = height // 2
d.swipe(start_x, start_y, end_x, end_y)
def screenshot_png():
now = datetime.now().strftime(“%Y_%m_%d_%H%M_%S”)
d.screenshot(f’{now}.png’)

d.app_uninstall(“cn.wenyu.bodian”)

d.app_install(“cn.wenyu.bodian.apk”)

d.app_clear(“cn.wenyu.bodian”)

num=1

while True:
# 启动应用
try:
d.app_start(“cn.wenyu.bodian”, stop=True,wait=True)
print(“应用启动成功”)
except Exception as e:
print(“应用启动失败:”, e)
exit(1)
try:
# d(text=“允许”).click()
# d.xpath(‘//*[@resource-id=“android:id/content”]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.widget.ImageView[2]’).click()
# print(“点击同意:pass”)
# d(description=‘微信登录领VIP’).click()
# print(“点击微信登录领VIP:pass”)
# # 点击同意并继续
# d(description=‘同意并继续’).click()
# print(“点击微同意并继续:pass”)
pass
except Exception as e:
print(“账号已登录元素不存在:”, e)

if d(text='跳过广告').exists:d(text='跳过广告').click()print("点击:跳过广告")time.sleep(2)
else:pass
if d(description='去看看').exists:d.click(0.49, 0.324)print("点击:非去看看")time.sleep(2)
else:pass
#  # 登录后点击我的
print_description_to_file(d)
time.sleep(2)
d.click(0.681, 0.074)
# d.xpath('//*[@resource-id="android:id/content"]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.widget.ImageView[5]').click_exists()
# time.sleep(6)
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('看的广告1')except  Exception as e:print("此元素不存在:", e)
else:try:d(text='点击一下,立即免费听歌').wait(timeout=4)  # 等待 4 秒time.sleep(3)d(text='点击一下,立即免费听歌').click()print('点击一下,立即免费听歌')time.sleep(3)d.keyevent('4')time.sleep(2)d(resourceId='cn.wenyu.bodian:id/tme_ad_skip_button').click()print('看的广告2')except  Exception as e:print("此元素不存在:", e)
print("马上执行忘了")
time.sleep(3)
num=num+1
print('执行第:',num,'次看广告')

相关文章:

【波点音乐看广告】

import uiautomator2 as u2 import time from datetime import datetime import xml.etree.ElementTree as ET import re import os 连接设备 d u2.connect() os.system(‘adb shell chmod 775 /data/local/tmp/atx-agent’) os.system(‘adb shell /data/local/tmp/atx-age…...

[SWPUCTF 2021 新生赛]pop

常见的魔术方法 魔术方法__construct() 类的构造函数,在对象实例化时调用 __destruct() 类的析构函数,在对象被销毁时被调用 __call() 在对象中调用一个不可访问的对象时被调用,比如一个对象被调用时,里面没有程序想调用的属性 …...

【DevOps】Jenkins + Dockerfile自动部署Maven(SpringBoot)项目

环境 docker_host192.168.0.1jenkins_host192.168.0.2 jenkins_host构建完成后把jar发布到docker_host,再通过dockerfile自动构建镜像,运行镜像 1 Jenkins安装 AWS EC2安装Jenkins:AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安装…...

【C++】——入门基础知识超详解

目录 ​编辑 1.C关键字 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 命名空间的使用有三种方式: 注意事项 3. C输入&输出 示例 1:基本输入输出 示例 2:读取多个值 示例 3:处理字符串输入 示例 4:读…...

ChatGPT技术演进简介

chatGPT(chat generative pre-train transformer, 可以对话的预训练trasformer模型),讨论点: 1、chatGPT为什么突然火了 2、GPT 1.0、2.0、3.0、3.5 、4和4o区别和特性,在不同应用场景中如何选对模型 3、未…...

C语言 | Leetcode C语言题解之第114题二叉树展开为链表

题目: 题解: void flatten(struct TreeNode* root) {struct TreeNode* curr root;while (curr ! NULL) {if (curr->left ! NULL) {struct TreeNode* next curr->left;struct TreeNode* predecessor next;while (predecessor->right ! NULL)…...

Vue 子组件向父组件传值

1、使用自定义事件 ($emit) 这是Vue中最常用的子组件向父组件传递数据的方式。子组件通过触发一个自定义事件&#xff0c;并附加数据作为参数&#xff0c;父组件则监听这个事件并处理传递过来的数据。 子组件 (发送数据)&#xff1a; <template><button click"…...

【前端笔记】Vue项目报错Error: Cannot find module ‘webpack/lib/RuleSet‘

网上搜了下发现原因不止一种&#xff0c;这里仅记录本人遇到的原因和解决办法&#xff0c;仅供参考 原因&#xff1a;因为某种原因导致本地package.json中vue/cli与全局vue/cli版本不同导致冲突。再次提示&#xff0c;这是本人遇到的&#xff0c;可能和大家有所不同&#xff0c…...

edge浏览器的网页复制

一些网页往往禁止复制粘贴&#xff0c;本文方法如下&#xff1a; 网址最前面加上 read: &#xff08;此方法适用于Microsoft Edge 浏览器&#xff09;在此网站网址前加上read:进入阅读器模式即可...

视频播放器-Kodi

一、前言 Kodi 是一款开源免费的多媒体播放软件。Kodi 是由非营利性技术联盟 Kodi 基金会开发的免费开源媒体播放器应用程序。 Kodi是一款免费和开源&#xff08;遵循GPL协议&#xff09;的多媒体播放器和娱乐中心软件&#xff0c;由XBMC基金会开发。Kodi的主要功能是管理和播…...

Helm安装kafka3.7.0无持久化(KRaft 模式集群)

文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档 [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.…...

【机器学习】期望最大化(EM)算法

文章目录 一、极大似然估计1.1 基本原理1.2 举例说明 二、Jensen不等式三、EM算法3.1 隐变量 与 观测变量3.2 为什么要用EM3.3 引入Jensen不等式3.4 EM算法步骤3.5 EM算法总结 参考资料 EM是一种解决 存在隐含变量优化问题 的有效方法。EM的意思是“期望最大化&#xff08;Exp…...

【Python】机器学习中的过采样和欠采样:处理不平衡数据集的关键技术

原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…...

重新思考:Netflix 的边缘负载均衡

声明 本文是对Netflix 博客的翻译 前言 ​ 在先前关于Zuul 2开源的文章中&#xff0c;我们简要概述了近期在负载均衡方面的一些工作。在这篇文章中&#xff0c;我们将更详细地介绍这项工作的原因、方法和结果。 ​ 因此&#xff0c;我们开始从Zuul和其他团队那里学习&#…...

元组的创建和删除

目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组&#xff08;tuple&#xff09;是Python中另一个重要的序列结构&#…...

CSS3用户界面

用户界面 appearance appearance 属性用于控制元素是否采用用户代理(浏览器)的默认样式(外观) element {appearance: auto | none;}auto(默认):元素采用浏览器提供的默认样式。none:元素不采用任何默认样式,显示为“裸”元素,通常表现为无特定样式的简单框。input[…...

STL源码刨析:序列式容器之vector

目录 1.序列式容器和关联式容器 2.vector的定义和结构 3.vector的构造函数和析构函数的实现 4.vector的数据结构以及实现源码 5.vector的元素操作 前言 本系列将重点对STL中的容器进行讲解&#xff0c;而在容器的分类中&#xff0c;我们将容器分为序列式容器和关联式容器。本章…...

Flutter 中的 AbsorbPointer 小部件:全面指南

Flutter 中的 AbsorbPointer 小部件&#xff1a;全面指南 在Flutter中&#xff0c;AbsorbPointer是一个特殊的小部件&#xff0c;用于吸收&#xff08;或“吞噬”&#xff09;所有传递到其子组件的指针事件&#xff08;如触摸或鼠标点击&#xff09;。这在某些情况下非常有用&…...

Web开发学习总结

学习路线 Web 全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站 初识Web前端 Web标准也称为网页标准&#xff0c;由一系列的标准组成&#xff0c;大部分由W3C(World Wide Web Consortium&#xff0c;万维网联盟)负责制定。三个组…...

springboot相关知识集锦----1

一、springboot是什么&#xff1f; springboot是一个用于构建基于spring框架的独立应用程序的框架。它采用自动配置的原则&#xff0c;以减少开发人员在搭建应用方面的时间和精力。同时提升系统的可维护性和可扩展性。 二、springboot的优点 约定优于配置 版本锁定&#xf…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...