def chat(start, devices): poco = common.deviceconnect(devices) poco("Back").click() # 点击聊天功能 sleep(1) chatlist = [1, 2, 3, 4, 10, 14] freeze_poco = poco.freeze() # TODO:定义冻结poco for tab in chatlist: tab1 = "tab" + str(tab) if freeze_poco("ChatNewDlg_ani").offspring(tab1).offspring("Bg").child( "name").exists(): common.printgreen("检查点 " + freeze_poco("ChatNewDlg_ani").offspring( tab1).offspring("Bg").child("name").get_text() + " 聊天选项 显示正确") poco("ChatNewDlg_ani").offspring(tab1).offspring("Bg").child( "name").click() if poco("chattext").exists(): poco("textinput").wait().set_text("聊五毛钱的天。。。") poco("sendchat").click() # 点击发送 if poco("addBtn").exists(): poco("addBtn").click() # 表情 sleep(1) item1 = "item" + str(random.randint(0, 23)) poco(item1).child("template").click() poco("sendchat").click() # 点击发送 sleep(2) else: common.printgreen("当前聊天选项没有输入选项") else: common.printred(f"检查点 聊天选项 发{tab1} 不存在,检查一下.一个大选项,大概率是因为没有加工会造成") common.get_screen_shot(start, time.time(), devices, "聊天选项控件缺失") return poco("ChatNewDlg_ani").offspring("tab4").offspring( "Selected").child("name").get_text()
def skill(start, devices): poco = common.deviceconnect(devices) if poco("SysBSkill").get_position()[0] > 1: poco(texture="halln_4").click() sleep(2) else: common.printgreen("当前界面就有技能按钮") poco("SysBSkill").click() # 点击技能按钮 if poco("SkillTreeBox").exists(): common.printgreen("进入技能界面") chongzhi(poco) freeze_poco = poco.freeze() # TODO:定义冻结poco # for item in freeze_poco("SkillTree(Clone)").offspring("Tabs").offspring("Selected"): for item in freeze_poco("SkillTree(Clone)").offspring("Tabs").offspring("SelectedTextLabel"): # 点击职业选项 common.printgreen(f"开始点击 {item.get_text()} 页签") item.click() sleep(2) freeze_poco = poco.freeze() # TODO:定义冻结poco if freeze_poco("SkillTree(Clone)").offspring("Icon").exists(): count = 0 for skill in freeze_poco("SkillTree(Clone)").offspring("Icon"): skill.click() count += 1 if count >= 2: break return poco("SkillTree(Clone)").offspring("Tabs").child("item3").child("SelectedTextLabel").get_text() # 觉醒
def title(start,devices): poco = common.deviceconnect(devices) if poco("SysAItem").get_position()[0] > 1: poco(texture="halln_4").click() sleep(1) poco("SysAItem").click() # 点击角色按钮 if poco("Title").exists(): common.printgreen("进入角色界面") if poco("XSys_Design_Designation").exists(): poco("XSys_Design_Designation").click() # 点击称号 if poco(text="日常称号").exists(): common.printgreen("进入称号界面,开始检测称号。。。") for i in range(1, 7): for Label in poco("ItemNewDlg(Clone)").offspring(str(i)).child("ChildList").offspring("Label"): Label.click() freeze_poco = poco.freeze() # TODO:定义冻结poco for ii in range(len(freeze_poco("WrapContent").child())): title = freeze_poco("ItemNewDlg(Clone)").offspring(f"item{ii}").offspring("Animation") if title.exists(): # 判断称号存在 pass else: if "fff" in title: print(freeze_poco("ItemNewDlg(Clone)").offspring(f"item{ii}").offspring( "Animation").get_text() + "称号显示错误") else: print("图片称号显示错误") common.get_screen_shot(start,time.time(), devices, "没有进入角色界面") poco("ItemNewDlg(Clone)").offspring(str(i)).child("Bg").click() common.printgreen("称号检测完毕。。。没有发现异常") else: common.printred("没有进入角色界面,请检查") common.get_screen_shot(start,time.time(), devices, "没有进入角色界面") return poco(text="[fff7b4]钓鱼大师").get_text() # [fff7b4]钓鱼大师
def mail(start, devices): poco = common.deviceconnect(devices) if poco("Back").exists(): poco("Back").click() # 点击聊天功能 sleep(1) # 点击世界频道按钮 poco("tab1").click() if poco("Mail").exists(): # 点击邮箱 poco("Mail").click() if poco("MailName").exists(): common.printgreen("进入邮箱功能") common.printgreen("点击邮件收取") poco("sqBtn").click() sleep(2) if poco("GreyModalDlg(Clone)").child("Bg").exists(): common.printgreen("没有可领取的邮件") sleep(1) poco("OK").click() if poco("MailDlg(Clone)").offspring("item0").exists(): common.printgreen( "邮箱有邮件,开始进行删除测试,因为删除是没有反馈的,所以只进行点击测试,拿不到结果") poco("MailDlg(Clone)").offspring("item0").child( "sign").click() poco("deletBtn").click() else: common.printred("没有进入邮箱界面,请检查") common.get_screen_shot(start, time.time(), devices, "没有进入邮箱界面") return poco("MailName").get_text() # 邮 件
def bossrush(start, devices): poco = common.deviceconnect(devices) if poco("Duck").exists(): poco("Duck").click() sleep(2) poco("XSys_Activity").click() # 点击日常按钮 else: common.printgreen("主界面缺少日常按钮,请检查...") common.get_screen_shot(start, time.time(), devices, "主界面缺少日常按钮") pos = poco("DailyActivityDlg(Clone)").offspring( "XActivityHandler").offspring("Item927").offspring( "Background") # 无限幻境参加按钮 if pos.exists(): butpos(devices, butpos=pos, pos1=0.4, pos2=0.79, high=565, low=511, lows=240) # 调用butpos方法 pos.click() # 点击无限幻境参加按钮 else: common.printgreen("日常界面没有无限幻境选项,请检查...") common.get_screen_shot(start, time.time(), devices, "日常界面没有无限幻境选项") if poco("Title").exists(): common.printgreen("进入无限幻境界面,开始检测界面控件元素")
def loginreward(start, devices): poco = common.deviceconnect(devices) if poco("SysISevenActivity").exists(): poco("SysISevenActivity").click() if poco(texture="SevenReward_Title").exists(): freeze_poco = poco.freeze() # TODO:定义dongjiepoco for WrapItem_ in range(len(freeze_poco("ScrollView").child())): WrapItem = "WrapItem_" + str(WrapItem_) if freeze_poco(WrapItem).exists() and freeze_poco("Texture").exists(): pass else: common.printred("登陆奖励缺少元素,请检查。。。") common.get_screen_shot(start, time.time(), devices, "登陆奖励缺少元素") if poco("SevenAwardDlg(Clone)").offspring("GetButton").offspring(text="领 取").exists(): for Label in poco("SevenAwardDlg(Clone)").offspring("GetButton").offspring(text="领 取"): Label.click() for i in range(10): if poco(text="使用").exists(): poco(text="使用").click() else: break if not poco("SevenAwardDlg(Clone)").offspring("WrapItem_6").offspring(text="领 取").exists(): common.printgreen("已经全部领取") else: common.printgreen("没有可领取的奖励") else: common.printred("没有弹出登陆奖励,请检查。。。") common.get_screen_shot(start, time.time(), devices, "主界面没有登陆奖励按钮") else: common.printred("主界面没有登陆奖励按钮,请检查。。。") common.get_screen_shot(start, time.time(), devices, "主界面没有登陆奖励按钮") if poco(texture="SevenReward_Title").exists(): return poco(texture="SevenReward_Title").get_name() # Title else: # TODO:说明一下,如果主界面没有登陆奖励按钮,那么报告给一个失败的提示,因为不确定是因为领完了消失还是BUG的原因 return poco("Alphaboard").offspring("SysA_Friends").child("Name").get_text() # 社交
def chapter_seventeen(devices): """ 主线第十七章 :return:Complete_Map()参数表示移动多少次可以到达指定章节 """ poco = common.deviceconnect(devices) Complete_Map(1,poco,devices) return poco("Duck").get_name()
def chapter_twelve(devices): """ 主线第十二章 :return:Complete_Map()参数表示移动多少次可以到达指定章节 """ poco = common.deviceconnect(devices) Complete_Map(6,poco,devices) return poco("Duck").get_name()
def witness(start, devices): poco = common.deviceconnect(devices) if poco("SysG_Live").exists(): poco("SysG_Live").click() freeze_poco = poco.freeze() # TODO:定义dongjiepoco if freeze_poco("SpectateDlg(Clone)").offspring("Name").exists(): for Label in freeze_poco("SpectateDlg(Clone)").offspring("SpectateFrame").\ offspring("Bg").offspring("TextLabel"): Label.click() # 点击观战的多项子页签 freeze_poco("Refresh").click() # 点击刷新按钮 freeze_poco("1").click() # 点击我的记录 freeze_poco = poco.freeze() # TODO:定义dongjiepoco if freeze_poco("Watch").exists() and freeze_poco("Commend").exists(): pass poco("Text").click() # 点击观战设置 freeze_poco = poco.freeze() # TODO:定义dongjiepoco if freeze_poco("BtnDeny").exists() and freeze_poco("BtnAllow").exists() and freeze_poco("Ok").exists(): freeze_poco("SpectateDlg(Clone)").offspring("BtnDeny").child("BtnHigh").click() # 点击不允许被观战 common.printgreen("点击不允许被观战") common.get_screen_shot(start, time.time(), devices, "点击不允许被观战") freeze_poco("SpectateDlg(Clone)").offspring("BtnAllow").child("BtnHigh").click() # 点击允许被观战 common.printgreen("点击允许被观战") sleep(0.5) common.get_screen_shot(start, time.time(), devices, "点击允许被观战") return poco("Label").get_text() # 保存设置 else: common.printred("没有进入观战界面,请检查。。。") common.get_screen_shot(start, time.time(), devices, "没有进入观战界面") else: common.printred("主界面没有有观战按钮,请检查。。。") common.get_screen_shot(start, time.time(), devices, "主界面没有有观战按钮")
def darkness_ectype(start, devices): poco = common.deviceconnect(devices) if poco("Duck").exists(): poco("Duck").click() sleep(2) poco("XSys_Activity").click() # 点击日常按钮 else: common.printgreen("主界面缺少日常按钮,请检查...") common.get_screen_shot(start, time.time(), devices, "主界面缺少日常按钮") pos = poco("DailyActivityDlg(Clone)").offspring("XActivityHandler").offspring("Item530").offspring("Background") # 黑暗神殿参加按钮 if pos.exists(): butpos(devices,butpos=pos, pos1=0.4, pos2=0.79, high=565, low=511, lows=240) # 调用butpos方法 pos.click() # 点击黑暗神殿参加按钮 else: common.printgreen("日常界面没有黑暗神殿选项,请检查...") common.get_screen_shot(start, time.time(), devices, "日常界面没有黑暗神殿选项") if poco("Title").exists(): # 排行榜 poco("Rank").click() freeze_poco = poco.freeze() # TODO:定义冻结poco if freeze_poco("1").exists() and freeze_poco("2").exists() and freeze_poco("3").exists() and freeze_poco("4").exists() and freeze_poco("5").exists(): for i in range(1,20): common.printgreen("检查点 " + freeze_poco(str(i)).child("Label").get_text() + " 显示正确") common.printgreen("排行榜首界面显示正确,详细内容不做判断,如果需要,后期优化") poco("Close").click() else: common.printred("排行榜界面显示错误,请检查....") common.get_screen_shot(start, time.time(), devices, "排行榜界面显示错误") if poco("FirstBlood").exists(): # 首通奖励 poco("FirstBlood").click() freeze_poco = poco.freeze() # TODO:定义冻结poco if freeze_poco("TeamTowerNewDlg(Clone)").offspring("CheckReward").offspring("T").exists() and \ freeze_poco(texture="l_imageView_07").exists() and freeze_poco("GetAfterPass").exists(): common.printgreen("首通奖励显示正确...") poco("Close").click() else: common.printred("首通奖励显示错误,请检查.....") common.get_screen_shot(start, time.time(), devices, "首通奖励显示错误") if poco("times").get_text()[0] == "1": common.printgreen("黑暗神殿有重置次数...") poco("Reset").click() if poco("OK").exists(): poco("OK").click() common.printgreen("重置完成...") else: common.printred("连第一层都没有打过,不能重置。。。") common.get_screen_shot(start, time.time(), devices, "不能重置") else: common.printgreen("当前没有重置次数,接着打吧....") common.get_screen_shot(start, time.time(), devices, "当前没有重置次数") if poco("GoBattle").exists(): poco("GoBattle").click() sleep(15) darkness(poco,devices) sleep(15) return poco("Title").get_text()
def chapter_eighteen(devices): """ 主线第十八章 :return:Complete_Map()参数表示移动多少次可以到达指定章节 """ poco = common.deviceconnect(devices) Complete_Map(0,poco,devices) return poco("Duck").get_name() # devices = "127.0.0.1:62001" # chapter_one(devices)
def dragonspirit(start, devices): poco = common.deviceconnect(devices) if poco("SysG_DragonSpirit").exists(): # 龙魂按钮存在 if poco("SysG_DragonSpirit").get_position()[0] > 1: # 界面有龙魂按钮 poco(texture="halln_4").click() poco("SysG_DragonSpirit").click() else: poco("SysG_DragonSpirit").click() freeze_poco = poco.freeze() # TODO:定义冻结poco if freeze_poco("DragonSpiritDlg(Clone)").offspring("AvatarPanel").child("item0").exists() and \ freeze_poco("DragonSpiritDlg(Clone)").offspring("AvatarPanel").child("item1").exists(): for item in poco("AvatarPanel").offspring("HeadIcon"): item.click() freeze_poco = poco.freeze() # TODO:定义冻结poco # 程序隐藏了5个控件,所以以下只点击5次 count = 0 for icon in freeze_poco("DragonSpiritDlg(Clone)").offspring( "Panel").offspring("lock"): icon.click() sleep(0.5) icon.click() count += 1 if count >= 5: break if poco("DragonSpiritSkillPreView").child("Bg").child( "p").exists(): icon.click() # 点击激活按钮 # poco("ActivationBtn").click() if poco(texture="l_frame_00").exists(): common.printred("没有激活道具。请补充。。") poco("ActivationBtn").click() break if poco("LevelUpBtn").exists(): common.printgreen("已经激活,开始喂养") poco("LevelUpBtn").click() if not poco("Title").exists(): # 如果没有弹出就重新点击 poco("LevelUpBtn").click() if poco("Title").exists(): # 喂养界面 if poco("DragonSpiritHandler").offspring( "LevelUpBtn").exists(): # 如果有喂养按钮 poco("DragonSpiritHandler").offspring( "LevelUpBtn").click() # 点击喂养 poco(texture="l_close_00").click() # 点击关闭 elif poco("DirectUpBtn").exists(): # 如果有突破按钮 poco("DirectUpBtn").click() # 点击突破 poco(texture="l_close_00").click() # 点击关闭 else: common.printred("没有弹出喂养界面,请检查。。。") common.get_screen_shot(start, time.time(), devices, "没有弹出喂养界面") if poco("ItemAccessDlg(Clone)").offspring("Title").exists(): freeze_poco("ActivationBtn").click() else: common.printred("龙魂界面控件缺失,请检查") common.get_screen_shot(start, time.time(), devices, "龙魂界面控件缺失") return poco("Total").child("Text").get_text() # 龙魂总属性
def firststartgame(username, password, packname, devices, server): dev = common.connect_device("android:///" + devices) common.start_app(packname) # 启动app Androidpoco = AndroidUiautomationPoco(device=dev, use_airtest_input=True, screenshot_each_action=False) common.sleep(2) while True: common.sleep(1) if Androidpoco("android:id/button1").exists(): Androidpoco("android:id/button1").click() else: break if Androidpoco("android:id/message").exists(): Androidpoco("android:id/button1").click() common.sleep(5) while True: poco = common.deviceconnect(devices) common.sleep(5) try: poco("iptAccount").wait_for_appearance(60) common.sleep(3) print(f"{devices}加载完成,开始登录账号") poco("iptAccount").set_text(username) poco("iptPassword").set_text(password) common.sleep(3) poco("btnLogin").click() common.sleep(3) if poco(texture="l_button_00").exists(): # 公告 poco(texture="l_button_00").click() if poco("Panel").exists(): # 前往新区 poco(texture="btk5").click() if poco("Label").get_text().split(" ")[0] == "OB+13": print(f"要找的服务器为 {server} , 现在已经是需要的服务器了,不需要重新选择...") else: if poco("zhanghao").exists(): # 更换服务器按钮 poco("zhanghao").click() select_server(poco, server) print(f"选择 {server} 服务器成功") common.sleep(2) if poco("Enter").exists(): poco("Enter").click() common.sleep(2) if poco(text="进入游戏").exists(): poco(text="进入游戏").click() common.sleep(2) print("点击进入游戏,开始选择角色。。。") poco("EnterGame").wait_for_appearance() if poco("EnterGame").exists(): poco("EnterGame").click() print("角色自动寻找成功,点击开始游戏。。。") common.sleep(15) break except: print(f"{devices}还未加载完毕,请稍等.....") common.sleep(5) common.stop_app(packname)
def reward(start, devices): poco = common.deviceconnect(devices) if poco("Duck").exists(): poco("Duck").click() sleep(2) poco("XSys_Activity").click() # 点击日常按钮 else: common.printgreen("主界面缺少日常按钮,请检查...") common.get_screen_shot(start, time.time(), devices, "主界面缺少日常按钮") pos = poco("DailyActivityDlg(Clone)").offspring("XActivityHandler").offspring("Item904").offspring("Background") # 悬赏任务参加按钮 if pos.exists(): butpos(devices,butpos=pos, pos1=0.4, pos2=0.79, high=565, low=511, lows=240) # 调用butpos方法 pos.click() # 点击日常任务参加按钮 else: common.printgreen("日常界面没有悬赏任务选项,请检查...") common.get_screen_shot(start, time.time(), devices, "日常界面没有悬赏任务选项") if not poco(text="联盟悬赏").exists(): # 判断是否已经接了任务 common.printgreen("还未接取任务,开始接任务") sleep(30) for i in range(5): if poco("TalkTextBg").child("Bg").exists(): # 如果弹出了任务弹窗 poco("VirtualTab").click() # 点击下一步 if poco("BtnOK").exists(): # 如果出现了接受按钮 common.printgreen("接受任务") poco("BtnOK").click() # 点击接受 break if poco(text="联盟悬赏").exists(): # 判断是否已经接了任务 freeze_poco = poco.freeze() # TODO:定义冻结poco common.printgreen("已经接了悬赏任务,开始检测任务模块控件") if freeze_poco("Bg2").exists() and freeze_poco("ChestX").exists() and freeze_poco("RightItem").exists() and \ freeze_poco("Text").exists() and freeze_poco("TaskRewards").exists() and freeze_poco("RefreshBtn").exists() and \ freeze_poco("CommitBtn").exists() and freeze_poco("BountyList").exists(): common.printgreen("悬赏任务模块控件元素判断完毕,开始判断悬赏任务") for item in range(len(freeze_poco("BountyList").child())): item1 = "item" + str(item) if freeze_poco("BountyList").child(item1).exists(): pass else: common.printred("悬赏任务缺失,请检查...") common.get_screen_shot(start, time.time(), devices, "悬赏任务缺失") common.printgreen("悬赏任务判断完毕,开始判断刷新任务模块") if poco("FreeLabel").exists(): if int(poco("FreeLabel").get_text()[-3]) > 0: # 刷新次数 common.printgreen("任务还有刷新次数,点击刷新") poco("RefreshBtn").click() elif poco(text="刷新").exists(): # 刷新次数 common.printgreen("任务没有刷新次数了,我准备用龙币刷新,我钱多。。。") poco("RefreshBtn").click() common.printgreen("好了,我用龙币帮你刷新了。。。\n还有我没有点击前往,因为前往都是模块本身,这些模块都会有自己的脚本。。。") else: common.printred("刷新按钮缺失,请检查...") common.get_screen_shot(start, time.time(), devices, "刷新按钮缺失") return poco("CommitBtn").child("T").get_text()
def Intensify(devices): # 主界面点击变强按钮 """ 主界面点击变强按钮 :return: """ poco = common.deviceconnect(devices) if poco("SysIBq").exists(): poco("SysIBq").click() # 主界面变强按钮 else: common.printred("主界面没有找到变强按钮") for item in range(len(poco("scroll").child())): item1 = "item" + str(item) pos = poco("FpStrengthenDlg(Clone)").offspring(item1) # 获取当前控件 if pos.exists(): butpos(devices, butpos=pos, pos1=0.32, pos2=0.81, high=158, low=544, lows=290) # 调用butpos方法 common.printgreen("进入" + poco("FpStrengthenDlg(Clone)").offspring( item1).offspring("TextLabel").get_text() + "功能,开始检查子页签") pos.click() # 点击变强子按钮 else: common.printred("没有找到" + poco("FpStrengthenDlg(Clone)").offspring( item1).offspring("TextLabel").get_text() + "按钮,请检查..") freeze_poco = poco.freeze() # TODO:定义dongjiepoco for item2 in range(len(freeze_poco("Panel").child())): # 获取子页签的按钮 item2 = "item" + str(item2) if freeze_poco("FpStrengthenDlg(Clone)").offspring(item2).child( "Strengthen").child("TittleLab").exists(): pos = freeze_poco("FpStrengthenDlg(Clone)").offspring( item2).child("Strengthen").child("TittleLab") # butpos(butpos=pos,pos1=0.33,pos2=0.85,high=1330,low=930,lows=482) # 调用butpos方法 elif freeze_poco("FpStrengthenDlg(Clone)").offspring(item2).child( "Other").child("Label").exists(): pos = freeze_poco("FpStrengthenDlg(Clone)").offspring( item2).child("Other").child("Label") # butpos(butpos=pos, pos1=0.33, pos2=0.85, high=1330, low=930, lows=482) # 调用butpos方法 if pos.exists(): common.printgreen( freeze_poco("FpStrengthenDlg(Clone)").offspring( f"{item1}").offspring("TextLabel").get_text() + "-->>" + pos.get_text() + "-->>显示成功") else: common.printred( "无法获取" + poco("FpStrengthenDlg(Clone)").offspring( f"{item1}").offspring("TextLabel").get_text() + f"选项第{item}个子页签。赶紧检查..") return pos.get_text() # 变强功能最后一个检查点--对应的活跃度宝箱打开随机获得水晶显示成功
def heraldry(start, devices): poco = common.deviceconnect(devices) if poco("SysAItem").get_position()[0] > 1: poco(texture="halln_4").click() sleep(1) poco("SysAItem").click() # 点击角色按钮 if poco("Title").exists(): common.printgreen("进入角色界面") if poco("XSys_Char_Emblem").exists(): poco("XSys_Char_Emblem").click() # 点击纹章 if poco("ItemNewDlg(Clone)").offspring("Items").child( "Frame").offspring("T").exists(): common.printgreen("进入金属板界面,开始进行纹章制作") # TODO:接下来进行纹章制作,纹章装备和卸下的操作已经完成 addheraldry(start, poco, devices) # 调用纹章制作 common.printgreen("进入纹章界面,开始测试纹章") but = poco("ItemNewDlg(Clone)").offspring(name="Icon") if but.exists(): but.click() # 点击已经装备的纹章 if poco("main").exists(): poco("Button1").click() # 点击卸下 if poco("ItemNewDlg(Clone)").offspring("Items").offspring( "Icon").exists(): but = poco("ItemNewDlg(Clone)").offspring( "Items").offspring(name="Icon") if but.exists(): but.click() # 点击第一个纹章 if poco("main").exists(): # 打开纹章装备界面 poco("Button1").click() # 点击装备 common.get_screen_shot(start, time.time(), devices, "装备纹章截图验证") but = poco("ItemNewDlg(Clone)").offspring(name="Icon") if but.exists(): but.click() # 点击已经装备的纹章 if poco("main").exists(): poco("Button1").click() # 点击卸下 else: common.printgreen("点击纹章后没有打开纹章装备界面") common.get_screen_shot(start, time.time(), devices, "点击纹章后没有打开纹章装备界面") else: common.printred("没有纹章,请添加文章后进行操作") common.get_screen_shot(start, time.time(), devices, "没有纹章") else: common.printred("没有进入角纹章界面,请检查。。") common.get_screen_shot(start, time.time(), devices, "没有进入角色") else: common.printred("没有进入角色,请检查。。") common.get_screen_shot(start, time.time(), devices, "没有进入角色") return poco("ItemNewDlg(Clone)").offspring("EmblemListPanel").child( "Frame").offspring("T").get_text() # 纹章
def bag_item(start, devices): poco = common.deviceconnect(devices) check_menu("SysAItem", poco) # 进入角色 if poco("XSys_Bag_Item").exists(): # 进入龙器页签 poco("XSys_Bag_Item").click() with poco.freeze() as freeze_poco: if freeze_poco(texture="l_zl").exists() and \ freeze_poco("PowerPoint").exists() and \ freeze_poco("ItemNewDlg(Clone)").offspring("item0").exists() and \ freeze_poco("ItemNewDlg(Clone)").offspring("item1").exists() and \ freeze_poco("ItemNewDlg(Clone)").offspring("item2").exists() and \ freeze_poco("ItemNewDlg(Clone)").offspring("item3").exists() and \ freeze_poco("DragObj").exists() and \ freeze_poco("add").exists() and \ freeze_poco("BagNum").exists(): common.printgreen("战力,背包分类,背包扩展UI元素显示正常") else: common.printred("背包界面UI元素显示异常,详情见截图") common.get_screen_shot(start, time.time(), devices, "背包界面UI元素显示异常") try: with poco.freeze() as freeze_poco: countbegin = int(poco("BagNum").get_text().split("/", 1)[1]) freeze_poco("ItemNewDlg(Clone)").offspring("item0").offspring("TextLabel").click() freeze_poco("ItemNewDlg(Clone)").offspring("item1").click() freeze_poco("ItemNewDlg(Clone)").offspring("item2").click() freeze_poco("ItemNewDlg(Clone)").offspring("item3").click() freeze_poco("add").click() number = int(poco("GreyModalDlg(Clone)").offspring("Bg").child("Label").get_text()[4:7].split("个")[0]) # 获取需要几个背包扩充券 poco("OK").click() if poco("ListPanel").exists(): poco("ListPanel").click() for i in range(number+2): poco("OK").click() poco("Close").click() freeze_poco("add").click() poco("OK").click() countend = int(poco("BagNum").get_text().split("/", 1)[1]) if (countend-countbegin) == 5: common.printgreen("背包扩充成功") else: common.printred("背包扩充失败") common.printgreen("背包按钮点击正常") except Exception as e: common.printred("背包按钮点击异常") common.printred(e) common.get_screen_shot(start, time.time(), devices, "背包按钮点击异常") else: common.printred("背包功能暂未开放,请提升等级角色") common.get_screen_shot(start, time.time(), devices, "背包功能暂未开放") poco("Close").click() return poco("Duck").get_name() # 返回值poco("Duck").get_name()
def stop_APP(devices, packagename): try: print("游戏未启动,开始启动游戏...") common.stop_app(packagename) common.sleep(1) common.start_app(packagename) common.sleep(3) start = time.time() while True: common.os.system(f"adb -s {devices} shell input tap {100} {100}") common.sleep(3) common.os.system(f"adb -s {devices} shell input tap {100} {100}") poco = common.deviceconnect(devices) try: if poco("Dialog").exists(): poco("OK").click() if poco("LabelStatus").exists(): common.printgreen("等待更新完成....") poco("AnnouncementDlg(Clone)").child("Bg").child("Enter").wait_for_appearance() common.printgreen("请耐心等待...") poco("AnnouncementDlg(Clone)").child("Bg").child("Enter").wait_for_appearance(25) break except: if time.time() - start > 120: print(f"游戏启动时间超过 {start}s,现在进行重新启动") stop_APP(devices, packagename) break print("正在启动游戏,请稍后...") poco(texture="l_button_00").wait_for_appearance() poco(texture="l_button_00").click() common.sleep(3) if poco(text="进入游戏").exists(): poco(text="进入游戏").click() if poco(text="进入游戏").exists(): poco(text="进入游戏").click() print("点击进入游戏,开始选择角色。。。") poco("EnterGame").wait_for_appearance(5) common.sleep(3) if poco("EnterGame").exists(): poco("EnterGame").click() print("角色自动寻找成功,点击开始游戏。。。") common.sleep(15) else: print("进入游戏失败,请检查。。。。") else: print("进入游戏失败,请检查。。。。") interface(devices, packagename) except ConnectionAbortedError as e: print(f"{e} 主机断开连接,杀掉游戏进程,脚本重新启动") restart_app(devices)
def fetters(start, devices): poco = common.deviceconnect(devices) if poco("SysE_NPCFavor").exists(): # 羁绊按钮存在 if poco("SysE_NPCFavor").get_position()[0] > 1: # 界面有羁绊按钮 poco(texture="halln_4").click() poco("SysE_NPCFavor").click() else: poco("SysE_NPCFavor").click() freeze_poco = poco.freeze() # TODO:定义冻结poco if freeze_poco("BookBg").exists() and \ freeze_poco("TabTpl0").exists() and \ freeze_poco("TabTpl2").exists() and \ freeze_poco("TabTpl1").exists(): # 点击好感度 for TabTp in freeze_poco("Tabs").offspring("Bg"): TabTp.click() freeze_poco = poco.freeze() # TODO:定义冻结poco try: if freeze_poco("WrapContent").offspring("NpcName").exists(): for Npcname in freeze_poco("WrapContent").offspring("NpcName"): common.printgreen(f"检查点 {Npcname.get_text()} 显示正确") if freeze_poco("WrapContent").offspring("GroupName").exists(): for Npcname in freeze_poco("WrapContent").offspring("GroupName"): common.printgreen(f"检查点 {Npcname.get_text()} 显示正确") except PocoNoSuchNodeException: pass # TODO:以下代码为激活状态下的操作 common.printgreen("点击好感度") poco("TabTpl0").click() # 点击好感度 if poco("NpcInfo").child("Activation").child("RedPoint").exists(): if poco("NpcInfo").child("Activation").child("RedPoint").get_position()[0] < 1: # 可激活按钮存在 common.printgreen("点击激活") poco("NpcInfo").child("Activation").click() # 点击激活 if poco("GoBtn").exists(): # 前往赠送按钮存在 if poco("GoBtn").get_position()[0] < 1: common.printgreen("点击前往赠送") poco("GoBtn").click() # 点击前往赠送 if poco("BtnSend").wait(30).exists(): # 等待出现对话框 poco().click([0.5, 0.5]) # 出现了对话框就点击屏幕中间 return "羁绊" else: common.printred("没有出现对话框,请检查") common.get_screen_shot(start, time.time(), devices, "没有出现对话框") else: common.printred("羁绊界面控件缺失,请检查") common.get_screen_shot(start, time.time(), devices, "羁绊界面控件缺失") return poco(texture="l_tip_00").child("T").get_text() # 羁绊
def test_thug_4(start, devices): # Prof6-转职为刺客分支、光明之怒分支、暗分支 """ Prof6-转职为刺客分支、光明之怒分支、暗分支 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(6,poco, devices) poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail2").click() # Prof6-转职为刺客分支、光明之怒分支 Prof1_zhiye(start, poco,devices) # Prof6-转职为刺客分支、光明之怒分支 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail2").click() # Prof6-转职为刺客分支、光明之怒分支、暗分支 """点击暗职业""" Prof1_zhiye(start, poco,devices) # Prof6-转职为刺客分支、光明之怒分支、暗分支 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_warrior_3(start, devices): # Prof1- 转职为战士分支、剑圣分支、复仇者、黑暗复仇者职业 """ 转职为战士分支、剑圣分支、复仇者、黑暗复仇者职业 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(1, poco, devices) # 重置当前角色职业 poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail3").click() # 点击选择剑圣职业 Prof1_zhiye(start, poco,devices) # 转职为战士分支剑圣职业 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail1").click() # 点击黑暗复仇者职业 """点击黑暗复仇者职业""" Prof1_zhiye(start, poco,devices) # 转职为战士分支、剑圣分支、黑暗复仇者职业 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_warrior_5(start, devices): # Prof1- 转职为战士分支、战神分支、毁灭者者职业 """ Prof1- 转职为战士分支、战神分支、毁灭者者职业 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(1, poco, devices) poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail2").click() # 点击选择战神职业 Prof1_zhiye(start, poco,devices) # 转职为战士分支战神职业 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail2").click() # 点击毁灭者职业 """点击毁灭者职业""" Prof1_zhiye(start, poco,devices) # Prof1- 转职为战士分支、战皇分支、毁灭者者职业 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_Archer_4(start, devices): # Prof2-转职为弓箭手分支、游侠分支、风行者分支 """ Prof2-转职为弓箭手分支、游侠分支、风行者分支 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(2, poco, devices) poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail2").click() # 点击选择猎人职业 Prof1_zhiye(start, poco,devices) # 转职为弓箭手分支、游侠分支 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail1").click() # Prof2-转职为弓箭手分支、游侠分支、风行者分支 """点击风行者分支职业""" Prof1_zhiye(start, poco,devices) # Prof2-转职为弓箭手分支、游侠分支、风行者分支 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_magic_4(start, devices): # Prof3-转职为魔法师分支、魔导师分支、时空领主分支 """ Prof3-转职为魔法师分支、魔导师分支、时空领主分支 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(3, poco, devices) poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail2").click() # 点击选择魔导师分支 Prof1_zhiye(start, poco,devices) # 转职为魔法师分支、魔导师分支 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail2").click() # Prof3-转职为魔法师分支、魔导师分支、时空领主分支 """点击时空领主分支职业""" Prof1_zhiye(start, poco,devices) # Prof3-转职为魔法师分支、魔导师分支、时空领主分支 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_pastor_5(start, devices): # Prof4-转职为牧师分支、教主分支、黑暗教主分支 """ Prof4-转职为牧师分支、教主分支、黑暗教主分支 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(4,poco, devices) poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail3").click() # 转职为牧师分支、教主分支 Prof1_zhiye(start, poco,devices) # 转职为牧师分支、教主分支 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail1").click() # Prof4-转职为牧师分支、教主分支、黑暗教主分支 """点击圣骑士分支职业""" Prof1_zhiye(start, poco,devices) # Prof4-转职为牧师分支、教主分支、黑暗教主分支 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_scholar_5(start, devices): # Prof5-转职为学者分支、机甲师分支、银色机甲师分支 """ Prof5-转职为学者分支、机甲师分支、银色机甲师分支 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(5,poco, devices) poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击20级转职 poco("ProDetail3").click() # Prof5-转职为学者分支、机甲师分支 Prof1_zhiye(start, poco,devices) # Prof5-转职为学者分支、机甲师分支 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail1").click() # Prof5-转职为学者分支、工程师分支、银色机甲师分支 """点击重炮手职业""" Prof1_zhiye(start, poco,devices) # Prof5-转职为学者分支、工程师分支、银色机甲师分支 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def test_dance_5(start, devices): # Prof7-转职为舞娘分支、舞灵分支、银色舞灵分支 """ Prof7-转职为舞娘分支、舞灵分支、银色舞灵分支 :return: """ poco = common.deviceconnect(devices) Skill_Switchroles(7, poco, devices) # 选择角色职业 poco("SkillTree(Clone)").offspring("Tabs").child("item1").click() # 点击15级转职 poco("ProDetail3").click() # Prof7-转职为舞娘分支、舞灵分支 Prof1_zhiye(start, poco,devices) # Prof7-转职为舞娘分支、舞灵分支 poco("SkillTree(Clone)").offspring("Tabs").child("item2").click() # 点击二转职业 poco("ProDetail1").click() #Prof7-转职为舞娘分支、舞灵分支、银色舞灵分支 """点击银色舞灵职业""" Prof1_zhiye(start, poco,devices) # Prof7-转职为舞娘分支、舞灵分支、银色舞灵分支 juexing(poco) # 点击觉醒 return Skill(start, poco,devices) # 测试技能模块
def material(start, devices): poco = common.deviceconnect(devices) if poco("SysGPrepare").exists(): poco("SysGPrepare").click() if poco("UIRoot(Clone)").offspring("DailyDungeonDlg").offspring( "SelectedTextLabel").exists(): common.printgreen("进入物资筹备界面") freeze_poco = poco.freeze() # TODO:定义dongjiepoco for Desc in freeze_poco("UIRoot(Clone)").offspring( "DailyDungeonDlg").offspring("Desc"): common.printgreen(f"点击{Desc.get_text()}") Desc.click() if poco("UIRoot(Clone)").offspring( "DailyDungeonDlg").offspring("WrapContent").exists(): poco(texture="l_close_00").click() else: common.printred("主界面没有物资筹备按钮,请检查。。。") common.get_screen_shot(start, time.time(), devices, "主界面没有物资筹备按钮") return poco("UIRoot(Clone)").offspring("DailyDungeonDlg").offspring( "TextLabel").get_text() # 日常攻略
def buy(start, devices): """ 测试商城购买功能,前提条件,拥有龙币,水晶,水晶GM item 14 999999 :param start: :param devices: :return: """ poco = common.deviceconnect(devices) if poco("SysAGameMall").exists(): poco("SysAGameMall").click() else: common.printred("主界面找不到商城按钮,请检查") Mallbutlist = ["XSys_GameMall_Dragon", "XSys_GameMall_CRYSTAL"] for but in Mallbutlist: if poco(but).exists(): common.printgreen("开始点击商城内 " + poco("GameMall(Clone)").offspring( but).offspring("SelectedTextLabel").get_text() + " 子页签") poco(but).click() # 操作装备按钮 if poco("GameMall(Clone)").offspring("TabsFrame").child( "item1").exists(): poco("GameMall(Clone)").offspring("TabsFrame").child( "item1").click() if int(poco("Count").child( "Label").get_text()) >= 1: # 判断是否有的卖 poco("OK").click() # 点击购买 if poco(texture="l_button_00").exists(): common.printred("货币不足,请提供可购买的货币") poco("Cancel").click() # 点击取消弹窗,否则不好重置换成了 common.get_screen_shot(start, time.time(), devices, "货币不足") return None else: common.printred("没有物品可以购买") common.get_screen_shot(start, time.time(), devices, "没有物品可以购买") else: common.printred("没有找到装备页签,请检查") common.get_screen_shot(start, time.time(), devices, "主界面没有社交按钮") return poco("GameMall(Clone)").child("Bg").child("T").get_text() # 水晶商城
def reward(start, devices): poco = common.deviceconnect(devices) if poco("SysEReward").exists(): poco("SysEReward").click() print("测试奖励模块") with poco.freeze() as freezepoco: count = freezepoco("RewardDlg(Clone)").child("Bg").child( "Tabs").offspring("SelectedTextLabel") print(f"奖励中一共有{len(count)}个模块,分别为:") number = 1 for x in count: item = x.parent().parent().get_name() uiname = freezepoco("RewardDlg(Clone)").child("Bg").child( "Tabs").child(item).offspring( "SelectedTextLabel").get_text() print(f"{number}.{uiname}") number += 1 for i in count: item = i.parent().parent().get_name() uiname = freezepoco("RewardDlg(Clone)").child("Bg").child( "Tabs").child(item).offspring( "SelectedTextLabel").get_text() if uiname == "成就奖励": design_achieve(start, poco, item, devices) elif uiname == "等级奖励": level_reward(start, poco, item, devices) elif uiname == "目标奖励": reward_target(start, poco, item, devices) elif uiname == "战力奖励": server_activity(start, poco, item, devices) elif uiname == "分享奖励": share_reward(start, poco, item, devices) elif uiname == "龙穴助战": reward_dragon(start, poco, item, devices) poco("Close").click() else: common.printred("主界面没有找到奖励模块") common.get_screen_shot(time.time(), devices, "主界面没有找到奖励模块,请详细查看") return poco("Duck").get_name() # 返回主界面上的按钮