def get_pageUrl(self,model_name=''): try: return self.driver.current_url except: logger.exception('获取页面URL失败') self._get_screenShot(model_name) raise
def wait_eleVisibility(self,locator,wait_time=20,poll_frequency=0.5,model_name=''): try: logger.info('等待{0}中元素可见'.format(model_name)) WebDriverWait(self.driver,wait_time,poll_frequency).until(EC.visibility_of_element_located(locator)) except: logger.exception('等待元素可见失败') self._get_screenShot(model_name) raise
def _get_screenShot(self,model_name): screen_path=screenShot_dir + '\\{0}_{1}.png'.format(model_name,time.strftime("%Y%m%d_%H%M%S")) try: self.driver.get_screenshot_as_file(screen_path) logger.info('截图成功,截图为:',screen_path) except: logger.exception('截图操作失败') raise
def get_eleAttribute(self,locator,attribute,model_name=''): ele = self.find_ele(locator) try: logger.info('获取{0}的元素属性'.format(model_name)) return ele.get_attribute(attribute) except: logger.exception('获取元素属性失败') self._get_screenShot(model_name) raise
def get_text(self,locator,model_name=''): ele = self.find_ele(locator) try: logger.info('获取{0}文本信息'.format(model_name)) return ele.text except: logger.exception('获取当前文本信息失败') self._get_screenShot(model_name) raise
def move_IntoView(self,locator,model_name=''): ele = self.find_ele(locator) try: logger.info('将{0}的元素移动到可见区域'.format(model_name)) self.driver.execute_script("arguments[0].scrollIntoView()",ele) except: logger.exception('将元素移动到可见区域失败') self._get_screenShot(model_name) raise
def click_ele(self,locator,model_name=''): ele = self.find_ele(locator) try: logger.info('{0}-点击操作'.format(model_name)) ele.click() except: logger.exception('点击元素操作失败') self._get_screenShot(model_name) raise
def test_send_Email_withoutReceive(self,init_writeEnv): #步骤:发送邮件---无收件人 WriteEmailPage(init_writeEnv).send_text_Email(send_textEmail_withoutRecive['receive'],send_textEmail_withoutRecive['subject'],send_textEmail_withoutRecive['Email_content']) #断言:是否有正确的提示信息 try: assert WriteEmailPage(init_writeEnv).get_withoutReceive_msg() == send_textEmail_withoutRecive['expected'] except AssertionError: logger.exception('断言出错啦') raise
def test_save_draft(self,init_writeEnv): #点击存草稿button WriteEmailPage(init_writeEnv).save_draft() #断言--判断是否有邮件保存成功的提示信息 try: assert '成功保存到草稿箱' in WriteEmailPage(init_writeEnv).get_saveDraft_success_msg() except AssertionError: logger.exception('断言出错啦') raise
def input_keys(self,locator,content,model_name=''): ele = self.find_ele(locator,model_name) try: logger.info('{0}-输入文本'.format(model_name)) ele.send_keys(content) except: logger.exception('输入文本操作失败') self._get_screenShot(model_name) raise
def test_send_text_Email_ok(self,init_writeEnv): #步骤:发送邮件 WriteEmailPage(init_writeEnv).send_text_Email(send_textEmail_success['receive'],send_textEmail_success['subject'],send_textEmail_success['Email_content']) #断言:是否有发送成功的提示 try: assert WriteEmailPage(init_writeEnv).get_sendSuccess_msg() == send_textEmail_success['expected'] except AssertionError: logger.exception('断言出错啦:') raise
def test_login_noData(self, init_loginEnv, data): #不输入用户名或密码登录 init_loginEnv[1].login(data['username'], data['passwd']) #断言 try: assert init_loginEnv[1].get_login_noData_msg() == data['expected'] except AssertionError: logger.exception('断言失败啦!') raise
def test_login_success(self, init_loginEnv): #输入用户名、密码,点击[登录]button init_loginEnv[1].login(login_success_data['username'], login_success_data['passwd']) #断言,比对结果 try: assert IndexPage(init_loginEnv[0]).get_userAccount( ) == login_success_data['expected'] except AssertionError: logger.exception('断言失败啦!') raise
def wait_iframe_and_switch_to_it(self,locator,wait_time=20,poll_frequency=0.5,model_name=''): """ :param locator: 类型为元组(By.XXX,iframe的定位表达式), """ ele = self.find_ele(locator) try: logger.info('等待并且换到iframe-{0}'.format(model_name)) WebDriverWait(self.driver,wait_time,poll_frequency).until(EC.frame_to_be_available_and_switch_to_it(ele)) except: logger.exception('等待并且换到iframe失败') self._get_screenShot(model_name) raise
def test_goto_draft(self, init_loginedEnv): name = '进入草稿箱页面' logger.info(name) #点击【写信】操作 IndexPage(init_loginedEnv).goto_drafts() #比对当前是否在草稿箱页面(tab) 当前title为:草稿箱 tab_title = CommonPage(init_loginedEnv).get_current_tab() #断言 try: assert tab_title == draft_tab except AssertionError: logger.exception('断言出错啦') raise
def test_goto_writeEmail(self, init_loginedEnv): name = '进入写信页面' logger.info(name) #点击【写信】操作 IndexPage(init_loginedEnv).goto_writeEmail() #比对当前是否在写信页面(tab) 当前title为:写信 tab_title = CommonPage(init_loginedEnv).get_write_tabTitle() #断言 try: assert tab_title == write_tab except AssertionError: logger.exception('断言出错啦') raise
def find_eles(self,locator,model_name=''): """ :param locator: 类型为元组(By.XXX,定位表达式) :param filename:截图存放位置 """ #异常捕获,失败时,添加日志和截图 try: logger.info('查找元素_{0}'.format(model_name)) return self.driver.find_elements(*locator) except: logger.exception('查找元素失败') self._get_screenShot(model_name) raise
def test_goto_forgetPwdPage(self, init_loginEnv): #点击登录页面的【忘记密码】链接 before_click_handles = init_loginEnv[0].window_handles init_loginEnv[1].goto_forgetPwd() #断言 ---页面是否打开(打开新窗口) try: init_loginEnv[1].wait_windows_and_switch_to_it( before_click_handles ) #调用wait_windows_and_switch_to_it方法,切换窗口,# 在测试用例中调用BasePage里的方法,是由页面对象去调用,该页面对象继承了BasePage类 assert ForgetPwdPage( init_loginEnv[0]).get_forgetUrl() == forget_url except AssertionError: logger.exception('断言出错了') raise
def wait_windows_and_switch_to_it(self,current_handles,wait_time=20,poll_frequency=0.5,model_name=''): try: logger.info('等待新窗口打开') WebDriverWait(self.driver,wait_time,poll_frequency).until(EC.new_window_is_opened(current_handles)) except: logger.exception('等待打开新窗口失败') self._get_screenShot(model_name) raise try: logger.info('切换到新打开的窗口') cur_handles = self.driver.window_handles self.driver.switch_to.window(cur_handles[-1]) except: logger.exception('切换到新打开的窗口失败') self._get_screenShot(model_name) raise
def test_quit_login(self,init_loginedEnv): logger.info('退出登录') #点击退出button CommonPage(init_loginedEnv).quit_login() #断言 try: assert QuitePage(init_loginedEnv).get_quiteSuccess_msg() == '您已成功退出网易邮箱。' except AssertionError: logger.exception("断言出错啦:") raise # def test_switch_tab_to_address_list(self,init_loginedEnv): # logger.info( '切换到{0}tab中'.format(address_list_tab)) # CommonPage(init_loginedEnv).switch_tab(address_list_tab) # #断言 # try: # assert CommonPage(init_loginedEnv).get_tabTitle(address_list_tab) == '通讯录' # except AssertionError: # logger.exception("断言出错啦:") # raise
def test_tab_name(self, init_loginedEnv): # 通过IndexPage页面对象来获取tab # name='进入首页页面,查看页面信息是否正确' # logger.info(name) # content=IndexPage(init_loginedEnv).get_tabTitle() # #断言 # try: # assert content == index_tab # except AssertionError: # logger.exception('断言出错啦') # raise # 通过CommonPage页面对象来获取tab name = '进入首页页面,查看页面信息是否正确' logger.info(name) content = CommonPage(init_loginedEnv).get_tabTitle(index_tab) #断言 try: assert content == index_tab except AssertionError: logger.exception('断言出错啦') raise