Exemple #1
0
 def open_url(self,url):
     try:
         self.driver.get(url)
         logutils.info('打开浏览器地址%s'%url)
     except Exception as e:
         logutils.error('不能打开浏览器地址,原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #2
0
 def login_success(self, username, password):
     try:
         self.login_action(username, password)
         logutils.info('登录成功')
     except Exception as e:
         logutils.error('登录失败,失败的原因是:%s' % e.__str__())
     return MainPage(self.login_page.driver)
Exemple #3
0
 def close_current_browser_tab(self):
     try:
         self.driver.close()
         logutils.info('关闭当前tab页签')
     except Exception as e:
         logutils.error('关闭当前tab页签失败,原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #4
0
 def exit_browser(self):
     try:
         self.driver.quit()
         logutils.info('关闭浏览器')
     except Exception as e:
         logutils.error('关闭浏览器失败,失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #5
0
 def set_browser_refresh(self):
     try:
         self.driver.refresh()
         logutils.info('刷新浏览器')
     except Exception as e:
         logutils.error('刷新浏览器失败,失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #6
0
 def set_browser_min(self):
     try:
         self.driver.minimize_window()
         logutils.info('设置浏览器最小化')
     except Exception as e:
         logutils.error('设置浏览器最大化失败,原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #7
0
 def get_current_browser_title(self):
     try:
         value =self.driver.title
         logutils.info('获取当前浏览器窗口的标题'%value)
     except Exception as e:
         logutils.error('获取当前浏览器窗口的标题失败,失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #8
0
 def implicity_wait(self,seconds=conf.time_out):
     try:
         self.driver.implicitly_wait(seconds)
         logutils.info('设置隐式等待时间为%s秒'%seconds)
     except Exception as e:
         logutils.error('隐式等待设置失效,原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #9
0
 def set_browser_back(self):
     try:
         self.substation_wait()
         self.driver.back()
         logutils.info('返回浏览器上一页')
     except Exception as e:
         logutils.error('返回浏览器上一页,失败的原因是:%s'%e.__str__())
Exemple #10
0
 def tearDown(self):
     errors = self._outcome.errors
     for test, exc_info in errors:
         if exc_info:
             self.base_page.substation_wait()
             self.base_page.screen_shoot_as_file()
     self.base_page.close_current_browser_tab()
     logutils.info('------------------测试方法执行完毕------------------')
Exemple #11
0
 def input_element_operation(self,element_info,content):
     element = self.find_element(element_info)
     try:
         element.send_keys(content)
         logutils.info('[%s]元素输入内容为:%s' %(element_info['element_name'], content))
     except Exception as e:
         logutils.error('[%s]元素输入失败,输入的元素内容为:%s'%(element_info['element_name'],content))
         self.screen_shoot_as_file()
Exemple #12
0
 def click_operation(self,element_info):
     element = self.find_element(element_info)
     try:
         element.click()
         logutils.info('[%s]元素进行点击操作'%element_info['element_name'])
     except Exception as e:
         logutils.error('[%s]元素点击操作失败,原因是%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #13
0
 def screen_shoot_as_file(self):     #新截图方法  调用HTMLTestReportCN里面的方法截图
     try:
          report_path = os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',conf.report_path)  #自定义截图报告路径
          report_dir = HTMLTestReportCN.ReportDirectory(report_path)
          report_dir.get_screenshot(self.driver)
          logutils.info('截图成功')
     except Exception as e:
          logutils.error('截图失败,失败的原因是:%s'%e.__str__())
Exemple #14
0
 def move_to_element_be_mouse(self,element_info):
     try:
         element = self.find_element(element_info)
         ActionChains(self.driver).move_to_element(element).perform()
         logutils.info('鼠标移动至元素%s成功'%element)
     except Exception as e:
         logutils.error('鼠标移动至元素%s失败'%element,'失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #15
0
 def switch_to_frame_by_element(self,element_info):   #  方法一切换至frame框架
     try:
         self.substation_wait(conf.time_out)
         element = self.find_element(element_info)
         self.driver.switch_to.frame(element)
         logutils.info('切换至frame框架')
     except Exception as e:
         logutils.error('切换至frame框架失败,失败的原因是:%s'%e.__str__())
Exemple #16
0
 def long_press_element(self,element_info):
     try:
         element = self.find_element(element_info)
         ActionChains(self.driver).click_and_hold(element).pause(seconds=conf.time_out).reset_actions(element)
         logutils.info('鼠标移动至元素%s成功' % element)
     except Exception as e:
         logutils.error('鼠标移动至元素%s失败'%element,'失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #17
0
 def get_elementinfo_text(self,element_info):
     try:
         self.implicity_wait()
         element=self.find_element(element_info)
         logutils.info('获取元素文本信息%s成功'%(element_info['element_name']))
     except Exception as e:
         logutils.error(('获取元素文本信息%s失败'%element_info['element_name']),'原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
     return element.text
Exemple #18
0
 def excute_script(self,js_str,element_info=None):
     try:
         if element_info:
             self.driver.execute_script(js_str)
         else:
             self.driver.execute_script(js_str,None)
             logutils.info('执行js操作成功')
     except Exception as e:
         logutils.error('执行js操作失败,失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #19
0
 def set_browser_personalized(self):
     try:
         logutils.info('开始进行个性化浏览器设置')
         self.driver.maximize_window()
         time.sleep(2)
         self.driver.set_window_size(450,900)
         logutils.info('最大化浏览器,等待时间为默认等待时间,设置浏览器窗口为450*900的H5页面')
     except Exception as e:
         logutils.error('进行个性化浏览器设置失败,失败的原因是:%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #20
0
 def switch_to_frame_dict(self,**element_dict):
     try:
         if 'id' in element_dict.keys():
             self.driver.switch_to.frame(element_dict['id'])
         elif 'name' in element_dict.keys():
             self.driver.switch_to.frame(element_dict['name'])
         elif 'element' in element_dict.keys():
             self.driver.switch_to.frame(element_dict['element'])
         logutils.info('切换至frame成功')
     except Exception as e:
         logutils.error('切换至frame框架失败,失败的原因是:%s'%e.__str__())
Exemple #21
0
 def switch_to_window_by_url(self,url):
     try:
         window_handles = self.driver.window_handles
         for window_handle in window_handles:
             if WebDriverWait(self.driver,conf.time_out).until(Ec.url_contains(url)):
                 self.driver.switch_to.window(window_handle)
                 logutils.info('根据url切换句柄成功')
                 break
     except Exception as e:
         logutils.error('根据url切换句柄失败,失败的原因是%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #22
0
 def switch_to_window_by_title(self,title):
     try:
         window_handles = self.driver.window_handles
         for window_handle in window_handles:
             '''页面包含title则切过去,如果不包含则不等待'''
             if WebDriverWait(self.driver, conf.time_out).until(Ec.title_contains(title)):
                 self.driver.switch_to.window(window_handle)
                 logutils.info('根据网页标题%s切换句柄' % (title))
                 break
     except Exception as e:
         logutils.error('切换句柄失败,失败的原因是%s'%e.__str__())
         self.screen_shoot_as_file()
Exemple #23
0
 def screen_shot_as_file_old(self,*screenshot_path):
     try:
         current_dir = os.path.dirname(__file__)
         if len(screenshot_path) == 0:
             screenshot_filepath = conf.screen_shot_path
         else:
              screenshot_filepath = screenshot_path[0]
         now = time.strftime('%Y_%m_%d_%H_%M_%S')
         screenshot_filepath = os.path.join(current_dir,screenshot_filepath,'测试截图——%s.png'%now)
         self.driver.get_screenshot_as_file(screenshot_filepath)
         logutils.info('截图成功')
     except Exception as e:
         logutils.error('截图失败,失败的原因是:%s'%e.__str__())
Exemple #24
0
 def __get_chrome_driver(self):
     chrome_options = Options()
     chrome_options.add_argument('--disable-gpu')  #谷歌文档提到需要加上这个属性来规避bug
     chrome_options.add_argument('lang=zh_CN.UTF-8')  #设置默认编码
     chrome_options.add_experimental_option('useAutomationExtension',
                                            False)  #取消chrome受自动控制提示
     chrome_options.add_experimental_option(
         'excludeSwitches', ['automation'])  #取消chrome受自动控制提示
     chrome_driver_path = os.path.join(self.__driver_path, 'chromedriver')
     driver = webdriver.Chrome(options=chrome_options,
                               executable_path=chrome_driver_path)
     logutils.info('初始化并启动谷歌浏览器')
     return driver
Exemple #25
0
 def switch_to_alter(self,action='accept',time_out=conf.time_out):
     try:
         self.substation_wait(time_out)
         try:
             WebDriverWait(self.driver,time_out).until(Ec.alert_is_present())
             logutils.info('成功切换至弹出框')
         except Exception as e:
             logutils.error('切换至弹出框失败,失败的原因是:%s' % e.__str__())
         alter = self.driver.switch_to.alert
         alter_text = alter.text
         if action == 'accept':
             alter.accept()
         elif action == 'dismiss':
             alter.dismiss()
         logutils.info('切换至页面弹出框,获取弹出框的文本信息为%s'%alter_text)
     except Exception as e:
         logutils.error('切换至弹出框,获取弹出框的文本信息失败%s失败的原因是:%s',e.__str__())
         self.screen_shoot_as_file()
Exemple #26
0
 def zip_send_mail(self):
     try:
         smtp = smtplib.SMTP()
         smtp.connect(self.smtp_server)
         smtp.login(user=self.smtp_sender,
                    password=self.smtp_senderpassword)
     except:
         smtp = smtplib.SMTP_SSL()
         smtp.login(user=self.smtp_sender,
                    password=self.smtp_senderpassword)
     mail_content = self.mail_content_by_zip()
     try:
         smtp.sendmail(
             self.smtp_sender,
             self.smtp_receiver.split(',') + self.smtp_cc.split(','),
             mail_content.as_string())
         logutils.info('邮件发送成功')
     except Exception as e:
         logutils.error('邮件发送失败,失败的原因是:%s' % e.__str__())
     smtp.quit()
Exemple #27
0
 def find_element(self,element_info):
     '''
     根据提供的元素参数信息进行元素的查找
     :param element_info:
     :return:element对象
     '''
     try:
         locator_type_name=element_info['locator_type']   #locator_type_name  定位方式
         locator_value_info=element_info['locator_value']  #locator_value_info  被定为到的元素
         locator_timeout = element_info['timeout']   #locator_timeout  超时时间
         if locator_type_name == 'id':
             locator_type = By.ID
         elif locator_type_name == 'name':
             locator_type = By.NAME
         elif locator_type_name == 'class':
             locator_type = By.CLASS_NAME
         elif locator_type_name == 'xpath':
             locator_type = By.XPATH
         element = WebDriverWait(self.driver,locator_timeout).until(lambda x:x.find_element(locator_type,locator_value_info))
         logutils.info('[%s]元素识别成功'%element_info['element_name'])
     except Exception as e:
         logutils.error('[%s]元素识失败,失败的原因是:%s'%(element_info['element_name'],e.__str__()))
         self.screen_shoot_as_file()
     return element
Exemple #28
0
 def __get_edge_driver(self):
     edge_driver_path = os.path.join(self.__driver_path,
                                     'MicrosoftWebDriver.exe')
     driver = webdriver.Edge(executable_path=edge_driver_path)
     logutils.info('初始化并启动IE浏览器')
     return driver
Exemple #29
0
 def __get_firefox_driver(self):
     firefox_driver_path = os.path.join(self.__driver_path, 'geckodriver')
     driver = webdriver.Firefox(executable_path=firefox_driver_path)
     logutils.info('初始化并启动火狐浏览器')
     return driver
Exemple #30
0
 def tearDownClass(cls):
     logutils.info('==================测试类执行完毕==================')