雷电模拟器+python

ops/2024/9/24 4:31:35/
import os
import time
from compare import compare #上一段代码我存为了compare.pyclass Ldconsole: #请根据自己软件的路径来console = r'F:\leidian\LDPlayer9\dnconsole.exe 'ld = r'F:\leidian\LDPlayer9\ld.exe'adb = r'F:\leidian\LDPlayer9\adb.exe'  
#这个类其实不用写的(个人意见),参照于http://t.csdnimg.cn/rkTDh,下面使用ld和console的也是基于此博客def launch(self,index: int): #启动函数cmd = Ldconsole.console + 'launch --index ' + str(index)#可以去雷电官方论坛看console和ld的使用格式和函数用途process = os.popen(cmd) #os是python向cmd发送指令的库result = process.read() #结果读取process.close()return result #结果显示def app_star(self,index: int, package: str):
#启动app,等会函数内填的是应用名,自行查app调用名(例如:com.bilibili.umamusu(赛马娘,启动!),应该是和安装包同名)cmd = Ldconsole.console + 'runapp --index %d --packagename %s' % (index, package)process = os.popen(cmd)result = process.read()process.close()print(result)return resultdef adb_start(self,index: int): #启动adb的函数,这段里面注释掉的是本来应该写在这,但是不注释就报错,但为了纪念我去查资料的时间,所以我留着了ᕕ(◠ڼ◠)ᕗ#cmd1 ='adb kill-server' 本来在启动要结束之前启动的adb的#process = os.popen(cmd1)#result = process.read()#process.close()#print(result)#return resultcmd2 = 'adb start-server'process = os.popen(cmd2)process.close()cmd3 = Ldconsole.adb + ' connect 127.0.0.1:5555' #连接到雷电模拟器的端口号,第一次应该连接不上(我也不知为什么,第一次会自动连接到 emulator-5554),cmd可查此时连接上adb的模拟器的端口号,自行学习process = os.popen(cmd3)process.close()#return resultdef tap(self, a, b):#用于点击的函数cmd = Ldconsole.adb + ' -s emulator-5554  shell input tap {x} {y}'.format(x=a,y=b)process = os.popen(cmd)result = process.read()process.close()print(result)return resultdef screencap(self,index: int,str): #截屏cmd = (Ldconsole.adb +' -s emulator-5554 shell /system/bin/screencap -p /sdcard/{name}.png'.format(name=str))process = os.popen(cmd)result = process.read()process.close()print(result)return resultdef screenget(self,index: int,str): #将截屏存放到F:\python\pythonProject(这是我的路径,记得自行更改)cmd = (Ldconsole.adb +' -s emulator-5554  pull /sdcard/{name}.png F:\python\pythonProject'.format(name=str))process = os.popen(cmd)result = process.read()process.close()print(result)return resultdef kill_self(self,index: int): #写到这我才发现还是写了个结束进程的函数。。cmd ='adb kill-server'process = os.popen(cmd)result = process.read()process.close()print(result)return resultdef main():a = Ldconsole()# 打开模拟器a.tap(646, 1524)  a.tap(646, 1524)  a.launch(0) #这里很多延时是因为响应速度问题,删除可能导致某一步没执行time.sleep(4)a.kill_self(0)time.sleep(4)a.adb_start(0)time.sleep(4)#time.sleep(3)a.app_star(0,'com.bilibili.umamusu')#time.sleep(10)#a.tap(590,250) #启动应用的坐标time.sleep(18)a.screencap(0,'screengap')time.sleep(1)a.screenget(0,'screengap')time.sleep(2)x=compare(0,0,0,0,0,"enter") #基于compare.py见上一段if x>0.82:a.tap(590,250)time.sleep(30)a.screencap(0,'screengap')time.sleep(2)a.screenget(0,'screengap')x=compare(0,0,0,0,0,"mainscreen")if x >= 0.82:competition()else:print("error")exit(0)#a.kill_self(0)#a.quit(0)if __name__ == '__main__':main()

其他:

Python - 控制雷电模拟器(Dnconsole)_python控制雷电模拟器-CSDN博客


http://www.ppmy.cn/ops/4628.html

相关文章

AGI的智力有可能在两年内超过人类水平

特斯拉CEO埃隆马斯克近日与挪威银行投资管理基金CEO坦根的访谈中表示,AGI的智力将在两年内可能超过人类智力,在未来五年内,AI的能力很可能超过所有人类。 马斯克透漏,去年人工智能发展过程中的主要制约因素是缺少高性能芯片&#…

css animation 动画详细学习

学习 CSS 动画是一个深入且富有创造性的过程,它允许开发者创建出引人入胜且交互性强的网页效果。以下是对 CSS 动画学习的一些总结和要点: 1. 关键帧动画(keyframes) 使用 keyframes 规则定义动画的整个过程。在 keyframes 中&a…

【云计算】云数据中心网络(三):NAT 网关

《云网络》系列,共包含以下文章: 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络(一):VPC云数据中心网络(二):弹性公网 IP云数据中心网络(三)…

网络_TCP/IP_第六章_IP地址概述与应用_实验案例二

实验案例二:配置路由器实现互通 1、实验环境 实验用具包括两台路由器{或交换机).一根双绞线缆,一台PC,一条Console线缆. 2、需求描述 如图6.14所示,将两台路由器的Gig0/0接口相连.通过一台PC连接设备的Co…

Elasticsearch(1)

目录 115.elasticsearch是什么?基于Lucene的,那么为什么不直接使用Lucene呢? 116.ELK技术栈的常见应用场景? 117.ES索引模板是什么? 118.ES中索引的生命周期管理?

9个技巧使你的Python代码更Pythonic!

如何区分漂亮和丑陋的代码? 更重要的是,如何写出漂亮的 Python 代码? 本文将通过初学者容易理解的例子展示9个神话般的Python技巧,以帮助你在日常工作中编写更多的Pythonic程序。 01 product() 使用 product() 函数避免嵌套的…

畅游网络:构建C++网络爬虫的指南

概述 随着信息时代的来临,网络爬虫技术成为数据采集和网络分析的重要工具。本文旨在探讨如何运用C语言及其强大的cpprestsdk库构建一个高效的网络爬虫,以便捕捉知乎等热点信息。为了应对IP限制的挑战,我们将引入亿牛云爬虫代理服务&#xff…

剑指offer03:数组中重复的数组---leetcode:LCR 120. 寻找文件副本

设备中存有 n 个文件,文件 id 记于数组 documents。若文件 id 相同,则定义为该文件存在副本。请返回任一存在副本的文件 id。 示例 1: 输入:documents [2, 5, 3, 0, 5, 0] 输出:0 或 5提示: 0 ≤ docume…