def wait_for_node_visible(poco, str_node, timeout=1, clickable=False, logout=False): if logout: out('wait: ' + str_node) f_exit = False while not f_exit: # poco = UnityPoco() with poco.freeze() as frozen_poco: node = get_node_quick(frozen_poco, str_node, False) if node.exists(): if node.attr('visible'): if clickable: if node.attr('clickable'): f_exit = True else: f_exit = True if not f_exit: time.sleep(1) timeout = timeout - 1 if (timeout < 1): if logout: log( 'Node \'' + str_node + '\' is not visible, exit for timeout', get_trace()) return node else: if logout: out('wait return: ' + str_node) return node
def test_A55(self): u"""测试点击第三个金币堆确认提示弹窗显示的按钮""" page = 'purchase_popup' CostList = GetMeta("shop.xml", "costs") coin3_metacash = int(CostList[5].replace("3000#", "")) CoinList = GetMeta('shop.xml', 'items') coin3_meta = int(CoinList[5].replace("2000#", "")) items = poco("UI Root").child("HeaderPart").offspring("label_count") cash = int(items[0].get_text()) coin = int(items[1].get_text()) if cash >= coin3_metacash: Click('btn_confirm', page) time.sleep(2.0) coin_itemsNew = poco("UI Root").child("HeaderPart").offspring( "label_count") coin_cashnew = int(coin_itemsNew[0].get_text()) coin_coinnew = int(coin_itemsNew[1].get_text()) self.assertEqual(coin_coinnew, coin + coin3_meta, caseList[75]) self.assertEqual(coin_cashnew, cash - coin3_metacash, caseList[76]) else: Click('btn_confirm', page) coin1_cash_less_info = poco("label_info").get_text() cashtext = TextDic['shop_type_title_3'] infotext = TextDic['shop_supplement'] self.assertEqual(coin1_cash_less_info, infotext % cashtext, caseList[77]) coin1_less_botton = poco("label_btn_popup_orange").get_text() goaltext = TextDic['shop_guide'] self.assertEqual(coin1_less_botton, goaltext, caseList[78]) Click('label_btn_popup_orange', page) page = 'shopInterface' self.assertTrue(poco('tex_light').exists(), caseList[79]) # 需要修改!!! Click('label_coin', page)
def test_journal_stats(dev, poco): node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_stats: out('переходим во вкладку статистики') touch_center(dev, get_node_child(node_wnd_journal, btn_stats)) time.sleep(1) # получаем заново, т.к. сцена обновилась node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_stats: out('не перешли во вкладку статистики', '') return False ### ------------------------------------------------------------ # тут тестов по сути нет, просто переход на вкладку return True
def test_reward_packages(poco, dev, row0, row1): # ## tood: вынести в отдельную функцию i = row0 while i <= row1: time.sleep(1) # это обновляем постоянно node = wait_for_node_visible(poco, dr_wnd, 5) if not node.exists(): out('Window not showed', dr_wnd) return False node = get_node_child(node, content) lst_days = node.child() # в общемто тут все элементы надо получать заново lst_rewards = lst_days[i].child('Rewards') ii = 0 for btn in lst_rewards.child(): out('touch reward[' + str(i) + '][' + str(ii) + ']') touch_center(dev, btn) time.sleep(1) node = wait_for_node_visible(poco, back_descr_bg, 0) if node.exists(): touch_center(dev, wait_for_node_visible(poco, back_btn, 5)) ii = ii + 1 i = i + 1 return True
def wait_and_click_button(dev, poco, button): node = wait_for_node_visible(poco, button, 5) if not node.exists(): out('Button not showed', button) return False touch_center(dev, node) time.sleep(1) return True
def test_A57(self): u"""测试点击返回城建按钮是否返回到城建界面""" page = 'shopInterface' Click('btn_back', page) #ui = poco.agent.hierarchy.dump() #frame = json.dumps(ui, indent=4) sleep(3.0) self.assertTrue(poco('c2_left').exists(), caseList[81]) #self.assertIn('c2_left', frame, caseList[81]) time.sleep(1.0)
def wait_for_button_and_touch(dev, poco, path): node = wait_for_node_visible(poco, path, 5) if node.exists(): # тыкаем в кнопку touch_center(dev, node) time.sleep(1) else: out('Can\'t press button', path) return False return True
def run_test_journal(dev, poco): out("нажимаем кнопку journal") node = wait_for_node_visible(poco, btn_journal, 5) if not node.exists(): out('Button not showed', btn_journal) return False touch_center(dev, node) time.sleep(1) # проверочка node = wait_for_node_visible(poco, wnd_journal, 2) if not node.exists(): out('Window not showed', wnd_journal) return False ### --------------------------------------- # ''' out('Тестируем вкладку Квестов') if not test_journal_quests(dev, poco): return False out('Тестируем вкладку Легенд') if not test_journal_legends(dev, poco): return False out('Тестируем вкладку имущества') if not test_journal_goods(dev, poco): return False # ''' out('Тестируем вкладку статуса игрока') if not test_journal_status(dev, poco): return False out('Тестируем вкладку статистики') if not test_journal_stats(dev, poco): return False ### --------------------------------------- out('нажимаем кнопку выхода из окна журнала') node = wait_for_node_visible(poco, btn_back, 5) if not node.exists(): out('Button not showed', btn_back) return False touch_center(dev, node) time.sleep(1) return True
def go_to_academia(dev, poco): out('нажимаем кнопку Академия') node = wait_for_node_visible(poco, btn_academy_on_map, 5) if not node.exists(): out('Button not showed', btn_academy_on_map) return False touch_center(dev, node) time.sleep(1) state = find_current_state(poco) while state != State.TOWN: out('ждём академию (3 sec)') time.sleep(3) state = find_current_state(poco) # todo: иногда бывает сообщение о жаловании для команды # потом отловить момент и сделать тест # если почта, собираем node = wait_for_node_visible(poco, btn_mail, 1) if node.exists(): touch_center(dev, node) time.sleep(1) node = wait_for_node_visible(poco, btn_back, 5) if not node.exists(): out('Button not showed', btn_back) return False touch_center(dev, node) time.sleep(1) return True
def test_journal_legends(dev, poco): node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_legends: out('переходим во вкладку легенд') touch_center(dev, get_node_child(node_wnd_journal, btn_legends)) time.sleep(1) # получаем заново, т.к. сцена обновилась node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_legends: out('не перешли во вкладку легенд', '') return False ### ------------------------------------------------------------ node_legends_list = get_node_child(node_wnd_journal, wnd_legends) # перебераем всё по замороженной структуре i = 0 for node_quest in node_legends_list.child(): if node_quest.attr('type') == 'Button': i = i + 1 out('legend[' + str(i) + ']: ' + node_quest.attr('text')) touch_center(dev, node_quest) time.sleep(0.5) # новый экземпляр ибо опять всё обновилось # journal = wait_for_node_visible(poco, wnd_journal, 2) # node = get_node_child(journal, wnd_descr) # out('quest descr: ' + node.attr('text')) return True
def test_A10(self): u"""测试点击普通礼盒的提示弹窗的按钮""" page = 'purchase_popup' CostList = GetMeta("shop.xml", "costs") commonBox_metacoin = int(CostList[0].replace("2000#", "")) currency = poco("UI Root").child("HeaderPart").offspring("label_count") coin = int(currency[1].get_text()) if coin >= commonBox_metacoin: Click('label_btn_popup_orange', page) page = 'openbox3_interface' Click('label_cishu', page) page = 'openbox4_interface' poco('label_share').wait_for_appearance() sleep(2.0) Click('label_cishu', page) page = 'openbox5_interface' poco('label_share').wait_for_appearance() sleep(2.0) Click('label_cishu', page) page = 'settleInterface' # 获取开完宝箱后的金币数量 time.sleep(3.0) Click('label_ok', page) sleep(1.0) if poco('sprite_bg_header').exists(): page = 'album_share' Click('btn_close', page) if poco('sprite_bg_header').exists(): page = 'album_share' Click('btn_close', page) currencyNew = poco("UI Root").child("HeaderPart").offspring( "label_count") coinnew = int(currencyNew[1].get_text()) # 检查前端金币数量变化是否正确 self.assertEqual(coinnew, coin - commonBox_metacoin, caseList[11]) else: Click('label_btn_popup_orange', page) page = 'shopInterface' self.assertTrue(poco('sprite_gold_1').exists(), caseList[12]) Click('label_chest', page)
def reset_progress(dev, poco): out('Reset progress test started...') path = 'H_Canvas/USER_Main_UI/BASE_MENU+CHAT/Avr_bg/Avr_pause' if not (wait_for_button_and_touch(dev, poco, path)): return False path = 'H_Canvas/Settings_mobile SYS NEAR END/AVR_bg/ButtonsPanel/ResetSaveButton' if not (wait_for_button_and_touch(dev, poco, path)): return False # надо подтвердить сброс прогресса path = 'H_Canvas/Message - MUST BE NEAR END/AVR_bg_paper/AVR_bg/BtnPanel/Btn_1' if not (wait_for_button_and_touch(dev, poco, path)): return False # ждём на загрузку тутора 10 сек out('Wait for Loading Tutor 10 sec.') time.sleep(10) out('Reset progress test complete.') return True
def run_test_daily_rewards(dev, poco): out("нажимаем кнопку награды") node = wait_for_node_visible(poco, dr_btn, 5) if not node.exists(): out('Button not showed', back_btn) return False touch_center(dev, node) time.sleep(1) ### --------------------------------------- # ## пробегаемся по первой страничке if not test_reward_packages(poco, dev, 0, 0): # 0,4 return False if not test_swipe_reward_packages(poco, 4, 0): return False # ## пробегаемся по второй страничке if not test_reward_packages(poco, dev, 5, 5): # 5,10 return False if not test_swipe_reward_packages(poco, 9, 5): return False # ## пробегаемся по последней страничке if not test_reward_packages(poco, dev, 11, 13): # 11,13 return False ### --------------------------------------- out('нажимаем кнопку выхода из окна наград') node = wait_for_node_visible(poco, back_btn, 5) if not node.exists(): out('Button not showed', back_btn) return False touch_center(dev, node) time.sleep(1) # дополнительная проверка на выход из окна наград node = wait_for_node_visible(poco, dr_wnd, 2) while node.exists(): out("window not closed", dr_wnd) node = wait_for_node_visible(poco, back_btn, 5) if not node.exists(): out('Button not showed', back_btn) return False touch_center(dev, node) time.sleep(1) node = wait_for_node_visible(poco, dr_wnd, 2) return True
def run_test_faction(dev, poco): out("нажимаем кнопку Fraction") node = wait_for_node_visible(poco, btn_faction, 5) if not node.exists(): out('Button not showed', btn_faction) return False touch_center(dev, node) time.sleep(1) # проверочка node_wnd_faction = wait_for_node_visible(poco, wnd_faction, 2) if not node_wnd_faction.exists(): out('Window not showed', wnd_faction) return False ### --------------------------------------- node_lst = get_node_child(node_wnd_faction, _faction_lst) if not node_lst.exists(): out('Window not showed', node_lst) return False for item in node_lst.child(): touch_center(dev, item) time.sleep(0.5) ### --------------------------------------- out('нажимаем кнопку выхода из окна выбора фракции') node = wait_for_node_visible(poco, btn_back, 5) if not node.exists(): out('Button not showed', btn_back) return False touch_center(dev, node) time.sleep(1) return True
def test_A7(self): u"""测试点击普通礼盒的购买按钮是否弹出提示弹窗""" page = 'shopInterface' Click('btn_cost', page) time.sleep(2.0) self.assertTrue(poco('label_btn_popup_orange').exists(), caseList[6])
def test_journal_status(dev, poco): btn_hawk = 'HAWK' btn_baran = 'BARAN' btn_spider = 'SPIDER' btn_rabbit = 'RABBIT' btn_snake = 'SNAKE' node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_status: out('переходим во вкладку статуса игрока') touch_center(dev, get_node_child(node_wnd_journal, btn_status)) time.sleep(1) # получаем заново, т.к. сцена обновилась node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_status: out('не перешли во вкладку статуса игрока', '') return False ### ------------------------------------------------------------ node_wnd_status = get_node_child(node_wnd_journal, wnd_status) touch_center(dev, get_node_child(node_wnd_status, btn_hawk)) time.sleep(0.5) touch_center(dev, get_node_child(node_wnd_status, btn_baran)) time.sleep(0.5) touch_center(dev, get_node_child(node_wnd_status, btn_spider)) time.sleep(0.5) touch_center(dev, get_node_child(node_wnd_status, btn_rabbit)) time.sleep(0.5) touch_center(dev, get_node_child(node_wnd_status, btn_snake)) time.sleep(0.5) return True
def run_test_tutorial_2(dev, poco, big_test=False): btn_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' btn_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # btn_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' btn_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # wnd_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' btn_quest_2 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (1)' btn_quest_3 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (2)' btn_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' btn_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' wnd_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, btn_quest_2): return False # тыкаем принять if not wait_and_click_button(dev, poco, btn_accept_qst): return False # тыкаем 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_team' btn_team = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_team' if not wait_and_click_button(dev, poco, btn_team): return False # сообщение "Сначала наймем команду" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'нет сообщения "Сначала наймем команду"') return False if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/TeamManageShipMobile/ScrollingPanel/TavernButton' btn_tavern = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/ScrollingPanel/TavernButton' if not wait_and_click_button(dev, poco, btn_tavern): return False # сообщение "Найми 7 салаг." node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'нет сообщения "Найми 7 салаг."') return False if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем 7 раз на салагу "+" # 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/TeamManageShipMobile/ScrollingPanel/TavernButton' btn_crewman_hire_0 = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageTavernMobile/TavernBgImage/Crewman_Hire_0/ActionButton' i = 7 while i > 0: if not wait_and_click_button(dev, poco, btn_crewman_hire_0): return False i -= 1 # тыкаем кнопку назад if not wait_and_click_button(dev, poco, btn_back): return False # сообщение "перетащите 2х матросов на паруса" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'перетащите 2х матросов на паруса') return False if not wait_and_click_button(dev, poco, btn_back): return False # подготавливаемся к свайпам sn_tmp = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/ScrollingPanel/ShipDecks' sn_parus = 'ParuDeck/CrewmanDeck_Paru_3' sn_aboard = 'AboardDeck/CrewmanDeck_Aboard_3' sn_cannon = 'CanonDeck/CrewmanDeck_Canon_3' sn_from = 'AboardDeck/CrewmanDeck_Aboard_0' node_tmp = wait_for_node_visible(poco, sn_tmp, 5) pos_parus = get_node_child(node_tmp, sn_parus).attr('pos') pos_aboard = get_node_child(node_tmp, sn_aboard).attr('pos') pos_cannon = get_node_child(node_tmp, sn_cannon).attr('pos') pos_abs_from = pos_center(dev, get_node_child(node_tmp, sn_from)) # перетаскиваем 2х матросов на паруса vec = [0, pos_parus[1] - pos_aboard[1]] print('vector ', pos_abs_from, vec) swipe(pos_abs_from, vector=vec, duration=3) sleep(1) swipe(pos_abs_from, vector=vec, duration=3) sleep(1) # сообщение "перетащите 2х матросов на паруса" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'перетащите 2х матросов на пушки') return False if not wait_and_click_button(dev, poco, btn_back): return False # перетаскиваем 2х матросов на пушки vec = [0, pos_cannon[1] - pos_aboard[1]] print('vector ', pos_abs_from, vec) swipe(pos_abs_from, vector=vec, duration=3) sleep(1) swipe(pos_abs_from, vector=vec, duration=3) sleep(1) # сообщение "больше матросов на палубе, больше эффективность" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'больше матросов на палубе, больше эффективность') return False if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем на кнопку "Раненые" btn_med = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/ScrollingPanel/MedbayButton' if not wait_and_click_button(dev, poco, btn_med): return False # тыкаем на кнопку "лечить матроса" btn_med = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/ScrollingPanel/ShipDecks/'\ +'Medbay/Crewman_Wounded_1/ActionButton' if not wait_and_click_button(dev, poco, btn_med): return False # сообщение "про офицеров, выбрать" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'про офицеров, выбрать') return False if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем на кнопку "слот офицера 1" btn_med = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/ScrollingPanel/RightPanel/'\ +'DeckStats_Paru/BorderImage/OfficerSlotsPanel/OfficerSlot1' if not wait_and_click_button(dev, poco, btn_med): return False # тыкаем на кнопку "боцман" btn_med = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/OfficersWindow/BgImage/'\ +'BorderImage/SlotsPanel/OfficerSlot1' if not wait_and_click_button(dev, poco, btn_med): return False # тыкаем на кнопку "назначить" btn_med = 'H_Canvas/USER_Main_UI/CONFIG_TEAM_MOBILE/'\ +'TeamManageShipMobile/OfficersWindow/BgImage/'\ +'BorderImage/ActionButton(Clone)' if not wait_and_click_button(dev, poco, btn_med): return False time.sleep(2); # сообщение "вот ваша награда" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, btn_back): return False if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, btn_quest_3): return False # тыкаем отменить if not wait_and_click_button(dev, poco, btn_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, btn_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, btn_map, 5) if not node.exists(): out('Button not showed', btn_map) return False touch_center(dev, node) time.sleep(1) return True
def test_A32(self): u"""测试点击豪华礼盒的提示弹窗的按钮""" page = 'purchase_popup' CostList = GetMeta("shop.xml", "costs") luxuryBox_metacash = int(CostList[2].replace("3000#", "")) if not TsumDrop_dic and not FixedRewards_dic: chestlevel(TsumDrop_dic, FixedRewards_dic) luxuryBox_meta_coin = int( FixedRewards_dic["2003"][userlevel].split("#")[1]) itemsOld = poco("UI Root").child("HeaderPart").offspring("label_count") cashold = int(itemsOld[0].get_text()) coinold = int(itemsOld[1].get_text()) if cashold >= luxuryBox_metacash: Click('label_btn_popup_orange', page) page = 'openbox1_interface' Click('label_cishu', page) page = 'openbox2_interface' poco('label_share').wait_for_appearance() sleep(2.0) Click('label_cishu', page) page = 'openbox3_interface' poco('label_share').wait_for_appearance() sleep(2.0) Click('label_cishu', page) page = 'openbox4_interface' poco('label_share').wait_for_appearance() sleep(2.0) Click('label_cishu', page) page = 'openbox5_interface' poco('label_share').wait_for_appearance() sleep(2.0) Click('label_cishu', page) page = 'settleInterface' # 获取高级礼盒开出的金币数量 luxury_tsumList = poco("UI Root").child( "ChestRewardPanel").offspring("label_count") luxury_getcoin = int(luxury_tsumList[0].get_text().replace( "+", "")) # 检查数量是否正确 self.assertEqual(luxury_getcoin, luxuryBox_meta_coin, caseList[41]) time.sleep(3.0) Click('label_ok', page) sleep(1.0) if poco('sprite_bg_header').exists(): page = 'album_share' Click('btn_close', page) if poco('sprite_bg_header').exists(): page = 'album_share' Click('btn_close', page) luxury_itemsNew = poco("UI Root").child("HeaderPart").offspring( "label_count") luxury_cashnew = int(luxury_itemsNew[0].get_text()) luxury_coinnew = int(luxury_itemsNew[1].get_text()) # 检查前端金币数量变化是否正确 self.assertEqual(luxury_cashnew, cashold - luxuryBox_metacash, caseList[42]) self.assertEqual(luxury_coinnew, coinold + luxuryBox_meta_coin, caseList[43]) else: Click('label_btn_popup_orange', page) page = 'shopInterface' self.assertTrue(poco('tex_light').exists(), caseList[44]) Click('label_chest', page)
def run_test_tutorial_1(dev, poco, big_test=False): btn_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' btn_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # btn_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' # btn_academy = 'T_GLOBAL_MAP/EPTown_t_academy_name' btn_tut_marker = 'T_GLOBAL_MAP/Event_Radius(Clone)' btn_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # wnd_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' btn_quest_1 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (0)' btn_quest_2 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (1)' btn_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' btn_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' wnd_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' tutorial_quest_1 = 'TutorialQuest1(Clone)' btn_rot_left = 'H_Canvas/USER_Main_UI/CONTROLL_PANEL/ROT_LEFT' # btn_rot_right = 'H_Canvas/USER_Main_UI/CONTROLL_PANEL/ROT_RIGHT' btn_speed = 'H_Canvas/USER_Main_UI/CONTROLL_PANEL/TOGGLE_SPEED' btn_speed_up = 'H_Canvas/USER_Main_UI/SPEED_UP/BTN' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, btn_quest_1): return False # тыкаем принять if not wait_and_click_button(dev, poco, btn_accept_qst): return False # выходим на глобальную карту if not wait_and_click_button(dev, poco, btn_map): return False # ждём перехода на глобальную карту state = find_current_state(poco) wait_cnt = 0 while state != State.MAP: wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание глобальной карты', 'что-то пошло не так') return False # out('wait') sleep(3) state = find_current_state(poco) # тыкаем в маркер btn_tut_marker if not wait_and_click_button(dev, poco, btn_tut_marker): return False # ждём начала туториала сообщение "направление ветра" node = wait_for_node_visible(poco, tutorial_quest_1, 5) wait_cnt = 0 while not node.exists(): wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание запуска обучения', 'что-то пошло не так') return False # out('wait') sleep(3) node = wait_for_node_visible(poco, tutorial_quest_1, 5) node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'что-то пошло не так, нет сообщения "направление ветра"') return False if not wait_and_click_button(dev, poco, btn_back): return False # поворачиваемся по ветру до появления "следуйте до следующего маркера" node = wait_for_node_visible(poco, wnd_event_reward, 5) wait_cnt = 0 while not node.exists(): wait_cnt += 1 if (wait_cnt > 10): out('долгое ожидание сообщения', 'нет сообщения "следуйте до следующего маркера"') return False out('press rot_left') node = wait_for_node_visible(poco, btn_rot_left, 5) # touch_center(dev, node, logout=False, times=5) node.swipe([0, 0], duration=6) # костыль на зажатие node = wait_for_node_visible(poco, wnd_event_reward, 5) # закрываем диалог if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем на кнопку "паруса" if not wait_and_click_button(dev, poco, btn_speed): return False # следуем до появление про ускорение sleep(5) node = wait_for_node_visible(poco, wnd_event_reward, 5) wait_cnt = 0 while not node.exists(): wait_cnt += 1 if (wait_cnt > 10): out('долгое ожидание сообщения', 'нет сообщения про ускорение') return False sleep(5) node = wait_for_node_visible(poco, wnd_event_reward, 5) # закрываем диалог if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем "ускорение" if not wait_and_click_button(dev, poco, btn_speed_up): return False # ждём перехода на глобальную карту state = find_current_state(poco) wait_cnt = 0 while state != State.MAP_EVENT_REWARD: wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание глобальной карты', 'что-то пошло не так') return False out('wait') time.sleep(3) state = find_current_state(poco) # сообщение "ускорение работает на карте тоже" if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем "ускорение" if not wait_and_click_button(dev, poco, btn_speed_up): return False # сообщение "отлично, вот твоя награда" if not wait_and_click_button(dev, poco, btn_back): return False # переходим в "академию" if not go_to_academia(dev, poco): return False time.sleep(1) if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем второй квест if not wait_and_click_button(dev, poco, btn_quest_2): return False # тыкаем отменить if not wait_and_click_button(dev, poco, btn_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, btn_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, btn_map, 5) if not node.exists(): out('Button not showed', btn_map) return False touch_center(dev, node) time.sleep(1) return True
def run_test(dev, poco, big_test=False): path_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' path_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # path_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' path_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # wnd_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' path_quest_6 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (5)' path_quest_7 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (6)' path_spec_pirate = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/SPEC_Panel/SPEC_pirate' path_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' path_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' path_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, path_quest_6): return False # тыкаем принять if not wait_and_click_button(dev, poco, path_accept_qst): return False # нажимаем кнопку выхода из города на карту node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) # поплыли на жанетту path = 'T_GLOBAL_MAP/EPTown_Janetta' node = wait_for_node_visible(poco, path, 5) touch_center(dev, node) # ''' user_main_ui = 'H_Canvas/USER_Main_UI' fights = [ 'NEW_FIGHT/AUTOFIGHT', 'NEW_FIGHT (1)/AUTOFIGHT', 'NEW_FIGHT (2)/AUTOFIGHT' ] f_exit = False i = 50 while not f_exit: i -= 1 if i < 0: out('долгое ожидание сообщения', 'корабль достаточно потрепало...') return False node = wait_for_node_visible(poco, user_main_ui) wnd_reward = get_node_child(node, 'EVENT_REVARD', False) if wnd_reward.exists(): # по идее дождались сообщения о повреждённости корабля out('корабль достаточно потрепало...') if not wait_and_click_button(dev, poco, path_back): return False f_exit = True else: touched = False for fight in fights: node_fight = get_node_child(node, fight, False) if node_fight.exists() and not touched: out('автобой... ' + fight) touch_center(dev, node_fight) touched = True if not f_exit: time.sleep(0.5) state = find_current_state(poco) while state != State.TOWN: out('ждём Жанетту (3 sec)') time.sleep(3) state = find_current_state(poco) # ''' # идем в меню выбора квеста out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, path_quests_menu): return False # чинимся за счёт пиратов out('чинимся за счёт пиратов') if not wait_and_click_button(dev, poco, path_spec_pirate): return False # сообщение "вот ваша награда" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, path_back): return False out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) out('плывём в академию') if not go_to_academia(dev, poco): return False time.sleep(2) if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, path_quest_7): return False # тыкаем отменить if not wait_and_click_button(dev, poco, path_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, path_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) return True
def run_test(dev, poco, big_test=False): path_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' path_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # path_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' path_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # path_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' path_quest_8 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (7)' path_quest_9 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (8)' path_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' path_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' path_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, path_quest_8): return False # тыкаем принять if not wait_and_click_button(dev, poco, path_accept_qst): return False # выходим на глобальную карту if not wait_and_click_button(dev, poco, path_map): return False # ждём перехода на глобальную карту state = find_current_state(poco) wait_cnt = 0 while state != State.MAP: wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание глобальной карты', 'что-то пошло не так') return False # out('wait') time.sleep(3) state = find_current_state(poco) # тыкаем в маркер btn_tut_marker btn_tut_marker = 'T_GLOBAL_MAP/Event_Radius(Clone)' if not wait_and_click_button(dev, poco, btn_tut_marker): return False tutorial_quest_8 = 'TutorialQuest8(Clone)' # ждём начала туториала сообщение "нажмите на знак артефакта" node = wait_for_node_visible(poco, tutorial_quest_8, 5) wait_cnt = 0 while not node.exists(): wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание запуска обучения', 'что-то пошло не так') return False out('ждём запуска туториала (3 sec)') time.sleep(3) node = wait_for_node_visible(poco, tutorial_quest_8, 5) # сообщение 'нажмите на знак артефакта' node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'нажмите на знак артефакта') return False # тыкаем back if not wait_and_click_button(dev, poco, path_back): return False # жмём на использование артефакта path_artefact = 'H_Canvas/USER_Main_UI/ARTEFACT_BLOCK/Artefact1/ArtefactIcon' if not wait_and_click_button(dev, poco, path_artefact): return False time.sleep(10) # сообщение 'нужно время на востановление' node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'нужно время на востановление') return False # тыкаем back if not wait_and_click_button(dev, poco, path_back): return False time.sleep(5) # сообщение 'потопите 2 тренеровочных корабля' node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'потопите 2 тренеровочных корабля') return False # тыкаем back if not wait_and_click_button(dev, poco, path_back): return False time.sleep(10) # цикл потопления кораблей f_exit = False i = 10 while not f_exit: node = wait_for_node_visible(poco, path_event_reward, 5) if node.exists(): f_exit = True else: # жмём на использование артефакта path_artefact = 'H_Canvas/USER_Main_UI/ARTEFACT_BLOCK/Artefact1/ArtefactIcon' if not wait_and_click_button(dev, poco, path_artefact): return False time.sleep(10) if i < 1: out('долгое потопление кораблей', '') return False # сообщение "вот ваша награда" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, path_back): return False # поплыли в академию if not go_to_academia(dev, poco): return False time.sleep(1) if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, path_quest_9): return False # тыкаем отменить if not wait_and_click_button(dev, poco, path_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, path_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) return True
def run_test(dev, poco, big_test=False): btn_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' btn_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # btn_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' btn_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # wnd_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' btn_quest_3 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (2)' btn_quest_4 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (3)' btn_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' btn_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' wnd_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, btn_quest_3): return False # тыкаем принять if not wait_and_click_button(dev, poco, btn_accept_qst): return False # тыкаем 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_trum' btn_trum = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_trum' if not wait_and_click_button(dev, poco, btn_trum): return False # тыкаем купить ядра btn_path = 'H_Canvas/USER_Main_UI/TRUM_STORE_STORAGE/'\ +'MARKET/M_Button_buy_Canonballs' if not wait_and_click_button(dev, poco, btn_path): return False # выбираем ядра btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList/Item1' if not wait_and_click_button(dev, poco, btn_path): return False # выбираем х10 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/AmountSelector/Center' if not wait_and_click_button(dev, poco, btn_path): return False # тыкаем купить 10 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/SellOne/SellOneBTN' if not wait_and_click_button(dev, poco, btn_path): return False # покидаем режим магазина if not wait_and_click_button(dev, poco, btn_back): return False # сообщение "товары можно переместить на склад или продать" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'товары можно переместить на склад или продать') return False if not wait_and_click_button(dev, poco, btn_back): return False # тыкаем ядра в трюме btn_path = 'H_Canvas/USER_Main_UI/TRUM_STORE_STORAGE/'\ +'SHIP/T_Button_buy_Canonballs' if not wait_and_click_button(dev, poco, btn_path): return False # выбираем ядра btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList/Item1' if not wait_and_click_button(dev, poco, btn_path): return False # выбираем х10 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/AmountSelector/Center' if not wait_and_click_button(dev, poco, btn_path): return False # тыкаем на склад 10 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/SellTen/SellTenBTN' if not wait_and_click_button(dev, poco, btn_path): return False # сообщение "также можно продать любую вещь" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'также можно продать любую вещь') return False if not wait_and_click_button(dev, poco, btn_back): return False # выбираем ядра btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList/Item1' if not wait_and_click_button(dev, poco, btn_path): return False # выбираем х1 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/AmountSelector/Left' if not wait_and_click_button(dev, poco, btn_path): return False # тыкаем продать 1 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/SellOne/SellOneBTN' if not wait_and_click_button(dev, poco, btn_path): return False # покидаем режим трюма if not wait_and_click_button(dev, poco, btn_back): return False time.sleep(2) # сообщение "вот ваша награда" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, btn_back): return False if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, btn_quest_4): return False # тыкаем отменить if not wait_and_click_button(dev, poco, btn_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, btn_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, btn_map, 5) if not node.exists(): out('Button not showed', btn_map) return False touch_center(dev, node) time.sleep(1) return True
def test_journal_goods(dev, poco): node_btn_back = wait_for_node_visible(poco, btn_back, 2) wnd_goods_opt = wnd_journal + '/' + wnd_goods node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_goods: out('переходим во вкладку имущества') touch_center(dev, get_node_child(node_wnd_journal, btn_goods)) time.sleep(1) # получаем заново, т.к. сцена обновилась node_wnd_journal = wait_for_node_visible(poco, wnd_journal, 2) if not node_wnd_journal.exists(): out('Window not showed', wnd_journal) return False if get_journal_state(node_wnd_journal) != js_goods: out('не перешли во вкладку имущества', '') return False ### ------------------------------------------------------------ node_wnd_goods = wait_for_node_visible(poco, wnd_goods_opt, 2) node_btn_trum = get_node_child(node_wnd_goods, 'Trum') # node_btn_sklads = get_node_child(node_wnd_goods, 'Sklads') # node_btn_WhereToBuy = get_node_child(node_wnd_goods, 'WhereToBuy') # out('click:' + node_btn_trum.attr('text')) touch_center(dev, node_btn_trum) node_wnd_goods = wait_for_node_visible(poco, wnd_goods_opt, 2) items = node_wnd_goods.offspring('Towars') if len(items) > 0: i = 0 for item in items: i = i + 1 if i < 3: touch_center(dev, item) time.sleep(0.5) touch_center(dev, node_btn_back) time.sleep(0.5) else: out('trum list is empty') ### ------------------------------------------------------------ node_wnd_goods = wait_for_node_visible(poco, wnd_goods_opt, 2) # node_btn_trum = get_node_child(node_wnd_goods, 'Trum') node_btn_sklads = get_node_child(node_wnd_goods, 'Sklads') # node_btn_WhereToBuy = get_node_child(node_wnd_goods, 'WhereToBuy') # out('click:' + node_btn_trum.attr('text')) touch_center(dev, node_btn_sklads) node_wnd_goods = wait_for_node_visible(poco, wnd_goods_opt, 2) items = node_wnd_goods.offspring('Towars') if len(items) > 0: i = 0 for item in items: i = i + 1 if i < 3: touch_center(dev, item) time.sleep(0.5) touch_center(dev, node_btn_back) time.sleep(0.5) else: out('sklads list is empty') ### ------------------------------------------------------------ node_wnd_goods = wait_for_node_visible(poco, wnd_goods_opt, 2) # node_btn_trum = get_node_child(node_wnd_goods, 'Trum') # node_btn_sklads = get_node_child(node_wnd_goods, 'Sklads') node_btn_WhereToBuy = get_node_child(node_wnd_goods, 'WhereToBuy') # out('click:' + node_btn_trum.attr('text')) touch_center(dev, node_btn_WhereToBuy) node_wnd_goods = wait_for_node_visible(poco, wnd_goods_opt, 2) items = node_wnd_goods.offspring('Towars') if len(items) > 0: i = 0 for item in items: i = i + 1 if i < 3: touch_center(dev, item) time.sleep(0.5) touch_center(dev, node_btn_back) time.sleep(0.5) else: out('WhereToBuy list is empty') return True
def run_test(dev, poco): path_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' path_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # path_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' path_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # path_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' path_quest_10 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (9)' path_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' #path_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' path_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, path_quest_10): return False # тыкаем принять if not wait_and_click_button(dev, poco, path_accept_qst): return False # тыкаем 'умения капитана' path_node = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_Xp_captain' if not wait_and_click_button(dev, poco, path_node): return False time.sleep(1); # сообщение 'выбрать умение чтобы его изучить' node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'выбрать умение чтобы его изучить') return False if not wait_and_click_button(dev, poco, path_back): return False time.sleep(1); # пробежимся по всем скилам path_root_skills = 'H_Canvas/USER_Main_UI/CONFIG_SKILLS' path_learn = 'H_Canvas/USER_Main_UI/CONFIG_SKILLS/Learn(Clone)' subpath_skills = ['Some Skill', 'Some Skill (14)', \ 'Some Skill (1)', 'Some Skill (15)', \ 'Some Skill (6)', 'Some Skill (20)', \ 'Some Skill (3)', 'Some Skill (17)', \ 'Some Skill (4)', 'Some Skill (18)', \ 'Some Skill (5)', 'Some Skill (19)'] node_root_skills = wait_for_node_visible(poco, path_root_skills, 5) if not node_root_skills.exists(): out('долгое ожидание ноды списка', path_root_skills) return False for subpath in subpath_skills: # node = wait_for_node_visible(poco, path_root_skills + '/' + subpath) node = get_node_child(node_root_skills, subpath) if not node.exists(): out('скилл не найден', path_root_skills + ' ' + subpath) return False touch_center(dev, node) # snapshot() time.sleep(0.5); # тыкаем "изучить" if not wait_and_click_button(dev, poco, path_learn): return False time.sleep(2); # сообщение "вот ваша награда" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, path_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) return True
def sleep(t): time.sleep(t + random.uniform(0, 0.3))
def run_test(dev, poco, big_test=False): btn_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' btn_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # btn_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' btn_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # wnd_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' btn_quest_5 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (4)' btn_quest_6 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (5)' btn_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' btn_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' wnd_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, btn_quest_5): return False # тыкаем принять if not wait_and_click_button(dev, poco, btn_accept_qst): return False # тыкаем 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_equip' btn_path = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_equip' if not wait_and_click_button(dev, poco, btn_path): return False time.sleep(2) # подготавливаемся к свайпу sn_item_list = 'H_Canvas/USER_Main_UI/CONFIG_EQUIP_MAIN/'\ +'ItemsBG/ScrollItems/Viewport/ItemList' sn_slot_canon = 'H_Canvas/USER_Main_UI/CONFIG_EQUIP_MAIN/Slots/Canon_1' sn_slot_canon_sub = 'H_Canvas/USER_Main_UI/CONFIG_EQUIP_MAIN/Slots/Canon_1/sub_1' node_slot = wait_for_node_visible(poco, sn_slot_canon, 5) node_slot_sub = wait_for_node_visible(poco, sn_slot_canon_sub, 5) # перетаскиваем пушку в слот node_item_list = wait_for_node_visible(poco, sn_item_list, 5) node_from = node_item_list.child()[0] pos_abs_from = pos_center(dev, node_from) pos_from = pos_center(dev, node_from, False) pos_to = pos_center(dev, node_slot, False) vec = [pos_to[0] - pos_from[0], pos_to[1] - pos_from[1]] print('vector ', pos_abs_from, vec) swipe(pos_abs_from, vector=vec, duration=3) time.sleep(1) # перетаскиваем улучшение в слот node_item_list = wait_for_node_visible(poco, sn_item_list, 5) node_from = node_item_list.child()[0] pos_abs_from = pos_center(dev, node_from) pos_from = pos_center(dev, node_from, False) pos_to = pos_center(dev, node_slot_sub, False) vec = [pos_to[0] - pos_from[0], pos_to[1] - pos_from[1]] print('vector ', pos_abs_from, vec) swipe(pos_abs_from, vector=vec, duration=3) time.sleep(1) # выходим из окна улучшений if not wait_and_click_button(dev, poco, btn_back): return False time.sleep(2) # сообщение "вот ваша награда" node = wait_for_node_visible(poco, wnd_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, btn_back): return False if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, btn_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, btn_quest_6): return False # тыкаем отменить if not wait_and_click_button(dev, poco, btn_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, btn_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, btn_map, 5) if not node.exists(): out('Button not showed', btn_map) return False touch_center(dev, node) time.sleep(1) return True
def run_test(dev, poco, big_test=False): path_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' path_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # path_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' path_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # path_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' path_quest_7 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (6)' path_quest_8 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (7)' path_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' path_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' path_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' precission_path = 'Rank2(Clone)/MARKER_NEW(Clone)/4-PRECISSION' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, path_quest_7): return False # тыкаем принять if not wait_and_click_button(dev, poco, path_accept_qst): return False # выходим на глобальную карту if not wait_and_click_button(dev, poco, path_map): return False # ждём перехода на глобальную карту state = find_current_state(poco) wait_cnt = 0 while state != State.MAP: wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание глобальной карты', 'что-то пошло не так') return False # out('wait') time.sleep(3) state = find_current_state(poco) # тыкаем в маркер btn_tut_marker btn_tut_marker = 'T_GLOBAL_MAP/Event_Radius(Clone)' if not wait_and_click_button(dev, poco, btn_tut_marker): return False tutorial_quest_7 = 'TutorialQuest7(Clone)' # ждём начала туториала сообщение "направление ветра" node = wait_for_node_visible(poco, tutorial_quest_7, 5) wait_cnt = 0 while not node.exists(): wait_cnt += 1 if (wait_cnt > 3): out('долгое ожидание запуска обучения', 'что-то пошло не так') return False out('ждём запуска туториала (3 sec)') time.sleep(3) node = wait_for_node_visible(poco, tutorial_quest_7, 5) # сообщение 'нведите трубу на врага' node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'нведите трубу на врага') return False # тыкаем back if not wait_and_click_button(dev, poco, path_back): return False # поворачиваем камеру к кораблю node_path = 'Rank2(Clone)/MARKER_NEW(Clone)/10-MobileRelationsMark' if not rotate_cam_to(dev, poco, node_path, True): return False # тыкаем Zoom node_path = 'H_Canvas/USER_Main_UI/CONTROLL_PANEL/ZOOM' if not wait_and_click_button(dev, poco, node_path): return False # поворачиваем камеру к кораблю # node_path = 'Rank2(Clone)/MARKER_NEW(Clone)/10-MobileRelationsMark' # if not rotate_cam_zoom_to(dev, poco, node_path, True): return False # сообщение 'уничтожте карабль' node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'уничтожте карабль') return False # тыкаем back if not wait_and_click_button(dev, poco, path_back): return False node_path = 'H_Canvas/USER_Main_UI/CONTROLL_PANEL/TOGGLE_SPEED' if not wait_and_click_button(dev, poco, node_path): return False out('ожидаем подплытия') time.sleep(30) node_path = 'H_Canvas/USER_Main_UI/CONTROLL_PANEL/TOGGLE_SPEED' if not wait_and_click_button(dev, poco, node_path): return False # поворачиваем камеру к кораблю poco("4-PRECISSION") if not rotate_l_let_to(dev, poco, precission_path, True): return False f_exit = False while not f_exit: node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): node = wait_for_node_visible(poco, precission_path, 10) if not node.exists(): out('долгое ожидание прицела', precission_path) return False node_path = 'H_Canvas/USER_Main_UI/FIGHT_PANEL/SHOOT_Manual' if not wait_and_click_button(dev, poco, node_path): return False time.sleep(4) # задержка для перезарядки else: f_exit = True # сообщение "вот ваша награда" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, path_back): return False # поплыли в академию if not go_to_academia(dev, poco): return False time.sleep(1) if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, path_quest_8): return False # тыкаем отменить if not wait_and_click_button(dev, poco, path_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, path_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) return True
def run_test_tutorial(dev, poco): info_wnd = 'H_Canvas/USER_Main_UI/EVENT_REVARD' back_btn = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' shoot_btn = 'H_Canvas/USER_Main_UI/FIGHT_PANEL/SHOOT_Manual' shoot_hilighter = 'H_Canvas/USER_Main_UI/HIGHLIGHT_INTERFACE' out("... На горизонте появилось судно") time.sleep(15) node = wait_for_node_visible(poco, info_wnd, 5) if not node.exists(): out('долгое ожидание сообщения', '... На горизонте появилось судно') return False if not wait_and_click_button(dev, poco, back_btn): return False time.sleep(10) out("Чтобы выстрелить, нажмите на подсвеченную кнопку.") node = wait_for_node_visible(poco, info_wnd, 5) if not node.exists(): out('долгое ожидание сообщения', "Чтобы выстрелить, нажмите на подсвеченную кнопку.") return False if not wait_and_click_button(dev, poco, back_btn): return False out("тыкаем кнопку стрельбы 1 раз") node = wait_for_node_visible(poco, shoot_btn, 5, True) node_a = wait_for_node_visible(poco, shoot_hilighter, 5) if not node.exists() or not node_a.exists(): out('Button ' + shoot_btn + ' not showed', 'тыкаем кнопку стрельбы 1 раз') return False touch_center(dev, node) time.sleep(3) out("Противник обездвижен! ...") node = wait_for_node_visible(poco, info_wnd, 5) if not node.exists(): out('долгое ожидание сообщения', "Противник обездвижен! ...") return False if not wait_and_click_button(dev, poco, back_btn): return False out("ждём перезарядки") time.sleep(5) out("тыкаем кнопку стрельбы") node = wait_for_node_visible(poco, shoot_btn, 5, True) node_a = wait_for_node_visible(poco, shoot_hilighter, 5) if not node.exists() or not node_a.exists(): out('Button ' + shoot_btn + ' not showed', 'тыкаем кнопку стрельбы') return False touch_center(dev, node) time.sleep(5) out("Чем дольше враг остается в зоне прицеливания, тем точнее выстрел.") node = wait_for_node_visible(poco, info_wnd, 5) if not node.exists(): out( 'долгое ожидание сообщения', "Чем дольше враг остается в зоне прицеливания, тем точнее выстрел." ) return False if not wait_and_click_button(dev, poco, back_btn): return False time.sleep(5) out("Мы потопили врага, но капитан пиратского судна перед смертью призвал жуткую тварь из глубин океана." ) node = wait_for_node_visible(poco, info_wnd, 5) if not node.exists(): out('долгое ожидание сообщения', "Мы потопили врага") return False if not wait_and_click_button(dev, poco, back_btn): return False out("ждём на потопление корабля и загрузку в глобальную карту 20 сек") time.sleep(20) out("проверяем что оказались на глобальной карте") state = find_current_state(poco) while state == State.NONE or state == State.TUTORIAL: time.sleep(3) state = find_current_state(poco) out('state: ' + state) if state == State.MAP or state == State.MAP_EVENT_REWARD: out('Tutorial Complete') else: out('Incorrect state on exit tutorial', "tutorial test failed") return False return True
def run_test(dev, poco, big_test=False): path_point_to_buy = 'T_GLOBAL_MAP/EPTown_Black_skull' # or EPTown_Mothers_TWN path_point_to_sell = 'T_GLOBAL_MAP/EPTown_Amelia' # or EPTown_Grey_Land_CAP path_speed_up = 'H_Canvas/USER_Main_UI/SPEED_UP/BTN' path_back = 'H_Canvas/USER_Main_UI/BACK_BUTTON_MOBILE' path_map = 'H_Canvas/USER_Main_UI/SWITCH_TO_MAP/Button_exit' # path_map = 'H_Canvas/USER_Main_UI/MAP_ADDON/SWITCH_TO_WORLD' path_quests_menu = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_qwest' # path_quests_menu_lst = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg' path_quest_9 = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (8)' path_quest_X = 'H_Canvas/USER_Main_UI/CONFIG_QWESTS/AVR_bg_paper/AVR_bg/A1 (9)' path_accept_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Accept' path_cancel_qst = 'H_Canvas/USER_Main_UI/EVENT_REVARD/Avr_paper/Avr_Decline' path_event_reward = 'H_Canvas/USER_Main_UI/EVENT_REVARD' ### --------------------------------------- if not go_to_academia(dev, poco): return False time.sleep(1) ### --------------------------------------- # идем в меню выбора квеста # out('нажимаем кнопку квестов') if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем первый квест if not wait_and_click_button(dev, poco, path_quest_9): return False # тыкаем принять if not wait_and_click_button(dev, poco, path_accept_qst): return False time.sleep(2) # сообщение "в городе с зеленым% товары со скидкой" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'в городе с зеленым% товары со скидкой') return False if not wait_and_click_button(dev, poco, path_back): return False # тыкаем на город с зеленый "%" if not wait_and_click_button(dev, poco, path_point_to_buy): return False # тыкаем на "укорение" if not wait_and_click_button(dev, poco, path_speed_up): return False # 10 секунд на доплыть к городу должно хватить time.sleep(10) # жёдм когда окажемся в городе, имя парсим из кода ns = path_point_to_buy.split('_') point_name = ns[len(ns) - 1] state = find_current_state(poco) while state != State.TOWN: out('ждём ' + point_name + ' (3 sec)') time.sleep(3) state = find_current_state(poco) # тыкаем "трюм" path_trum = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_trum' if not wait_and_click_button(dev, poco, path_trum): return False # тыкаем "магазин" path_market = 'H_Canvas/USER_Main_UI/' \ +'TRUM_STORE_STORAGE/MARKET/CLICKABLE SIZE' if not wait_and_click_button(dev, poco, path_market): return False # подготавливаем swipe path_lst_root = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList' my_swipe(dev, poco, path_lst_root, 'Item4', 'Item1') # выбираем "винтажный портвейн" path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList/Item8' if not wait_and_click_button(dev, poco, path): return False # тыкаем купить 1 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/SellOne/SellOneBTN' if not wait_and_click_button(dev, poco, btn_path): return False time.sleep(2) # сообщение "в городе с красным % товары дороже" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', 'в городе с красным % товары дороже') return False if not wait_and_click_button(dev, poco, path_back): return False # тыкаем на город с зеленый "%" if not wait_and_click_button(dev, poco, path_point_to_sell): return False # тыкаем на "укорение" if not wait_and_click_button(dev, poco, path_speed_up): return False # 10 секунд на доплыть к городу должно хватить time.sleep(10) # жёдм когда окажемся в городе, имя парсим из кода ns = path_point_to_sell.split('_') point_name = ns[len(ns) - 1] state = find_current_state(poco) while state != State.TOWN: out('ждём ' + point_name + ' (3 sec)') time.sleep(3) state = find_current_state(poco) # тыкаем "трюм" path_trum = 'H_Canvas/USER_Main_UI/CONFIG/AllButtons/Button_trum' if not wait_and_click_button(dev, poco, path_trum): return False # тыкаем на товары на корабле path_ship = 'H_Canvas/USER_Main_UI/TRUM_STORE_STORAGE/'\ +'SHIP/CLICKABLE SIZE' if not wait_and_click_button(dev, poco, path_ship): return False # подготавливаем swipe path_lst_root = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList' my_swipe(dev, poco, path_lst_root, 'Item4', 'Item1') my_swipe(dev, poco, path_lst_root, 'Item7', 'Item4') my_swipe(dev, poco, path_lst_root, 'Item10', 'Item7') my_swipe(dev, poco, path_lst_root, 'Item13', 'Item10') # выбираем "винтажный портвейн" path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'ItemsWindow/ScroolArea/ItemList/Item16' if not wait_and_click_button(dev, poco, path): return False # тыкаем купить 1 btn_path = 'H_Canvas/USER_Main_UI/HOLD_WINDOW/'\ +'SellWindowBG/SellWindow/SellOne/SellOneBTN' if not wait_and_click_button(dev, poco, btn_path): return False time.sleep(2) # out('---- конец теста, дальше недоделанно ----') # time.sleep(102); # return False # сообщение "вот ваша награда" node = wait_for_node_visible(poco, path_event_reward, 5) if not node.exists(): out('долгое ожидание сообщения', '"вот ваша награда"') return False if not wait_and_click_button(dev, poco, path_back): return False out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) # поплыли в академию if not go_to_academia(dev, poco): return False time.sleep(1) if big_test: # идем в меню выбора квеста if not wait_and_click_button(dev, poco, path_quests_menu): return False # тыкаем третий квест if not wait_and_click_button(dev, poco, path_quest_X): return False # тыкаем отменить if not wait_and_click_button(dev, poco, path_cancel_qst): return False # тыкаем назад из меню квестов if not wait_and_click_button(dev, poco, path_back): return False ### --------------------------------------- out('нажимаем кнопку выхода из города на карту') node = wait_for_node_visible(poco, path_map, 5) if not node.exists(): out('Button not showed', path_map) return False touch_center(dev, node) time.sleep(1) return True