def setUp(cls): """启动应用""" cls.home = HomePage() cls.login = LoginPage() cls.account = AccountPage() cls.login.app_status() # 判断APP当前状态 cls.home.click_sub() # 进入公众号
def setUp(cls): """启动应用""" cls.home = HomePage() cls.login = LoginPage() cls.order = OrderPage() cls.login.app_status() # 判断APP当前状态 cls.home.click_sub() # 进入公众号
def get_info(self): """获取我的账号页面信息 手机号、备注等""" content = [] HomePage().account_tab() # 账号管理 tab self.mine_account() # 进入 我的账号 time.sleep(5) if self.wait_check_account_page(): # 页面检查点 if not HomePage().wait_check_button(): LoginPage().clear_tbs_to_retry() HomePage().account_tab() # 账号管理 tab self.mine_account() # 进入 我的账号 content = self.account_all_ele() # 所有元素 HomePage().back_to_club_home() # 返回主界面 return content[1], content[5], content[ 3], # content[3]=手机号 [5]=备注名 [1]=昵称 else: print("未定位到我的账号检查点") return content
def logout_operate(self): """退出登录""" ele = HomePage().get_text1() if ele == "我的账号": # 我的账号 页面检查点 print("已在 '我的账号' 页面,退出登录。") else: HomePage().back_to_club_home() # 点击关闭按钮 HomePage().account_tab() # 点击底部菜单 - 我的账号 self.mine_account() # 点击二级标题 我的账号 if self.wait_check_account_page(): ele = HomePage().get_text1() if ele == "我的账号": # 我的账号 页面检查点 print("进入 '我的账号' 页面:") else: print('★★★ Error - 未进入我的账号 页面') self.logout_button() # 退出登录 按钮 if self.wait_check_logout_page(): # 退出登录确认弹框 检查点 self.confirm_button() # 确定按钮
def login_operate_phone(self): """ 测试手机号""" for i in range(0, len(phone_data)): if self.home.wait_check_login_page(): phone = self.home.ele_input_text()[0] pwd = self.home.ele_input_text()[1] phone.click() # 激活phone输入框 phone.send_keys(phone_data[i]['username']) # 输入手机号 pwd.click() # 激活pwd输入框 # self.home.show_password() pwd.send_keys(phone_data[i]['password']) # 输入密码 try: assert_text = phone_data[i]['assert'] except: assert_text = '' self.home.login_button() self.login.check_login_error_info(assert_text) #检查toast if self.home.wait_check_login_page(): print('登录失败', phone_data[i]['username']) self.home.back_to_club_home() # 点击关闭按钮 if HomePage().wait_check_parent_title(): if i == 0: self.home.report_tab() # 点击底部菜单 - 学习报告 self.report.study_month_report() # 点击二级标题 学习月报 elif i in (1, 3): self.home.report_tab() # 点击底部菜单 - 学习报告 self.report.study_week_report() # 点击二级标题 学习周报 elif i == 4: self.home.buy_tab() # 点击底部菜单 - 购买 elif i == 5: self.home.account_tab() # 点击底部菜单 - 账号管理 self.order.mine_order() # 点击二级标题 我的订单 else: self.home.account_tab() # 点击底部菜单 - 账号管理 self.account.mine_account() # 点击二级标题 我的账号 else: print('登录成功:', phone_data[i]['username']) self.account.logout_operate() # 退出登录 else: print('已登录') self.account.logout_operate() #退出登录 print('----------------------------------')
def __init__(self): self.home = HomePage() self.toast = Toast()
class LoginPage(BasePage): """登录界面""" @teststeps def __init__(self): self.home = HomePage() self.toast = Toast() @teststeps def wait_check_wx(self): """以微信主界面“tab:微信”的text为依据""" try: main_ele = (By.XPATH, "//android.widget.TextView[contains(@text,'微信')]") WebDriverWait(self.driver, 15, 0.5).until(EC.presence_of_element_located(main_ele)) return True except : return False @teststeps def wait_check_test1(self): """以微信主界面“tab:微信”的text为依据""" try: main_ele = (By.XPATH, "//android.widget.TextView[contains(@text,'测试1')]") WebDriverWait(self.driver, 15, 0.5).until(EC.presence_of_element_located(main_ele)) return True except: return False @teststeps def wait_check_tbs(self): """以tbs页面 标题作为检查点""" try: tbs_title = (By.XPATH, "//android.widget.TextView[contains(@text,'tbs调试页面')]") WebDriverWait(self.driver, 15, 0.5).until(EC.presence_of_element_located(tbs_title)) return True except: return False @teststeps def wait_check_delete_x5core(self): """删除内核弹框检查""" try: tbs_title = (By.XPATH, "//android.widget.TextView[contains(@text,'删除内核')]") WebDriverWait(self.driver, 15, 0.5).until(EC.presence_of_element_located(tbs_title)) return True except: return False @teststeps def wait_check_find_exp(self): """搜索页面检查""" try: tbs_title = (By.ID, "com.tencent.mm:id/ht") WebDriverWait(self.driver, 15, 0.5).until(EC.presence_of_element_located(tbs_title)) return True except: return False @teststep def launch_app(self): """Start on the device the application specified in the desired capabilities. """ os.system ("adb shell am start -n com.tencent.mm/com.tencent.mm.ui.LauncherUI/") time.sleep (5) @teststep def close_app(self): """Close on the device the application specified in the desired capabilities. """ os.system ('adb shell am force-stop com.tencent.mm') @teststeps def app_status(self): """判断应用当前状态""" if self.wait_check_wx(): # 在 微信 界面 print('微信主界面:') # self.clear_tbs() elif self.home.wait_check_parent_title(): # 家长端 主界面 print('家长端 主界面:') else: print('其他情况:') self.close_app() self.launch_app() if self.wait_check_wx(): # 在 微信 主界面 print('微信主界面:') @teststep def chat_test1_click(self): """点击置顶好友test1""" self.driver.find_elements_by_id ("com.tencent.mm:id/np")[0].click() @teststep def tbs_link_click(self): """点击test1发送的tbs链接""" self.driver.find_element_by_id ("com.tencent.mm:id/lz").click () @teststep def click_clear_tbs_btn(self): """点击清除tbs内核选项""" self.driver.find_element_by_xpath ("//android.widget.TextView[contains(@text,'清除TBS内核')]").click() @teststep def confirm_delete(self): """确认清除""" self.driver.find_element_by_id ("android:id/button1").click() time.sleep (2) @teststep def back_to_test1(self): """点击返回按钮(X) 返回到聊天框""" self.driver.find_element_by_id ("com.tencent.mm:id/j7").click() @teststep def back_to_wx_home(self): self.driver.find_element_by_id ("com.tencent.mm:id/iz").click() @teststep def clear_tbs(self): """进入清除内核页面,并返回主页面""" self.chat_test1_click() if self.wait_check_test1(): self.tbs_link_click() #点击链接 if self.wait_check_tbs(): self.click_clear_tbs_btn() #点击清除tbs if self.wait_check_delete_x5core(): self.confirm_delete() #确认清除 self.back_to_test1() # 退出tbs页面 if self.wait_check_test1(): self.back_to_wx_home() #退出聊天页面 if self.wait_check_wx(): print("已清除TBS内核\n") @teststeps def clear_tbs_to_retry(self): """内核清除""" if "QQ浏览器X5内核提供技术支持" in self.home.driver.page_source: print("X5内核已恢复,需重新清除TBS") self.home.back_to_club_home() # 返回 if self.home.wait_check_parent_title(): # 在线助教家长公众号主界面检查 self.home.back_to_find() # 退出公众号 self.home.back_to_wx_home() # 退出搜搜页面 self.clear_tbs() # 清除内核 self.home.click_sub() # 重新进入公众号 else: print("X5内核未恢复,但依然未发现元素") self.home.back_to_club_home() @teststeps def check_login_error_info(self, toast_info): """检查登录toast信息""" if toast_info == '': pass elif self.toast.find_toast_by_xpath(toast_info): print(toast_info) else: print("未发现错误提示信息",toast_info)
def __init__(self): self.home = HomePage()