def find_element(self, element_info):
        """
        根据提供的元素参数信息进行元素查找

        :param element_info:元素信息,自典类型{}
        :return: element对象
        """
        try:
            locator_type_name = element_info['locator_type']
            locator_value_info = element_info['locator_value']
            locator_timeout = element_info['timeout']
            if locator_type_name == 'id':
                locator_type = By.ID
            elif locator_type_name == 'name':
                locator_type = By.NAME
            elif locator_type_name == 'link':
                locator_type = By.LINK_TEXT
            elif locator_type_name == 'class':
                locator_type = By.CLASS_NAME
            elif locator_type_name == 'xpath':
                locator_type = By.XPATH
            elif locator_type_name == 'css':
                locator_type = By.CSS_SELECTOR
            element=WebDriverWait(self.driver,locator_timeout).\
                until(lambda x:x.find_element(locator_type,locator_value_info)) #最核心的代码
            logger.info('[%s]元素识别成功' % element_info['element_name'])
        except Exception as e:
            logger.error('[%s]元素不识别成功,' % (element_info['element_name']))
            self.screenshot_as_file()  #元素识别识别,错误截图
        # finally:
        #     if  element is None:
        #         element = ''
        return element
예제 #2
0
 def send(self, element_info, content):
     try:
         element = self.find_element(element_info)
         element.send_keys(content)
         logger.info('输入成功')
     except Exception as e:
         logger.error('输入失败')
예제 #3
0
 def quit(self):
     try:
         time.sleep(3)
         self.driver.quit()
         logger.info('退出浏览器')
     except Exception as e:
         logger.error('退出浏览器失败,原因为%s' % e)
예제 #4
0
 def click(self, element_info):
     try:
         element = self.find_element(element_info)
         element.click()
         logger.info('点击成功')
     except Exception as e:
         logger.error('点击失败')
예제 #5
0
 def mouse_perform(self, element_info):
     try:
         element = self.find_element(element_info)
         ActionChains(self.driver).move_to_element(element).perform()
         logger.info("鼠标悬浮在%s" % element_info['element_name'])
     except Exception as e:
         logger.error('鼠标悬浮失败%s' % e)
예제 #6
0
 def switch_to_frame_by_element(self, element_info):
     try:
         element = self.find_element(element_info)
         self.driver.switch_to.frame(element)
         logger.info('成功进入[%s]表单' % element_info['element_name'])
     except Exception as e:
         logger.error('进入表单失败,失败原因为%s' % e)
예제 #7
0
 def scroll_bottom_page(self):
     try:
         self.driver.execute_script(
             "window.scrollTo(0,document.body.scrollHeight);")
         logger.info('滚动页面到底部')
     except Exception as e:
         logger.error('滚动页面到底部失败,原因为%s' % e)
예제 #8
0
 def find_element(self, element_info):
     """
     根据提供的元素参数信息进行元素的查找
     :param element_info: 元素信息参数,字典类型{}
     :return: element对象
     """
     try:
         locator_element_name = element_info['element_name']
         locator_type_name = element_info['locator_type']
         locator_value_info = element_info['locator_value']
         locator_timeout = element_info['timeout']
         if locator_type_name == 'id':
             locator_type = By.ID
         elif locator_type_name == 'name':
             locator_type = By.NAME
         elif locator_type_name == 'xpath':
             locator_type = By.XPATH
         elif locator_type_name == 'link_text':
             locator_type = By.LINK_TEXT
         elif locator_type_name == 'css_selector':
             locator_type = By.CSS_SELECTOR
         # element = WebDriverWait(self.driver, int(locator_timeout))\
         #     .until(lambda x: x.find_element(locator_type, locator_value_info))
         # logger.info("%s元素识别成功" % locator_element_name)
         element = WebDriverWait(self.driver, float(locator_timeout))\
             .until(EC.presence_of_element_located((locator_type_name, locator_value_info)))
         logger.info("%s元素识别成功" % locator_element_name)
     except Exception as e:
         logger.error("[%s]元素无法识别,原因是%s" %
                      (element_info['element_name'], e.__str__()))
         self.screenshot_as_file()
     # finally:
     #     if element is None:
     #         element = ''
     return element
예제 #9
0
 def get_title(self):
     try:
         title_text = self.driver.title
         logger.info('获取标题成功,标题为:%s' % title_text)
         return title_text
     except Exception as e:
         logger.error('获取标题失败,失败原因为:%s' % e)
예제 #10
0
def read_excel_data_into_mysql_database(excel_path):
    try:
        workbook = xlrd.open_workbook(excel_path)
        logger.info('创建workbook对象成功')
    except FileNotFoundError as e:
        current_path = os.path.dirname(__file__)
        excel_path = os.path.join(current_path, '../data/stu_info.xlsx')
        workbook = xlrd.open_workbook(excel_path)
        logger.error('excel文件未找到,使用默认路径文件:%s' % excel_path)
    sheet = workbook.sheet_by_index(0)
    cnx = mysql.connector.connect(user=config.get_mysql_user, password=config.get_mysql_password,
                                  host=config.get_mysql_host,
                                  database=config.get_mysql_database)
    for i in range(1, sheet.nrows):
        case_info = []
        for j in range(sheet.ncols):
            if 'time' in str(sheet.cell_value(0, j)):
                # 处理日期为日期格式
                case_info.append(xlrd.xldate.xldate_as_datetime(sheet.cell_value(i,j),0).strftime('%Y-%m-%d %H:%M:%S'))
            elif 'int' in str(sheet.cell_value(0, j)):
                # 处理期数、工号、推广组、城市为整形
                case_info.append(int(sheet.cell_value(i ,j)))
            elif 'null' in str(sheet.cell_value(0, j)):
                case_info.append('NULL')
            else:
                case_info.append(sheet.cell_value(i, j))
        cursor = cnx.cursor()
        sql = "insert into joycloud_f_dt_platform_data_lines" \
              "( uid, ord_no, fst_int_dte, stg_typ, bsy_typ, emp_no, emp_nam, tem_id, tem_nam, cty_id, cty_nam, fst_ord, cus_nam, rpt_cus_nam, lft_prc_amt, min_ovd_dte, max_ovd_stt, ovd_fst_stg_no)" \
              " values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"%tuple(case_info)
        print(sql)
        cursor.execute(sql)
        cnx.commit()
        cursor.close()
    cnx.close()
    def find_element(self, element_info):
        """
        根据提供的元素参数信息进行元素查找

        :param element_info:元素信息,字典类型{....}
        :return: element对象
        """
        try:
            locator_type_name = element_info['locator_type']
            locator_value_info = element_info['locator_value']
            locator_timeout = element_info['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))
            logger.info('[%s]元素识别成功' % element_info['element_name'])
            # element = WebDriverWait(self.driver, locator_timeout)\
            #     .until(EC.presence_of_element_located((locator_type, locator_value_info)))
        except Exception as e:
            logger.error('[%s]元素不能识别,原因是%s' %
                         (element_info['element_name'], e.__str__()))
            self.screenshot_as_file()
        # finally:
        #     if element is None:
        #         element = ''
        return element
예제 #12
0
 def find_element(self, element_info):
     try:
         element_name = element_info['element_name']
         locator_type = element_info['locator_type']
         locator_value = element_info['locator_value']
         timeout = element_info['timeout']
         if locator_type == 'id':
             locator_type = By.ID
         elif locator_type == 'name':
             locator_type = By.NAME
         elif locator_type == 'class':
             locator_type = By.CLASS_NAME
         elif locator_type == 'xpath':
             locator_type = By.XPATH
         elif locator_type == 'css':
             locator_type = By.CSS_SELECTOR
         elif locator_type == 'link':
             locator_type = By.LINK_TEXT
         # 相当于  element = driver.find_element(By.ID,value)
         element = WebDriverWait(self.driver, timeout).until(
             lambda x: x.find_element(locator_type, locator_value))
         logger.info('[%s]元素识别成功' % element_name)
         return element
     except Exception as e:
         logger.error('[%s]识别失败,失败原因%s' % (element_name, e.__str__()))
         self.screentshot_as_file()
예제 #13
0
 def click(self, element_info):
     element = self.find_element(element_info)
     try:
         element.click()
         logger.info('[%s]元素进行点击操作' % element_info['element_name'])
     except Exception as e:
         logger.error('[%s]元素进行点击操作失败,原因是%s' % e.__str__())
예제 #14
0
    def find_element(self, element_info):
        """
        根据提供的元素参数信息进行元素查找
        :param element_info: 元素信息,字典类型
        :return: element对象
        """
        try:
            locator_type_name = element_info['locator_type']
            locator_value_info = element_info['locator_value']
            locator_timeout = element_info['timeout']
            if locator_type_name == 'id':
                locator_type = By.ID
            elif locator_type_name == 'class':
                locator_type = By.CLASS_NAME
            elif locator_type_name == 'xpath':
                locator_type = By.XPATH
            elif locator_type_name == 'link_text':
                locator_type = By.LINK_TEXT
            elif locator_type_name == 'css_selector':
                locator_type = By.CSS_SELECTOR
            elif locator_type_name == 'name':
                locator_type = By.NAME
            elif locator_type_name == 'partial_link_text':
                locator_type = By.PARTIAL_LINK_TEXT
            elif locator_type_name == 'tag_name':
                locator_type = By.TAG_NAME

            element = WebDriverWait(self.driver,locator_timeout)\
                .until(lambda x:x.find_element(locator_type, locator_value_info))
            logger.info('[%s]元素识别成功' % element_info['element_name'])
        except Exception as e:
            logger.error('[%s]元素不能识别,原因是%s' %
                         (element_info['element_name'], e.__str__()))
            self.screenshot_as_file()
        return element
예제 #15
0
 def get_alert_text(self):
     try:
         time.sleep(5)
         alert_text = self.driver.switch_to.alert.text
         logger.info('获取弹出框文本' + alert_text)
         return alert_text
     except Exception as e:
         logger.error('获取弹出框文本失败%s' % e)
예제 #16
0
 def get_text(self, element_info):
     try:
         element = self.find_element(element_info)
         test_text = element.text
         logger.info('获取文本成功' + test_text)
         return test_text
     except Exception as e:
         logger.error('获取文本失败%s' % e)
예제 #17
0
 def get(self, public_id):
     """get a user given its identifier"""
     LOG.error('=================---------------------- get a user..')
     user = get_a_user(public_id)
     if not user:
         api.abort(404, message='Nie znaleziono użytkownika')
     else:
         return build_json_result(user)
예제 #18
0
 def get_drop_down(self, element_info, index):
     try:
         element = self.find_element(element_info)
         li = element.find_elements_by_tag_name('li')
         select_text = str(li[int(index)].text)
         li[int(index)].click()
         logger.info('选择下拉框的内容为%s' % select_text)
     except Exception as e:
         logger.error('选择下拉框失败,失败原因为%s' % e)
예제 #19
0
 def input(self, element_info, content):
     try:
         element = self.find_element(element_info)
         element.send_keys(content)
         logger.info('[%s]元素输入数据: %s' %
                     (element_info['element_name'], content))
     except Exception as e:
         logger.error('[%s]元素输入数据错误, 错误为:%s' %
                      (element_info['element_name'], e.__str__()))
예제 #20
0
 def get(self):
     limit = request.args.get('limit')
     offset = request.args.get('offset')
     """List all registered users"""
     LOG.error('=================---------------------- getting all user..')
     LOG.warning(
         '=================---------------------- getting all user..')
     LOG.info(request.headers)
     return build_json_result(get_all_users(limit, offset))
예제 #21
0
 def click(self, element_info):
     element = self.find_element(element_info)
     try:
         element.click()
         logger.info('【%s】元素进行点击操作' % element_info['element_name'])
     except Exception as e:
         logger.error('【%s】元素不能点击,原因是:%s' %
                      (element_info['element_name'], e.__str__()))
         self.screenshot_as_file()
예제 #22
0
 def open_url(self, url=None):
     """
     浏览器操作封装
     """
     try:
         self.driver.get(url)
         logger.info('打开url地址%s' % url)
     except Exception as e:
         logger.error('无法打开指定网址,原因书%s' % e.__str__())
예제 #23
0
def get_access_token_api(session, url_params):
    logger.info('执行调用【get_access_token_api】开始')
    try:
        response = session.get(url='https://%s/cgi-bin/token' % config.HOSTS,
                               params=url_params)  # params 参数的值就可以试字典类型的url参数
    except RequestException as e:
        logger.error('请求出现异常,错误原因:%s' % e.__str__())
    finally:
        logger.info('执行调用【get_access_token_api】结算')
    return response
예제 #24
0
def get_access_token_api(session, url_params):
    logger.info('————————————执行调用get_access_token_api接口开始——————————')
    try:
        response = session.get(url='https://%s/cgi-bin/token' % config.HOSTS,
                               params=url_params)
    except RequestException as e:
        logger.error('请求出现异常,错误原因是:%s' % e.__str__())
    finally:
        logger.info('————————————执行调用get_access_token_api接口结束——————————')
    return response
예제 #25
0
 def driver(self):
     """
     根据driver名启动对应driver,不确定Windows和Mac是不是所有driver前缀名都一样
     """
     if 'chrome' in Config().driver_path:
         return self.__get_chrome_driver()
         logger.info('使用chrome浏览器打开')
     elif 'gecko' in Config().driver_path:
         return self.__get_firefox_driver()
         logger.info('使用firefox浏览器打开')
     else:
         logger.error('webdriver启动出错。')
예제 #26
0
 def click(self, element_info):
     """
     元素点击操作
     """
     element = self.find_element(element_info)
     try:
         element.click()
         logger.info('[%s]点击操作成功' % element_info['element_name'])
     except Exception as e:
         logger.error('[%s]元素点击失败,原因是%s' %
                      (element_info['element_name'], e.__str__()))
         self.screenshot_as_file()
예제 #27
0
def create_user_tag_api(session, hosts, token_id, post_data):
    # logger.info('调用create_user_tag接口')
    str_data = json.dumps(post_data, ensure_ascii=False)
    response = None
    try:
        response = session.post(
            url='https://%s/cgi-bin/tags/create?access_token=%s' %
            (hosts, token_id),
            data=str_data.encode('utf-8'))
    except RequestException as e:
        logger.error('调调用create_user_tag接口失败,原因是%s' %
                     e.__str__())  # e表示对象,把文档字符串打印出来
    return response
예제 #28
0
def get_access_token_api(session,
                         hosts,
                         appid,
                         secret,
                         grant_type='client_credential'):
    logger.info('调用获取access_token接口')
    get_param_dict = {
        "grant_type": grant_type,
        "appid": appid,
        "secret": secret
    }
    response = None
    try:
        response = session.get(url='https://%s/cgi-bin/token' % hosts,
                               params=get_param_dict)
    except RequestException as e:
        logger.error('调用获取access_token接口失败,原因是%s' % e.__str__())
    return response
예제 #29
0
 def find_element(self,element_info):
     try:
         locator_type_name=element_info['locator_type']
         locator_value_info=element_info['locator_value']
         locator_timeout=element_info['timeout']
         if locator_type_name =='id':
             locator_type=By.ID
         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))
         logger.info('[%s]元素识别成功'%element_info['element_name'])
     except Exception as e:
         logger.error('[%s]元素不能识别,原因是%s' % (element_info['element_name'], e.__str__()))
         self.screenshot_as_file()   #  失败后截屏
     return element
예제 #30
0
def get_access_token_apiget_access_token_api(session,
                                             HOSTS,
                                             secret,
                                             appid,
                                             grant_type='client_credential'):
    logger.info('开始验证是否能正常获取token_id')
    get_param_dict = {
        "grant_type": grant_type,
        "appid": appid,
        "secret": secret
    }
    try:
        response = session.get(url='https://%s/cgi-bin/token' % HOSTS,
                               params=get_param_dict,
                               verify=False)
        response = response.json()
    except RequestException as e:
        logger.error('调用获取access_token接口失败,原因是%s' % e.__str__())

    return response