コード例 #1
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #2
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #3
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #4
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #5
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #6
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #7
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #8
0
 def switch_tab(self, tab_name):
     name = "切换到{0}tab".format(tab_name)
     logger.info(name)
     locator_dict = vars(CommonLocator)  #获取类的属性,并存为字典
     print(locator_dict)
     #遍历字典中的元素,若键名中包含字符串'tab',且该键的值为元组,则取元组中的第二个定位表达式的值,判断传入参数是否在表达式中,若存在,将该定位表达式传给click_ele()
     for k, i in (locator_dict.items()):
         if 'tab' in k and isinstance(i, tuple):
             if tab_name in i[1]:
                 self.wait_eleVisibility(i)
                 self.click_ele(i)
コード例 #9
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #10
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #11
0
ファイル: test_index.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #12
0
ファイル: test_index.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #13
0
 def send_text_Email(self,receive,subject,content):
     name='发送文本信息邮件'
     logger.info(name)
     self.wait_eleVisibility(self.receive_input)
     #步骤
     #输入收件人
     self.input_keys(self.receive_input,receive)
     #输入主题
     self.input_keys(self.subject_input,subject)
     #输入邮件正文---切换到文本输入iframe----输入文本
     self.wait_iframe_and_switch_to_it(self.content_input_iframe,model_name=name)
     self.input_keys(self.content_input,content)
     #从iframe中切换出来,点击发送
     self.driver.switch_to.default_content()
     self.click_ele(self.send_button,model_name=name)
コード例 #14
0
ファイル: BasePage.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #15
0
    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
コード例 #16
0
ファイル: test_index.py プロジェクト: zhaoyx29/web_163_mail
 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
コード例 #17
0
 def get_withoutReceive_msg(self):
     name="获取未输入收件人时,发送邮件的提示信息"
     logger.info(name)
     self.wait_eleVisibility(self.popup_withoutReceive,model_name=name)
     return self.get_text(self.popup_withoutReceive,model_name=name)
コード例 #18
0
 def save_draft(self):
     name="将邮件存为草稿"
     logger.info(name)
     self.move_IntoView(self.save_draft_button)
     self.click_ele(self.save_draft_button,model_name=name)
コード例 #19
0
 def get_saveDraft_success_msg(self):
     name="获取草稿保存成功的提示信息"
     logger.info(name)
     self.wait_eleVisibility(self.save_draft_success_msg,model_name=name)
     return self.get_text(self.save_draft_success_msg,model_name=name)
コード例 #20
0
 def get_sendSuccess_msg(self):
     name="获取发送邮件成功的提示信息"
     logger.info(name)
     return self.get_text(self.sendEmail_success_msg,model_name=name)
コード例 #21
0
 def goto_index_tab(self):
     name="点击【首页】tab,跳转至首页"
     logger.info(name)
     self.click_ele(self.index_tab)
コード例 #22
0
 def get_tabTitle(self):
     name = '获取写信tab的title'
     logger.info("获取写信页面的title")
     self.wait_eleVisibility(self.writeEmail_tab,model_name=name)
     return self.get_eleAttribute(self.writeEmail_tab,'title',model_name=name)
コード例 #23
0
ファイル: index_page.py プロジェクト: zhaoyx29/web_163_mail
 def goto_sended(self):
     name = "进入已发送列表"
     logger.info(name)
     self.wait_eleVisibility(self.sended_menu, model_name=name)
     self.click_ele(self.sended_menu, model_name=name)
コード例 #24
0
 def get_quiteSuccess_msg(self):
     name="获取退出成功信息"
     logger.info(name)
     return self.get_text(self.quitSuccess_msg,model_name=name)
コード例 #25
0
ファイル: test_draft.py プロジェクト: zhaoyx29/web_163_mail
 def test_del_draft_success(self):
     del_name = "成功删除邮件草稿箱的草稿测试"
     logger.info(del_name)
コード例 #26
0
 def get_current_tab(self):
     name = '获取当前页面tab的title'
     logger.info(name)
     self.wait_eleVisibility(self.checked_tab)
     return self.get_text(self.checked_tab)
コード例 #27
0
 def checked_draft_content(self):
     name="选中要删除的草稿"
     logger.info(name)
     self.wait_eleVisibility(self.checkbox_draft,model_name=name)
     self.click_ele(self.checkbox_draft,model_name=name)
コード例 #28
0
 def quit_login(self):
     name = "退出登录"
     logger.info(name)
     self.wait_eleVisibility(self.quit_button)
     self.click_ele(self.quit_button, model_name=name)
コード例 #29
0
 def get_forgetUrl(self):
     logger.info('获取重置密码页面URL')
     return self.get_pageUrl()
コード例 #30
0
 def del_draft(self):
     name="删除草稿"
     logger.info(name)
     self.checked_draft_content()
     self.click_ele(self.del_draft_button,model_name=name)