赞
踩
前言:
因为是自学python,搞这个东西弄了蛮长时间,幸好有朋友们的帮助。直到今天才基本弄好。还有一些地方有缺陷,不过我
要换项目玩了,所以就不继续优化了。
功能:
打开程序,检测插入电脑的手机设备,逐个安装yalu包
需求:
1.自动打开应用程序
app = Application().start(r'C:\Users\123\Desktop\Impactor_0.9.43\Impactor.exe')#打开程序
cyd_spec = app.window(title='Cydia Impactor')#定位窗口
2.获取列表框里的设备信息
info = app['Cydia Impactor']['ComboBox2'].texts()
info = {}.fromkeys(info).keys() #去重复
3.设置循环条件,打开菜单 Device->Install Package... 并写入安装包路径
- while True:
- #遍历得到设备信息无限循环,判断以安装过的不在安装,设备拔下再插入则重新安装
- info = app['Cydia Impactor']['ComboBox2'].texts()
- info = {}.fromkeys(info).keys() #去重复
- for ab in exists:
- if ab not in info:
- exists.remove(ab)
- for aa in info:
- if aa != '' and '?' not in aa and aa not in exists:
- exists.append(aa)
- yalu_auto()
- else:
- continue
-
- cyd_spec.menu_select(r"Device->Install Package...") # 找到安装菜单
- cyd_open = app['Select package.']#打开Select package界面
- cyd_open.Edit.set_text(r'D:\work\work\yalu102_beta7.ipa')#写入yalu路径
4.连接数据库,输入账号和密码。用过的账号状态由0变为1不再使用
- cyd_open['打开'].click()#点击打开
- id = app['Apple ID Username']#定位 Apple ID Username界面
- time.sleep(1)
- un = ab.cursor()#数据库游标
- time.sleep(1)
- un.execute('SELECT * FROM catalog')#查询 catalog表数据
-
- #得到账号和密码
- for i in un.fetchall():
- if i[2] == 0:
- us = i[0]
- ps = i[1]
- print(us)
- break
-
- #如果不能点击‘打开’按钮,则重新尝试,输入账号和密码
- try:
-
- cyd_open['打开'].click()
- time.sleep(1)
- id.Edit.set_text(us)
- time.sleep(1)
- print(us)
- id['OK'].click()
-
- id.Edit.set_text(ps)
- id['OK'].click()
-
- except NameError as e :
- cyd_open['打开'].click()
- print('Account exhausted')
- except pywinauto.timings.TimeoutError and pywinauto.findbestmatch.MatchError as ee:
- pass
-
- except pywinauto.findbestmatch.MatchError as eee:
- app = Application().start(r'C:\Users\123\Desktop\Impactor_0.9.43\Impactor.exe')
- #将使用过的账号和密码状态改为1
- un.execute("UPDATE catalog SET status=1 WHERE user='%s'" % (us))
- ab.commit()
- time.sleep(1)
完整代码:
import time import sqlite3 import warnings import pywinauto from pywinauto.application import Application ab = sqlite3.connect(r'D:\work\work\iss.db')#数据库路径 #自动批量安装yalu def yalu_auto(): app = Application().start(r'C:\Users\123\Desktop\Impactor_0.9.43\Impactor.exe')#打开程序 cyd_spec = app.window(title='Cydia Impactor')#定位窗口 cyd_spec.menu_select(r"Device->Install Package...") # 找到安装菜单 cyd_open = app['Select package.']#打开Select package界面 cyd_open.Edit.set_text(r'D:\work\work\yalu102_beta7.ipa')#写入yalu路径 cyd_open['打开'].click()#点击打开 id = app['Apple ID Username']#定位 Apple ID Username界面 time.sleep(1) un = ab.cursor()#数据库游标 time.sleep(1) un.execute('SELECT * FROM catalog')#查询 catalog表数据 #得到账号和密码 for i in un.fetchall(): if i[2] == 0: us = i[0] ps = i[1] print(us) break #如果不能点击‘打开’按钮,则重新尝试,输入账号和密码 try: cyd_open['打开'].click() time.sleep(1) id.Edit.set_text(us) time.sleep(1) print(us) id['OK'].click() id.Edit.set_text(ps) id['OK'].click() except NameError as e : cyd_open['打开'].click() print('Account exhausted') except pywinauto.timings.TimeoutError and pywinauto.findbestmatch.MatchError as ee: pass except pywinauto.findbestmatch.MatchError as eee: app = Application().start(r'C:\Users\123\Desktop\Impactor_0.9.43\Impactor.exe') #将使用过的账号和密码状态改为1 un.execute("UPDATE catalog SET status=1 WHERE user='%s'" % (us)) ab.commit() time.sleep(1) def yalu(): warnings.filterwarnings('ignore') app = Application().start(r'C:\Users\123\Desktop\Impactor_0.9.43\Impactor.exe') # 打开程序 cyd_spec = app.window(title='Cydia Impactor') # 定位窗口 exists = [] while True: #遍历得到设备信息无限循环,判断以安装过的不在安装,设备拔下再插入则重新安装 info = app['Cydia Impactor']['ComboBox2'].texts() info = {}.fromkeys(info).keys() #去重复 for ab in exists: if ab not in info: exists.remove(ab) for aa in info: if aa != '' and '?' not in aa and aa not in exists: exists.append(aa) yalu_auto() else: continue if __name__ == '__main__': #调用函数 yalu()
感谢:
YAN MEI
ZONGSHENG HE
繁华故事
快到碗里来 °、Jxx
wrtydyuh
附之前学习过的几个作者发表的 pywinauto链接:
http://blog.csdn.net/shawpan/article/details/78170067
http://blog.csdn.net/HuangZhang_123/article/details/69525381?locationNum=4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。