• 雷电模拟器+python


    1. import os
    2. import time
    3. from compare import compare #上一段代码我存为了compare.py
    4. class Ldconsole: #请根据自己软件的路径来
    5. console = r'F:\leidian\LDPlayer9\dnconsole.exe '
    6. ld = r'F:\leidian\LDPlayer9\ld.exe'
    7. adb = r'F:\leidian\LDPlayer9\adb.exe'
    8. #这个类其实不用写的(个人意见),参照于http://t.csdnimg.cn/rkTDh,下面使用ld和console的也是基于此博客
    9. def launch(self,index: int): #启动函数
    10. cmd = Ldconsole.console + 'launch --index ' + str(index)
    11. #可以去雷电官方论坛看console和ld的使用格式和函数用途
    12. process = os.popen(cmd) #os是python向cmd发送指令的库
    13. result = process.read() #结果读取
    14. process.close()
    15. return result #结果显示
    16. def app_star(self,index: int, package: str):
    17. #启动app,等会函数内填的是应用名,自行查app调用名(例如:com.bilibili.umamusu(赛马娘,启动!),应该是和安装包同名)
    18. cmd = Ldconsole.console + 'runapp --index %d --packagename %s' % (index, package)
    19. process = os.popen(cmd)
    20. result = process.read()
    21. process.close()
    22. print(result)
    23. return result
    24. def adb_start(self,index: int): #启动adb的函数,这段里面注释掉的是本来应该写在这,但是不注释就报错,但为了纪念我去查资料的时间,所以我留着了ᕕ(◠ڼ◠)ᕗ
    25. #cmd1 ='adb kill-server' 本来在启动要结束之前启动的adb的
    26. #process = os.popen(cmd1)
    27. #result = process.read()
    28. #process.close()
    29. #print(result)
    30. #return result
    31. cmd2 = 'adb start-server'
    32. process = os.popen(cmd2)
    33. process.close()
    34. cmd3 = Ldconsole.adb + ' connect 127.0.0.1:5555' #连接到雷电模拟器的端口号,第一次应该连接不上(我也不知为什么,第一次会自动连接到 emulator-5554),cmd可查此时连接上adb的模拟器的端口号,自行学习
    35. process = os.popen(cmd3)
    36. process.close()
    37. #return result
    38. def tap(self, a, b):#用于点击的函数
    39. cmd = Ldconsole.adb + ' -s emulator-5554 shell input tap {x} {y}'.format(x=a,y=b)
    40. process = os.popen(cmd)
    41. result = process.read()
    42. process.close()
    43. print(result)
    44. return result
    45. def screencap(self,index: int,str): #截屏
    46. cmd = (Ldconsole.adb +
    47. ' -s emulator-5554 shell /system/bin/screencap -p /sdcard/{name}.png'.format(name=str))
    48. process = os.popen(cmd)
    49. result = process.read()
    50. process.close()
    51. print(result)
    52. return result
    53. def screenget(self,index: int,str): #将截屏存放到F:\python\pythonProject(这是我的路径,记得自行更改)
    54. cmd = (Ldconsole.adb +
    55. ' -s emulator-5554 pull /sdcard/{name}.png F:\python\pythonProject'.format(name=str))
    56. process = os.popen(cmd)
    57. result = process.read()
    58. process.close()
    59. print(result)
    60. return result
    61. def kill_self(self,index: int): #写到这我才发现还是写了个结束进程的函数。。
    62. cmd ='adb kill-server'
    63. process = os.popen(cmd)
    64. result = process.read()
    65. process.close()
    66. print(result)
    67. return result
    68. def main():
    69. a = Ldconsole()# 打开模拟器
    70. a.tap(646, 1524)
    71. a.tap(646, 1524)
    72. a.launch(0) #这里很多延时是因为响应速度问题,删除可能导致某一步没执行
    73. time.sleep(4)
    74. a.kill_self(0)
    75. time.sleep(4)
    76. a.adb_start(0)
    77. time.sleep(4)
    78. #time.sleep(3)
    79. a.app_star(0,'com.bilibili.umamusu')
    80. #time.sleep(10)
    81. #a.tap(590,250) #启动应用的坐标
    82. time.sleep(18)
    83. a.screencap(0,'screengap')
    84. time.sleep(1)
    85. a.screenget(0,'screengap')
    86. time.sleep(2)
    87. x=compare(0,0,0,0,0,"enter") #基于compare.py见上一段
    88. if x>0.82:
    89. a.tap(590,250)
    90. time.sleep(30)
    91. a.screencap(0,'screengap')
    92. time.sleep(2)
    93. a.screenget(0,'screengap')
    94. x=compare(0,0,0,0,0,"mainscreen")
    95. if x >= 0.82:
    96. competition()
    97. else:
    98. print("error")
    99. exit(0)
    100. #a.kill_self(0)
    101. #a.quit(0)
    102. if __name__ == '__main__':
    103. main()

    其他:

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

  • 相关阅读:
    【EI会议征稿】第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023)
    微服务使用UNI-APP开发手机APP流程及VUE前端注意事项
    详谈滑动窗口算法与KMP算法区别以及二者在什么场景下使用
    VBA工程加密PJ方式(两种)
    使用Java对书籍照片进行字符分割
    vue踩坑
    Leetcode2065-最大化一张图中的路径价值
    储能直流侧计量表DJSF1352
    关于英文BALL的一些地道说法和用法,你知多少?
    从零开始学习调用百度地图网页API:三、鼠标点击绘图功能
  • 原文地址:https://blog.csdn.net/qq_31741481/article/details/137959944