def normalize_qqlite(self): footer = self.poco("com.tencent.qqlite:id/tw_main") while not footer.exists(): keyevent("BACK") footer.child("com.tencent.qqlite:id/tab1").click() self.poco("com.tencent.qqlite:id/contentFrame").offspring("com.tencent.qqlite:id/vPager").offspring( "com.tencent.qqlite:id/recent_chat_list").child("android.widget.LinearLayout")[0].click()
def _keyevent(self,keyname, **kwargs): ''' 执行keyevent :param keyname: :param kwargs: :return: ''' keyevent(keyname,**kwargs)
def login(self, is_new_account=False, uid=10340): if config.okc_environment == config.OkcEnvironment.Dev.value: environment_node_name = "dev_btn" elif config.okc_environment == config.OkcEnvironment.OnlineTest.value: environment_node_name = "online_test_btn" else: environment_node_name = "test_btn" if is_new_account: node_name_fake_sdk = "tab_2" node_name_new = "new_btn" self.click_by_node_name(view="ViewEnvironmentSelect", node_name=node_name_fake_sdk) self.click_by_node_name(view="ViewEnvironmentSelect", node_name=node_name_new) else: uid_node_name = "text" uid_tab_node_name = "tab_1" self.click_by_node_name(view="ViewEnvironmentSelect", node_name=uid_tab_node_name) old_uid = str(self.poco(uid_node_name).get_text()) if not old_uid == str(uid): uid_input_node_name = "uid_input" if self.click_by_node_name(view="ViewEnvironmentSelect", node_name=uid_input_node_name): old_uid_size = len(old_uid) while old_uid_size > 0: api.keyevent("KEYCODE_DEL") old_uid_size -= 1 api.sleep(self.default_wait_time) api.text(str(uid)) self.click_by_node_name(view="ViewEnvironmentSelect", node_name=environment_node_name) if self.click_by_node_name(view="ViewEnvironmentSelect", node_name=environment_node_name): loading_time = 0 loading_start_time = time.time() while True: if loading_time >= 120: logging.error("loading 时间超过两分钟,异常....") self.get_screenshots(image_name="Loading_Error_%s" % int(loading_start_time)) break if self.find_ui_node(ui_node_name="ViewLoading"): logging.info("还在loading中...") time.sleep(self.default_wait_time) loading_time = time.time() - loading_start_time self.update_ui_node() else: logging.info("loading 完毕") logging.info("此次loading耗时小于 %s 秒" % loading_time) break else: logging.error("环境选择按钮点击失败....")
def exit_app(self): logging.info('exit_app') confir_exit_btn = 'com.orbbec.gdgamecenter:id/confir_exit_btn' keyevent("BACK") time.sleep(5) self.poco(confir_exit_btn).click() # if self.img_element_exists('../action_imgs/exit_btn.png', False): # logging.info('find it') # self.click_img('../action_imgs/exit_btn.png', False) time.sleep(5)
def send_message(self, msg_text): try: input_box = self.poco("com.tencent.qqlite:id/input") input_box.click() input_box.set_text(msg_text) keyevent("ENTER") return True except PocoNoSuchNodeException as e: logger_yiri.error(e) self.normalize_qqlite() return False
def back_homepage(self, ele_name='scan_code'): """ APP测试每次用例执行后返回首页 """ # 最多10次迭代 for i in range(10): # 判断是否返回了首页(首页特有元素判断),没有返回首页点击返回键,返回了首页循环退出 if not self.poco(ele_name).exists(): keyevent("KEYCODE_BACK") else: break
def home(): """ 返回家 :return: None """ while True: pos = Template(r"../item/home-tower.png").match_in(dev.snapshot()) if pos is not None: dev.touch(pos) sleep(1) break pos = Template(r"../item/home-map.png").match_in(dev.snapshot()) if pos is not None: dev.touch(pos) sleep(1) dev.touch(pos) sleep(1) break keyevent('BACK')
def go_back(times=1): for i in range(times): keyevent("BACK")
def back(self): """ 后退。only android :return: """ keyevent("BACK")