Beispiel #1
0
 def implicitly_wait(self, seconds=conf.time_out):
     try:
         self.driver.implicitly_wait(seconds)
         logutils.info('设置隐式等待时间为5秒')
     except Exception as e:
         logutils.error('隐式等待设置失败,原因是:%s' % e.__str__())
         self.screen_shoot_as_file()
Beispiel #2
0
 def set_browser_back(self):
     try:
         self.wait()
         self.driver.back()
         logutils.info('浏览器返回上一页')
     except Exception as e:
         logutils.error('返回浏览器上一页失败的原因是:%s' % e.__str__())
Beispiel #3
0
 def open_url(self, url):
     try:
         self.driver.get(url)
         logutils.info('打开浏览器path地址%s' % url)
     except Exception as e:
         logutils.error('不能打开指定的测试网址,原因是:%s' % e.__str__())
         self.screen_shoot_as_file()
Beispiel #4
0
 def browser_refresh(self):
     try:
         self.driver.refresh()
         logutils.info('刷新浏览器')
     except Exception as e:
         logutils.error('刷新浏览器操作失败,原因是:%s' % e.__str__())
         self.screen_shoot_as_file()
Beispiel #5
0
 def exit_driver(self):
     try:
         self.driver.quit()
         logutils.info('退出浏览器')
     except Exception as e:
         logutils.error('退出浏览器失败,原因是:%s' % e.__str__())
         self.screen_shoot_as_file()
Beispiel #6
0
    def find_element(self, element_info):
        '''

        根据提供的元素参数信息进行元素的查找,

        :param element_info: 元素信息参数,字典类{。。。}
        :return: element对象
        '''
        try:
            locator_type_name = element_info[
                'locator_type']  #locator_type  定位方式
            locator_value_info = element_info[
                'locator_value']  # locator_value_info   被定位到的元素
            locator_timeout = element_info['time_out']  #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))    #self.driver传入浏览器,等待时间 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()
        # finally:
        #     if element is None:
        #         element=''
        return element
Beispiel #7
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()
Beispiel #8
0
 def close_tab(self):
     try:
         self.driver.close()
         logutils.info('关闭当前tab页签')
     except Exception as e:
         logutils.error('关闭浏览器失败,原因是:%s' % e.__str__())
         self.screen_shoot_as_file()
Beispiel #9
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__())
Beispiel #10
0
 def get_title(self):
     try:
         value = self.driver.title
         logutils.info('获取浏览器标题,标题是%s' % value)
     except Exception as e:
         logutils.error('获取浏览器title失败,原因是:%s' % e.__str__())
         self.screen_shoot_as_file()
     return value
Beispiel #11
0
 def switch_to_frame(self, element_info):
     try:
         self.wait()
         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__())
Beispiel #12
0
 def input_operation(self, element_info, content):
     try:
         element = self.find_element(element_info)
         element.send_keys(content)
         logutils.info('[%s]元素进行输入内容:%s' %
                       (element_info['element_name'], content))
     except Exception as e:
         logutils.error('输入操作失败,失败的原因是:%s' % e.__str__())
Beispiel #13
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()
Beispiel #14
0
 def switch_to_window_by_url(self, url):
     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%s切换句柄' % (url))
             break
Beispiel #15
0
 def get_text(self, element_info):
     try:
         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
Beispiel #16
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__())
Beispiel #17
0
 def switch_to_window_by_title(self, title):
     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
Beispiel #18
0
 def screen_shoot_as_file(self):
     try:
         repotr_path = os.path.join(
             os.path.abspath(os.path.dirname(__file__)), '..',
             conf.report_path)  # 定义截图报告路径
         repotr_dir = HTMLTestReportCN.ReportDirectory(repotr_path)
         repotr_dir.get_screenshot(self.driver)
         logutils.info('截图成功')
     except Exception as e:
         logutils.error('截图失败,失败的原因是:%s' % e.__str__())
 def tearDown(self):
     #判断测试用例失败截图,如果测试用例执行失败就截图
     # if len(self._outcome.errors)>=1:
     #     self.base_page.screen_shoot_as_file()
     errors = self._outcome.errors
     for test,exc_info in errors:
         if exc_info:
             self.base_page.wait(3)
             self.base_page.screen_shoot_as_file()
     self.base_page.close_tab()
     logutils.info('-------------测试方法执行完毕-------------')
Beispiel #20
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')  #设置默认编码为utf-8
     chrome_options.add_experimental_option('useAutomationExtension',
                                            False)  #取消chrome受自动控制提示
     chrome_options.add_experimental_option(
         "excludeSwitches", ['enable-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
Beispiel #21
0
 def switch_to_alter(self, action='accept', time_out=conf.time_out):
     try:
         self.wait(time_out)
         WebDriverWait(self.driver, time_out).until(EC.alert_is_present())
         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' % (alter_text),
                        '失败的原因是:%s' % e.__str__())
     return alter_text
Beispiel #22
0
 def screen_shoot_as_file_old(self, *screenshot_path):
     try:
         current_dir = os.path.dirname(__file__)
         if len(screenshot_path) == 0:
             screenshot_filepath = conf.screen_shoot_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,
                                            'UITest——%s.png' % now)
         self.driver.get_screenshot_as_file(screenshot_filepath)
         logutils.info('截图')
     except Exception as e:
         logutils.error('截图失败,失败的原因是:%s' % e.__str__())
 def setUpClass(cls):
     logutils.info('')
     logutils.info('==============测试类开始执行==============')
     cls.url=conf.url
 def tearDownClass(cls):
     logutils.info('==============测试类执行完毕==============')
Beispiel #25
0
 def wait(self, seconds=conf.time_out):
     time.sleep(seconds)
     logutils.info('固定等待时间为%s' % (seconds))
 def setUp(self):
     logutils.info('-------------测试方法开始执行-------------')
     self.base_page=BasePage(Browser().get_default_driver())   #实例化base_page对象
     self.base_page.set_browser_max()   #设置浏览器最大化
     self.base_page.implicitly_wait()   #设置隐式等待时间,base_page
     self.base_page.open_url(self.url)  #打开浏览器
Beispiel #27
0
 def __init__(self, driver):
     '''实例化driver'''
     self.driver = driver
     self.chains = ActionChains(self.driver)
     logutils.info('实例化浏览器驱动')
Beispiel #28
0
 def switch_to_frame_id_or_name(self, id_or_name):
     self.driver.switch_to.frame(id_or_name)
     logutils.info('切换至frame框架')
Beispiel #29
0
 def long_press_element(self, element_info):
     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))