雷电模拟器+python

import os
import time
from compare import compare #上一段代码我存为了compare.py
 
class 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 result
 
 
    def adb_start(self,index: int): #启动adb的函数,这段里面注释掉的是本来应该写在这,但是不注释就报错,但为了纪念我去查资料的时间,所以我留着了ᕕ(◠ڼ◠)ᕗ
        #cmd1 ='adb kill-server' 本来在启动要结束之前启动的adb的
        #process = os.popen(cmd1)
        #result = process.read()
        #process.close()
        #print(result)
        #return result
        cmd2 = '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 result
 
    def 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 result
 
    def 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 result
 
    def 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 result
 
    def kill_self(self,index: int): #写到这我才发现还是写了个结束进程的函数。。
        cmd ='adb kill-server'
        process = os.popen(cmd)
        result = process.read()
        process.close()
        print(result)
        return result
 
          
    def 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.mfbz.cn/a/560210.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 ─── 操作符详解

目录 1. 算术操作符 2. 移位操作符 2.1 左移操作符 2.2 右移操作符 3. 位操作符 4. 复合赋值符 5. 单目操作符 6. 逗号表达式 7. 隐式类型转换 7.1 整型提升的意义: 7.2 如何进行整体提升呢? 8. 算术转换 ★★★数组名 1. 算术操作符 -…

redis与etcd的对比

1.redis是一种高级的key:value存储系统,其中value支持五种数据类型: 1.1 字符串(strings) 1.2 字符串列表(lists) 1.3 字符串集合(sets) 1.4 有序字符串集合(…

管理 nodejs 版本工具 nvm

nvm 方便切换不同版本的 node 及 对应的 npm 版本 一、安装nvm nvm官网 &#xff08;内含下载的文件&#xff0c;点击进去下载&#xff0c;并按照 网站文档步骤 操作即可&#xff09; 二、nvm 基础命令 nvm arch&#xff1a;显示node是运行在32位还是64位。nvm install <…

centos修改启动项加载不同内核

一.背景&#xff1a; 虚拟机中有时需要编译好几个内核版本&#xff0c;make install后系统存在几个内核版本。需要再哪个内核上开发调试就启动特定的内核版本。这就需要修改启动时的内核版本&#xff0c;再物理机或虚拟机启动时可以上下键选择。但有时是docket云环境中或远程时…

CANoe中LIN工程主节点的配置(如何切换调度表)

1&#xff1a;前置条件 1&#xff09;工程已经建立&#xff0c;simulation窗口已经配置好&#xff08;包括且不限于通道mappin好&#xff0c;数据库文件已经添加&#xff09; 2&#xff09;我已系统自带sampleCfg工程&#xff0c;作为例子。如下图 2 &#xff1a;主节点的配置…

前端css中table表格的属性使用

前端css中table表格的属性使用 一、前言二、常见的表格属性1.边框的样式2.布局和对齐3.间距和填充4.背景和颜色5.字体的样式6.边框的圆角 三、简单的表格&#xff0c;例子11.源码12.源码1效果截图 四、给表格添加动画效果&#xff0c;例子21.源码22.源码2的运行效果 五、结语六…

【热门话题】探索与心得:深入体验Microsoft Edge浏览器

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 探索与心得&#xff1a;深入体验Microsoft Edge浏览器一、Edge浏览器概述1.1 发…

通快霍廷格TruPlasma MF中频电源培训PPT课件内容下图

通快霍廷格TruPlasma MF中频电源培训PPT课件内容下图

美业连锁门店收银系统源码-如何查看收款门店对应的加盟商?

美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 第一步&#xff1a; 登录pc管理后端 第二步&#xff1a; 进入企业组织管理-门店管理&a…

【Linux】认识文件(一):文件标识符

【Linux】认识文件&#xff08;一&#xff09;&#xff1a;文件标识符 一.什么是文件&#xff1f;1.文件的本质2.文件的分类 二.访问文件操作1.C语言中的访问文件接口i.fopenii.fcloseiii.fwrite 2.系统访问文件接口i.openii.closeiii.write 三.文件管理1.对所有打开文件的管理…

Linux入门学习 之 基础操作指令讲解(小白必看)

股票的规律找到了&#xff0c;不是涨就是跌 一、Linux下基本指令 1.ls 指令 2.pwd 命令 3.cd 指令 4.touch 指令 5.mkdir 指令 6.rmdir指令 && rm 指令 7.man 指令 8.cp 指令 9.mv指令 10.cat 11.more 指令 12.less 指令 13.head 指令 14.tail 指令 15…

SQLite作为应用程序文件格式(二十八)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite数据库中JSON 函数和运算符(二十七) 下一篇&#xff1a;SQLite—系列文章目录 摘要 具有定义架构的 SQLite 数据库文件 通常是一种出色的应用程序文件格式。 以下是十几个原因&#xff1a; 简化的应用程序开发单文…

BUUCTF-MISC01金胖

题目&#xff1a;动图使用Stegsolve软件进行逐帧查看 下载文件后&#xff0c;图片隐写之gif多帧隐藏&#xff0c;这类题比较简单&#xff0c;只需要将图片使用Stegsolve软件进行逐帧查看就行了.file-open打开添加文件 将文件添加进来&#xff0c;而后点击Analyse-Frame Browse…

windows和linux服务器等保测评加固方法

服务器加固是通过各种方法增强服务器安全性的过程。保护操作系统免受黑客、破解者和攻击者的侵害。网络安全防护的目标是保密性、完整性、可用性、可控制性、不可否认性。 一、window服务器等保加固 以win2012和win2008 为例&#xff1a; &#xff08;win2008&#xff09; …

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

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

Spring 事务失效总结

前言 在使用spring过程中事务是被经常用的&#xff0c;如果不小心或者认识不做&#xff0c;事务可能会失效。下面列举几条 业务代码没有被Spring 容器管理 看下面图片类没有Componet 或者Service 注解。 方法不是public的 Transactional 注解只能用户public上&#xff0c…

使用Python+opencv实现自动扫雷

大家好&#xff0c;相信许多人很早就知道有扫雷这么一款经典的游戏&#xff0c;更是有不少人曾听说过中国雷圣&#xff0c;也是中国扫雷第一、世界综合排名第二的郭蔚嘉的顶顶大名。扫雷作为一款在Windows9x时代就已经诞生的经典游戏&#xff0c;从过去到现在依然都有着它独特的…

吴恩达机器学习笔记 三十五 异常检测与监督学习

什么时候选择异常检测&#xff1f; 正样本 ( y 1 ) 的数量非常少 负样本 ( y 0 ) 的数量非常多 有很多不同的异常&#xff0c;现有的算法不能从正样本中得知什么是异常&#xff0c;或未来可能出现完全没见过的异常情况。 例如金融欺诈&#xff0c;隔几个月或几年就有新的…

OpenHarmony实战开发-搜索功能实现案例、如何使用includes方法对数据实现模糊查询

介绍 本示例介绍使用includes方法对数据实现模糊查询 效果图预览 使用说明 点击首页搜索框跳转到搜索页面在搜索页面输入框中输入搜索的内容&#xff0c;下方列表自动根据搜索的内容进行筛选渲染点击筛选后的列表跳转到相应的页面跳转后会保存搜索历史&#xff0c;搜索历史使…
最新文章