def wzjh_open_54a4c6159804(self): '''判断游戏是否能够进入到登录页面_红米note4x''' print(self.device,self.name) #判断是否有权限弹框 if self.poco(text="允许").exists() or self.poco(text="确认").exists() or self.poco(text="关闭公告").exists():#判断是否有权限弹框 print('%s启动游戏时_有权限弹框'%self.device) for i in range(0,8):#弹框处理 sleep(3) if self.poco(text="允许").exists(): self.poco(text="允许").click() elif self.poco(text="确认").exists(): self.poco(text="确认").click() elif self.poco(text="关闭公告").exists(): self.poco(text="关闭公告").click() else: print("%s已授权_或无需授权=%d"%(self.device,i));break try: #加载游戏_若包有热更时,有可能超时(初次登录) if self.poco(text="选择登录方式").wait(80).exists(): print('{}--{}打开app成功==到了登录页面'.format(os.getpid(),self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return True,'同意并进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] else: print('{}--{}找不到登录元素,或元素超时'.format(os.getpid(),self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return False,'找不到登录元素_或元素超时',img[img.find(r'superdalan.com//')+16:][:-4] except: print('%s已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'%self.device) img=Screencap.GetScreen(time.time(), self.device, "True") return False,'主要是因为没有进入指定页面_',img[img.find(r'superdalan.com//')+16:][:-4]
def mxd_open_54a4c6159804(self):#小米4x '''判断游戏是否能够进入到登录页面''' try: try: if wait(Template(r"mxd_热更按钮.png", record_pos=(0.128, 0.146), resolution=(1920, 1080)),12):#判断热更新 print('{}_有热更资源'.format(self.device)) self.poco().click((0.616,0.745))#点击热更 except:pass if self.poco(text="帐号登录").wait(60).exists(): print('{}-打开app成功==在选择登录方式页面'.format(self.device)) img=Screencap.GetScreen(time.time(),self.device, "True") return True,'进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] elif self.poco(text="同意并进入游戏").exists(): print('{}打开app成功==同意并进入游戏'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return True,'同意并进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] #新手机或大蓝缓存被清理 elif self.poco(text="进入游戏").exists(): print('{}-打开app成功==进入游戏'.format(self.device)) img=Screencap.GetScreen(time.time(),self.device, "True") return True,'进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] else: print('{}找不到登录元素,或元素超时'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return False,'找不到登录元素_或元素超时',img[img.find(r'superdalan.com//')+16:][:-4] except: print('{}已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return False,'主要是因为没有进入指定页面_',img[img.find(r'superdalan.com//')+16:][:-4]
def hmzc_open_b5940085(self): #小米9 sleep(8) for i in range(0, 5): sleep(3) if self.poco(text="始终允许").exists(): self.poco(text="始终允许").click() elif self.poco(text="确认").exists(): self.poco(text="确认").click() else: print('{}启动游戏时_限弹框_{}'.format(self.device, i)) break sleep(4) # if exists(Template(r"hmzc_开始游戏_mi9.png", record_pos=(-0.002, 0.706), resolution=(1080, 2340))): # pass # #touch(Template(r"hmzc_开始游戏_mi9.png", record_pos=(-0.002, 0.706), resolution=(1080, 2340))) try: #加载游戏_若包有热更时,有可能超时(已登录过大蓝游戏_或有缓存的) if self.poco(text="同意并进入游戏") or self.poco( text="帐号登录").wait(70).exists(): print('{}打开app成功==同意并进入游戏'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return True, '同意并进入游戏', img[img.find(r'superdalan.com//') + 16:][:-4] else: print('{}找不到登录元素,或元素超时'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return False, '找不到登录元素_或元素超时', img[img.find(r'superdalan.com//' ) + 16:][:-4] except: print('已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)') img = Screencap.GetScreen(time.time(), self.device, "") return False, '主要是因为没有进入指定页面_', img[img.find(r'superdalan.com//') + 16:][:-4]
def hmzc_open_QDY4C17818002168(self): #华为畅享7 sleep(10) for i in range(0, 5): sleep(3) if self.poco(text="始终允许").exists(): self.poco(text="始终允许").click() elif self.poco(text="确认").exists(): self.poco(text="确认").click() else: print('{}启动游戏时_限弹框_{}'.format(self.device, i)) break try: #加载游戏_若包有热更时,有可能超时(已登录过大蓝游戏_或有缓存的) if self.poco(text="同意并进入游戏") or self.poco( text="帐号登录").wait(70).exists(): print('{}打开app成功==同意并进入游戏'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return True, '同意并进入游戏', img[img.find(r'superdalan.com//') + 16:][:-4] else: print('{}找不到登录元素,或元素超时'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return False, '找不到登录元素_或元素超时', img[img.find(r'superdalan.com//' ) + 16:][:-4] except: print('已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)') img = Screencap.GetScreen(time.time(), self.device, "") return False, '主要是因为没有进入指定页面_', img[img.find(r'superdalan.com//') + 16:][:-4]
def wrapped(self,*arg,**kwargs): result=func(self)#调用函数 if result is None:#正常情况下没有返回值,也就是None path=os.path.dirname(__file__) #----------------打开文件读取数据----------------------- with open(path+'/order_log/'+self.device+'.txt',mode="r",encoding="UTF-8",errors="ignore") as abc: fileContent=abc.readlines() #---------------筛选mPayInfo pay日志的内容------------------------- for i in range(len(fileContent)): if 'union_order_sn' in fileContent[i]: pattern = re.compile('"union_order_sn":"([0-9]{15,20})')#正则表达式实例 result = pattern.findall(fileContent[i])#匹配的字符串 order_id=''.join(result) print('%s登录order_id=%s'%(self.device,order_id)) break else:print('{}日志文件是空的_没有获取到order_id'.format(self.device)) if len(fileContent) is 0: print('{}__日志是空的'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "") return False, self.device+'__获取日志为空!',img[img.find(r'superdalan.com//')+16:][:-4] #循环5次还找不到元素,就直接返回False for i in range(5): sleep(4.0) if self.poco(text="登录").exists(): print('%s当前未登录微信'%self.device) img=Screencap.GetScreen(time.time(), self.device, "") return True,order_id,img[img.find(r'superdalan.com//')+16:][:-4] elif self.poco(text="立即支付").exists(): img=Screencap.GetScreen(time.time(), self.device, "") return True,order_id,img[img.find(r'superdalan.com//')+16:][:-4] else: img=Screencap.GetScreen(time.time(), self.device, "") return False, self.device+'微信无法调起!,手机反应太慢_超时',img[img.find(r'superdalan.com//')+16:][:-4] else: return result
def order_weixi_b5940085(self): print('{}__在游戏首页'.format(self.device)) touch((844, 445)) #点击-进入充值入口 sleep(3.0) if exists( Template(r"hmzc_60档位.png", record_pos=(-0.312, 0.09), resolution=(1080, 1920))): print('{}__已在充值档位页面'.format(self.device)) #创建线程获取日志 t = threading.Thread(target=get_order_log.say, args=('eve', self.device)) t.setDaemon(True) t.start() touch( Template(r"hmzc_60档位.png", record_pos=(-0.312, 0.09), resolution=(1080, 1920))) if self.poco(text="微信").wait(8).exists(): print('{}--{}拉起支付方式弹窗成功'.format(os.getpid(), self.device)) self.poco(text="微信").click() time.sleep(4) else: print('{}--{}拉起支付方式失败'.format(os.getpid(), self.device)) t.join() else: print('{}进入充值档位失败_请看截图'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return False, self.device + '进入充值档位失败_请看截图', img[ img.find(r'superdalan.com//') + 16:][:-4] print('{}___主线程结束___'.format(self.device))
def place_order_QDY4C17818002168(self): '''华为畅享7_调起微信''' if exists(Template(r"wzjh首充按钮.png", threshold=0.55,record_pos=(0.333, -0.16), resolution=(1920, 1080))): print('{}--{}找到首充按钮'.format(os.getpid(),self.device)) touch(Template(r"wzjh首充按钮.png", record_pos=(0.333, -0.16), resolution=(1920, 1080))) sleep(2.0) #有时候可能直接弹出立即领取页面 if exists(Template(r"wzjh立即领取.png", threshold=0.6, record_pos=(0.054, 0.161), resolution=(1920, 1080))): print('{}--{}有立即领取按钮'.format(os.getpid(),self.device)) touch(Template(r"wzjh立即领取.png", threshold=0.6, record_pos=(0.054, 0.161), resolution=(1920, 1080))) sleep(4)#已在充值档位页面 if exists(Template(r"wzjh_6元档位.png", record_pos=(-0.374, -0.016), resolution=(1920, 1080))): print('{}_已在充值档位页面'.format(self.device)) #创建线程获取日志 t = threading.Thread(target=get_order_log.say,args=('eve',self.device)) t.setDaemon(True) t.start() touch((165,220))#点击档位 if self.poco(text="微信").wait(8).exists(): print('{}--{}拉起支付方式弹窗成功'.format(os.getpid(),self.device)) self.poco(text="微信").click() time.sleep(4) else: print('{}--{}拉起支付方式失败'.format(os.getpid(),self.device)) t.join() else: print('{}在游戏内找不到元素_可能原因:实名制弹窗|游戏副本加载页|游戏不固定元素蒙层|网络异常弹框蒙层_请看截图'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "") return False,self.device+'在游戏内找不到元素_可能原因:实名制弹窗|游戏副本加载状态|游戏不固定元素蒙层|网络异常弹框蒙层等',img[img.find(r'superdalan.com//')+16:][:-4] print('{}___主线程结束___'.format(self.device))
def order_weixi_54a4c6159804(self): #小米4x try: print('{}__在游戏首页'.format(self.device)) self.poco().click((0.850, 0.105)) #点击-进入充值入口 sleep(3.0) if exists( Template(r"hmzc_60档位.png", record_pos=(-0.312, 0.09), resolution=(1080, 1920))): print('{}__已在充值档位页面'.format(self.device)) #创建线程获取日志 t = threading.Thread(target=get_order_log.say, args=('eve', self.device)) t.setDaemon(True) t.start() touch( Template(r"hmzc_60档位.png", record_pos=(-0.312, 0.09), resolution=(1080, 1920))) if self.poco(text="微信").wait(8).exists(): print('{}--{}拉起支付方式弹窗成功'.format(os.getpid(), self.device)) self.poco(text="微信").click() time.sleep(4) else: print('{}--{}拉起支付方式失败'.format(os.getpid(), self.device)) t.join() else: print('{}进入充值档位失败_请看截图'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return False, self.device + '进入充值档位失败_请看截图', img[ img.find(r'superdalan.com//') + 16:][:-4] print('{}___主线程结束___'.format(self.device)) except: img = Screencap.GetScreen(time.time(), self.device, "") print('{}--{}--已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'.format( os.getpid(), device)) return False, device + '由于网络原因,或手机反应慢到导致元素无法找到_超时', img[ img.find(r'superdalan.com//') + 16:][:-4]
def mxd_open_R8AYIJWO99999999(self):#小米note3 '''判断游戏是否能够进入到登录页面''' if self.poco(text="始终允许").exists():#华为 for i in range(0,5):#弹框处理 sleep(3) if self.poco(text="始终允许").exists(): self.poco(text="始终允许").click() elif self.poco(desc="关闭公告").exists():#小米note3 self.poco(desc="关闭公告").click() else: print("{}已授权_或无需授权".format(self.device));break try: try: if wait(Template(r"mxd_热更按钮.png", record_pos=(0.128, 0.146), resolution=(1920, 1080)),12):#判断热更新 print('{}_有热更资源'.format(self.device)) self.poco().click((0.616,0.745))#点击热更 except:pass if self.poco(text="帐号登录").wait(60).exists(): print('{}-打开app成功==在选择登录方式页面'.format(self.device)) img=Screencap.GetScreen(time.time(),self.device, "True") return True,'进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] elif self.poco(text="同意并进入游戏").exists(): print('{}打开app成功==同意并进入游戏'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return True,'同意并进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] #新手机或大蓝缓存被清理 elif self.poco(text="进入游戏").exists(): print('{}-打开app成功==进入游戏'.format(self.device)) img=Screencap.GetScreen(time.time(),self.device, "True") return True,'进入游戏',img[img.find(r'superdalan.com//')+16:][:-4] else: print('{}找不到登录元素,或元素超时'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return False,'找不到登录元素_或元素超时',img[img.find(r'superdalan.com//')+16:][:-4] except: print('{}已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "True") return False,'主要是因为没有进入指定页面_',img[img.find(r'superdalan.com//')+16:][:-4]
def place_order_QDY4C17818002168(self): '''华为畅享7_调起微信''' touch(Template(r"fzzj_游戏内充值.png", record_pos=(0.288, -0.196), resolution=(1920, 1080))) if exists(Template(r"fzzj_充值档位6元.png", record_pos=(-0.32, 0.037), resolution=(1920, 1080))): print('{}_已在充值档位页面'.format(self.device)) #创建线程获取日志 t = threading.Thread(target=get_order_log.say,args=('eve',self.device)) t.setDaemon(True) t.start() touch(Template(r"fzzj_充值档位6元.png", record_pos=(-0.32, 0.037), resolution=(1920, 1080))) if self.poco(text="微信").wait(7).exists(): print('{}--{}拉起支付方式弹窗成功'.format(os.getpid(),self.device)) self.poco(text="微信").click() time.sleep(5) else: print('{}--{}拉起支付方式失败'.format(os.getpid(),self.device)) t.join() else: print('{}在游戏内找不到元素_可能原因:实名制弹窗|游戏副本加载页|游戏不固定元素蒙层|网络异常弹框蒙层_请看截图'.format(self.device)) img=Screencap.GetScreen(time.time(), self.device, "") return False,self.device+'在游戏内找不到元素_可能原因:实名制弹窗|游戏副本加载状态|游戏不固定元素蒙层|网络异常弹框蒙层等',img[img.find(r'superdalan.com//')+16:][:-4] print('{}___主线程结束___'.format(self.device))
def hmzc_deng_lu_b5940085(self): if self.poco(text="帐号登录").exists(): print('{}__欢迎进入登录选择方式页面'.format(self.device)) self.poco( "com.dalan.lgh:id/dalan_agreement_check").click() #默认没有勾选需要勾选 sleep(1.5) self.poco(text="帐号登录").click() sleep(3) if self.poco(text="帐号登录").exists(): print('{}_需要反向勾选协议'.format(self.device)) sleep(1.5) self.poco("com.dalan.lgh:id/dalan_agreement_check").click( ) #默认没有勾选需要勾选 sleep(1.5) self.poco(text="帐号登录").click() sleep(3) #判断并输入帐号 if self.poco(textMatches='^忘记密码.*$').exists(): for i in range(len(config.devices())): #迭代设备个数 if self.device in config.devices()[i]: print('已在登录_在输入账号密码页面_{}设备对应账号{}'.format( self.device, config.number()[i])) self.poco( 'com.dalan.lgh:id/dalan_password_input').set_text( config.number()[i]) self.poco('com.dalan.lgh:id/dalan_msg_input').set_text( '123456') self.poco(text="进入游戏").click() sleep(5.0) sleep(2.0) if exists( Template(r"hmzc_公告_mi9.png", record_pos=(0.001, 0.532), resolution=(1080, 2340))): print('{}游戏前_登录页有公告'.format(self.device)) touch( Template(r"hmzc_公告_mi9.png", record_pos=(0.001, 0.532), resolution=(1080, 2340))) sleep(2.5) if exists( Template(r"hmzc_开始游戏_mi9.png", record_pos=(-0.002, 0.706), resolution=(1080, 2340))): touch( Template(r"hmzc_开始游戏_mi9.png", record_pos=(-0.002, 0.706), resolution=(1080, 2340))) sleep(3) if exists( Template(r"hmzc_创角_mi9.png", record_pos=(0.001, 0.802), resolution=(1080, 2340))): print('{}__已在创角页面_需要创角'.format(self.device)) touch( Template(r"hmzc_创角_mi9.png", record_pos=(0.001, 0.802), resolution=(1080, 2340))) sleep(4) stop_app(self.name) #杀掉进程可跳过新手 sleep(2) start_app(self.name, activity=None) sleep(15) #不走创角流程 elif wait(Template(r"hmzc_游戏内断言.png", record_pos=(0.426, -0.846), resolution=(720, 1280)), timeout=20): print('{}__登录游戏成功'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return True, '登录游戏成功', img[img.find(r'superdalan.com//') + 16:][:-4] #创角后的操作 if exists( Template(r"hmzc_公告_mi9.png", record_pos=(0.001, 0.532), resolution=(1080, 2340))): print('{}_再次启动跳新手--登录页有公告'.format(self.device)) touch( Template(r"hmzc_公告_mi9.png", record_pos=(0.001, 0.532), resolution=(1080, 2340))) sleep(2.5) if exists( Template(r"hmzc_开始游戏_mi9.png", record_pos=(-0.002, 0.706), resolution=(1080, 2340))): touch( Template(r"hmzc_开始游戏_mi9.png", record_pos=(-0.002, 0.706), resolution=(1080, 2340))) if wait(Template(r"hmzc_游戏内断言.png", record_pos=(0.426, -0.846), resolution=(720, 1280)), timeout=25): print('{}__登录游戏成功'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return True, '登录游戏成功', img[img.find(r'superdalan.com//') + 16:][:-4] else: print('{}__找不到游戏内元素_未能成功进入游戏'.format(self.device)) img = Screencap.GetScreen(time.time(), self.device, "") return False, '找不到游戏内元素_未能成功进入游戏', img[img.find(r'superdalan.com//' ) + 16:][:-4]
def xy_deng_lu(name): clear_app(name) start_app(name) sleep(2.0) #判断是否有权限弹框 if poco("com.android.packageinstaller:id/permission_deny_button").exists(): for i in range(0, 7): #弹框处理 if poco("com.android.packageinstaller:id/permission_deny_button" ).exists(): poco(text="始终允许").click() else: print("已授权_或无需授权=%d" % i) break try: #已有账号记录 if poco(text="同意并进入游戏").wait(15).exists(): poco(text="同意并进入游戏").click() print('已进入登录_协议页面') sleep(20.0) pd_gonggao = baidu_shibie.compressImage('chen.png', 0.42, 0.09, 0.17, 0.05) #获取公告 if pd_gonggao == '公告': print('有公告') poco().click((0.947, 0.101)) if exists( Template(r"开始游戏.png", record_pos=(0.0, 0.592), resolution=(720, 1280))): poco().click((0.502, 0.825)) #开始游戏 print('点击开始游戏') sleep(25.0) poco().click((0.500, 0.900)) #选择角色页面_可能不用选择,为了保险还是点下 if wait( Template(r"游戏内元素.png", record_pos=(-0.408, 0.831), resolution=(720, 1280)), 30): print('成功进入游戏') else: print('进入游戏失败_未找到元素') #新注册账号_新手机或清缓存会有 elif poco(text="进入游戏").exists(): poco(text="进入游戏").click() if poco(text="我知道了").wait(10).exists(): poco(text="我知道了").click() print('注册账号成功') sleep(10.0) poco().click((0.500, 0.900)) #选择角色页面 sleep(25.0) paduan = baidu_shibie.compressImage('chen.png', 0.5, 0.01, 0.15, 0.03) if paduan == 0: print('进入游戏成功') else: print('进入游戏失败_未找到元素') chongzhi_q = baidu_shibie.compressImage('chen.png', 0.43, 0.01, 0.21, 0.03) #充值前获取用户拥有的金额 print('充值前的金额', chongzhi_q) poco().click((0.582, 0.028)) #点击顶部充值 sleep(3.0) chongzhi_y = baidu_shibie.compressImage('chen.png', 0.81, 0.68, 0.13, 0.03) #获取充值页元素 if chongzhi_y == '充值6元': print('已进入充值档位页面_首次充值') sleep(4.0) poco().click((0.9, 0.689)) #点击充值6元 elif baidu_shibie.compressImage('chen.png', 0.60, 0.60, 0.20, 0.10) == '6元': print('已进入充值档位页面_非首次充值') poco().click((0.696, 0.628)) #点击充值6元 else: print('进入充值页面失败') poco(text="微信").click() #微信支付 sleep(4.0) poco(text="立即支付").click() print('微信支付_输入密码页') sleep(3.0) #输入支付密码 touch((220.0, 2060.0)) #4 touch((1202.0, 1844.0)) touch((720.0, 1850.0)) touch((222.0, 2268.0)) touch((752.0, 2435.0)) touch((777.0, 2048.0)) sleep(2.0) poco(text="完成").click() #完成后自动跳转到充值档位页面 sleep(2.5) poco().click((0.934, 0.032)) #关闭充值档位_回到首页 sleep(1.5) chongzhi_h = baidu_shibie.compressImage('chen.png', 0.43, 0.01, 0.15, 0.03) #充值前获取用户拥有的金额 if int(chongzhi_h) == int(chongzhi_q) + 600: print('充值成功') return True elif int(chongzhi_h) == int(chongzhi_q) + 1200: print('首次充值双倍') return True elif int(chongzhi_h) < int(chongzhi_q) + 600: print('充值未到账') return False else: print('充值判断失败') return False except: print('已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)') Screencap.GetScreen(time.time(), config.devices(), "mxd_deng_lu") #手动截图
def place_order(device): '''游戏内操作充值''' order_id=None#默认为None sleep(3.0) try: connect_device("Android:///"+device) auto_setup(__file__) poco=AndroidUiautomationPoco() sleep(1.8) #先判断是否有商城按钮 if exists(Template(r"mxd_商城按钮.png", threshold=0.6,record_pos=(0.345, -0.226), resolution=(1280, 720))): print('{}--{}找到商城入口按钮'.format(os.getpid(),device)) touch(Template(r"mxd_商城按钮.png", threshold=0.6,record_pos=(0.345, -0.226), resolution=(1280, 720))) sleep(2.0) touch(Template(r"mxd_充值按钮.png", record_pos=(0.428, 0.066), resolution=(1280, 720))) sleep(2.0) #直接通过头像位置进入充值档位 elif exists(Template(r"mxd_游戏内任务.png",record_pos=(0.334, 0.231), resolution=(1280, 720)),30): print('{}--{}没有找到商城-直接通过头像位置进入充值档位'.format(os.getpid(),device)) poco.click([0.033,0.087]) sleep(2.0) poco.click([0.918,0.038]) sleep(2.0) else: print('%s--在游戏内找不到元素_可能原因:实名制弹窗|游戏副本加载页|游戏不固定元素蒙层|网络异常弹框蒙层'%device) img=Screencap.GetScreen(time.time(), device, "True") return False,device+'在游戏内找不到元素_可能原因:实名制弹窗|游戏副本加载页|游戏不固定元素蒙层|网络异常弹框蒙层',img[img.find(r'superdalan.com//')+16:][:-4] #创建线程获取日志 t = threading.Thread(target=get_order_log.say,args=('eve',device)) t.setDaemon(True) t.start() sleep(1.8) if exists(Template(r"mxd_6元按钮.png", record_pos=(-0.306, 0.037), resolution=(1280, 720))): print('{}--{}进入充值档位页面'.format(os.getpid(),device)) touch(Template(r"mxd_6元按钮.png", record_pos=(-0.306, 0.037), resolution=(1280, 720))) #判断是否弹出支付方式 if poco(text="微信").wait(8).exists(): print('{}--{}拉起支付方式弹窗成功'.format(os.getpid(),device)) poco(text="微信").click() time.sleep(4) else: print('{}--{}拉起支付方式失败'.format(os.getpid(),device)) t.join() print('{}___主线程结束___'.format(device)) path=os.path.dirname(__file__) #----------------打开文件读取数据----------------------- with open(path+'/order_log/'+device+'.txt',mode="r",encoding="UTF-8",errors="ignore") as abc: fileContent=abc.readlines() #---------------筛选mPayInfo pay日志的内容------------------------- for i in range(len(fileContent)): if 'union_order_sn' in fileContent[i]: pattern = re.compile('"union_order_sn":"([0-9]{15,20})')#正则表达式实例 result = pattern.findall(fileContent[i])#匹配的字符串 order_id=''.join(result) print('%s登录order_id=%s'%(device,order_id)) break else: print('{}日志文件是空的_没有获取到order_id'.format(device)) for i in range(5): sleep(4.0) if poco(text="登录").exists(): print('%s当前未登录微信'%device) img=Screencap.GetScreen(time.time(), device, "") return True,order_id,img[img.find(r'superdalan.com//')+16:][:-4] elif poco(text="立即支付").exists(): img=Screencap.GetScreen(time.time(), device, "") return True,order_id,img[img.find(r'superdalan.com//')+16:][:-4] else: img=Screencap.GetScreen(time.time(), device, "") return False, device+'微信无法调起!,手机反应太慢_超时',img[img.find(r'superdalan.com//')+16:][:-4] except: img=Screencap.GetScreen(time.time(), device, "") print('{}--{}--已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'.format(os.getpid(),device)) return False,device+'由于网络原因,或手机反应慢到导致元素无法找到_超时',img[img.find(r'superdalan.com//')+16:][:-4]
def mxd_deng_lu(device, name): #冒险岛 '''登录游戏处理操作''' connect_device("Android:///" + device) auto_setup(__file__) poco = AndroidUiautomationPoco() sleep(3.0) try: if poco(text="同意并进入游戏").exists(): #首次进入游戏 print('{}欢迎进入登录页'.format(device)) sleep(2.0) poco(text="同意并进入游戏").click() sleep(6.0) #弹窗快速注册页面 if poco(textMatches='^我有账号.*$').exists(): poco(textMatches='^我有账号.*$').click() sleep(2.0) if poco(textMatches='^找回密码.*$').exists(): for i in range(len(config.devices())): # if device in config.devices()[i]: print('已在登录_在输入账号密码页面_{}设备对应账号{}'.format( device, config.number()[i])) poco('com.xy.qjsg:id/xy_etx_account').set_text( config.number()[i]) poco('com.xy.qjsg:id/xy_etx_pwd').set_text('123456') poco(text="进入游戏").click() sleep(6.0) if exists( Template(r"mxd_公告.png", record_pos=(-0.004, -0.176), resolution=(1920, 1080))): print('{}游戏前_登录页有公告'.format(device)) poco().click((0.484, 0.824)) #关闭公告 sleep(4.0) elif exists( Template(r"mxd_公告.png", record_pos=(-0.004, -0.176), resolution=(1920, 1080))): print('{}外部-游戏前_登录页有公告'.format(device)) poco().click((0.484, 0.824)) #关闭公告 sleep(3.0) if exists( Template(r"mxd_切换账号.png", record_pos=(0.444, -0.212), resolution=(1280, 720))): touch( Template(r"mxd_切换账号.png", record_pos=(0.444, -0.212), resolution=(1280, 720))) sleep(3.0) #判断是否在登录_输入账号密码页面 if poco(textMatches='^找回密码.*$').exists(): print('{}外部--已在登录_在输入账号密码页面'.format(device)) for i in range(len(config.devices())): if device in config.devices()[i]: print('{}设备对应账号{}'.format(device, config.number()[i])) poco('com.xy.qjsg:id/xy_etx_account').set_text( config.number()[i]) poco('com.xy.qjsg:id/xy_etx_pwd').set_text('123456') poco(text="进入游戏").click() sleep(6.0) elif poco(text="帐号登录").exists(): #新版sdk print(device + '在登录方式选择页面') poco("com.dalan.lgh:id/dalan_agreement_check").click() #默认没有勾选需要勾选 poco(text="帐号登录").click() sleep(3.0) #判断是否还在当前页面,如果在说明反复勾选了 if poco(text="帐号登录").exists(): print(device + '需要反向勾选用户协议') poco("com.dalan.lgh:id/dalan_agreement_check").click() #反向勾选 sleep(1.0) poco(text="帐号登录").click() sleep(3.0) #即将进入帐号输入页面 if poco(textMatches='^忘记密码.*$').exists(): for i in range(len(config.devices())): # if device in config.devices()[i]: print('已在登录_在输入账号密码页面_{}设备对应账号{}'.format( device, config.number()[i])) poco('com.dalan.lgh:id/dalan_password_input').set_text( config.number()[i]) poco('com.dalan.lgh:id/dalan_msg_input').set_text('123456') poco(text="进入游戏").click() sleep(6.0) if exists( Template(r"mxd_公告.png", record_pos=(-0.004, -0.176), resolution=(1920, 1080))): print('{}游戏前_登录页有公告'.format(device)) poco().click((0.484, 0.824)) #关闭公告 sleep(4.0) else: print('{}找不到_同意并进入游戏,或元素超时'.format(device)) if exists( Template(r"mxd_开始冒险.png", threshold=0.6, record_pos=(0.003, 0.198), resolution=(1920, 1080))): poco().click((0.626, 0.676)) #点击进入选区 sleep(3) poco().click((0.198, 0.220)) #点击我的角色模块 print('{}游戏前_选择角色'.format(device)) sleep(3.0) img_3625 = Template(r"mxd_3625_角色.png", record_pos=(-0.037, -0.091), resolution=(1920, 1080)) img_669 = Template(r"mxd_669_角色.png", record_pos=(-0.041, -0.089), resolution=(1280, 720)) img_list = [img_669, img_3625] for pic in img_list: pos = exists(pic) if pos: print('{}_循环查询角色'.format(device)) touch(pos) break # 只要找到图片列表中的任何一张图片,就执行touch else: pass sleep(4.0) poco().click([0.500, 0.845]) #开始冒险 try: if wait( Template(r"mxd_进入游戏按钮.png", record_pos=(0.334, 0.231), resolution=(1280, 720)), 18): touch( Template(r"mxd_进入游戏按钮.png", record_pos=(0.334, 0.231), resolution=(1280, 720))) try: if wait( Template(r"mxd_游戏内任务.png", record_pos=(0.334, 0.231), resolution=(1280, 720)), 30): print('{}进入游戏_成功'.format(device)) img = Screencap.GetScreen(time.time(), device, "True") return True, '登录成功', img[img.find(r'superdalan.com//' ) + 16:][:-4] except: print('{}进入游戏异常_找不到元素'.format(device)) img = Screencap.GetScreen(time.time(), device, "True") return False, '找不到游戏内元素_未能成功进入游戏', img[ img.find(r'superdalan.com//') + 16:][:-4] except: print('{}在选服后出现异常,可能在维护(-详情看截图)'.format(device)) img = Screencap.GetScreen(time.time(), device, "True") return False, '在选服后出现异常,可能在维护,详情看截图', img[ img.find(r'superdalan.com//') + 16:][:-4] except: print('{}已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'.format(device)) img = Screencap.GetScreen(time.time(), device, "True") return False, '由于网络原因,或手机反应慢到导致元素无法找到', img[img. find(r'superdalan.com//') + 16:][:-4]
def wzjh_deng_lu_54a4c6159804(self): #小米4x #判断是否有权限弹框 try: if exists( Template(r"wzjh公告.png", threshold=0.60, record_pos=(0.003, -0.226), resolution=(1920, 1080))): #如果有公告就关闭 touch( Template(r"wzjh关闭公告.png", record_pos=(0.351, -0.226), resolution=(1920, 1080))) print(self.device + '游戏前有公告') sleep(4) if exists( Template(r"wzjh进入游戏.png", record_pos=(-0.01, 0.136), resolution=(1920, 1080))): print(self.device + '进入登录页_有进入游戏按钮') touch( Template(r"wzjh进入游戏.png", record_pos=(-0.01, 0.136), resolution=(1920, 1080))) sleep(5) if exists( Template(r"wzjh_创建_2.png", record_pos=(0.362, 0.22), resolution=(1280, 720))) or exists( Template(r"wzjh创角.png", record_pos=(0.317, 0.194), resolution=(1920, 1080))): print(self.device + '进入创角界面') self.poco().click((0.860, 0.885)) self.poco().click((0.860, 0.885)) #点击进入游戏 sleep(4) for i in range(0, 14): print(self.device + '循环判断游戏内元素') sleep(3) if exists( Template(r"wzjh游戏内元素.png", record_pos=(-0.101, -0.06), resolution=(1920, 1080))) or exists( Template(r"wzjh首充按钮.png", record_pos=(0.331, -0.158), resolution=(1920, 1080))): print(self.device + '登录游戏成功') img = Screencap.GetScreen(time.time(), self.device, "True") return True, '登录成功', img[img.find(r'superdalan.com//' ) + 16:][:-4] elif i > 12: print(self.device + '进入游戏异常_找不到元素') img = Screencap.GetScreen(time.time(), self.device, "True") return False, self.device + '找不到游戏内元素_未能成功进入游戏', img[ img.find(r'superdalan.com//') + 16:][:-4] else: print(self.device + '找不到进入游戏按钮(可能账号登录异常)_请看截图') img = Screencap.GetScreen(time.time(), self.device, "True") return False, self.device + '找不到进入游戏按钮(可能账号登录异常)_请看截图', img[ img.find(r'superdalan.com//') + 16:][:-4] except: print(self.device + '-已走异常流程_截图异常页面___(原因:主要是因为没有进入指定页面_)') img = Screencap.GetScreen(time.time(), self.device, "True") return False, self.device + '由于网络原因,或手机反应慢到导致元素无法找到', img[ img.find(r'superdalan.com//') + 16:][:-4]
def fzzj_deng_lu_54a4c6159804(self): #小米4x try: sleep(2) if exists( Template(r"fzzj_公告.png", record_pos=(-0.004, 0.171), resolution=(1920, 1080))): touch( Template(r"fzzj_公告.png", record_pos=(-0.004, 0.171), resolution=(1920, 1080))) print(self.device + '游戏前有公告') sleep(3) if exists( Template(r"fzzj_开始游戏按钮.png", record_pos=(0.002, 0.192), resolution=(1920, 1080))): print(self.device + '进入登录页_有进入游戏按钮') touch((1000, 713)) #点击进入选服入口 sleep(4) touch((443, 286)) #点击最近登录菜单 sleep(2) if exists( Template(r"fzzj_选服.png", record_pos=(-0.102, -0.109), resolution=(1920, 1080))): print(self.device + '已在选服页面') touch( Template(r"fzzj_选服.png", record_pos=(-0.102, -0.109), resolution=(1920, 1080))) try: touch( wait(Template(r"fzzj_开始游戏按钮.png", record_pos=(0.002, 0.192), resolution=(1920, 1080)), timeout=6)) #在6秒内找到并点击 if wait(Template(r"fzzj_游戏内充值.png", record_pos=(0.288, -0.196), resolution=(1920, 1080)), timeout=25): print(self.device + '游戏内有充值按钮') img = Screencap.GetScreen(time.time(), self.device, "True") return True, '登录成功', img[img.find(r'superdalan.com//' ) + 16:][:-4] except: print(self.device + '进入游戏异常_找不到元素') img = Screencap.GetScreen(time.time(), self.device, "True") return False, self.device + '找不到游戏内元素_未能成功进入游戏', img[ img.find(r'superdalan.com//') + 16:][:-4] else: print(self.device + '找不到进入游戏按钮(可能账号登录异常)_请看截图') img = Screencap.GetScreen(time.time(), self.device, "True") return False, self.device + '找不到进入游戏按钮(可能账号登录异常)_请看截图', img[ img.find(r'superdalan.com//') + 16:][:-4] except: print(self.device + '-已走异常流程_截图异常页面___(原因:主要是因为没有进入指定页面_)') img = Screencap.GetScreen(time.time(), self.device, "True") return False, self.device + '由于网络原因,或手机反应慢到导致元素无法找到', img[ img.find(r'superdalan.com//') + 16:][:-4]