Exemplo n.º 1
0
    def is_login_success(self):
        '''
        Assert function: judge is it success! Collect useful data 
        '''

        try:
            self.sleep(1)
            account = self.login_account
            IsSuccess = "success"
            ReturnCode = 0
            result = True
            format_logger = ' ' * 43
            error_info = None
            logger.info("{3}!\n{0}- 测试账户:{1}\n{2}".format(
                format_logger, account, format_logger, IsSuccess))
            print("Test success!")
            print("Test Account:{}".format(account))
        except Exception as e:
            error_info = self.save_screen_shot()  # 错误时保存截图:图片名称
            logger.error("Test Fail!Reason:{}".format(str(e)))
            ReturnCode = 1
            IsSuccess = "Fail"
            result = False
            print("Test fail!")
            print("Error Reason:{}".format(e))
        finally:
            payload = {
                "result": result,
                "data": {
                    "ReturnCode": ReturnCode,
                    "IsSuccess": IsSuccess
                },
                "Exception": error_info
            }
            return payload
Exemplo n.º 2
0
 def __init__(self, ip, password=None, port=6379, db=0):
     #构造函数
     try:
         self.r = redis.Redis(host=ip, password=password, port=port, db=db)
         # r = redis.ConnectionPool(host=ip,password=password,port=port,db=db)
     except Exception as e:
         logger.error('redis连接失败,错误信息%s' % e)
Exemplo n.º 3
0
    def test_injection_page(self):
        '''注资页面跳转'''
        test_action = get_func_name()
        try:
            JPage = InjectionPage(self.driver)  # 网上存款页面类
            JPage.click_injection_button
            JPage.into_bank_page
            n = JPage.get_payway_number
            bank_detail = JPage.get_payway_detail1

            assert n
            result = self.result[0]
            ReturnCode = 0
            print("Test Success!\n ")
            print("当前可用支付通道数目:{}\n".format(n))
            print("通道明细:{}".format(bank_detail))

        except Exception as e:
            print(str(e))
            result = self.result[1]
            ReturnCode = 1
            logger.error("Test Fail! Reason:{}".format(e))
        finally:
            data = {test_action: {"result": result, "ReturnCode": ReturnCode}}
            self.data["suite"].update(data)
Exemplo n.º 4
0
 def find_element(self, locator):
     try:
         element = self.wait.until(EC.presence_of_element_located(locator))
         logger.info("Had find the element {}".format(element.text))
         return element
     except NoSuchElementException as e:
         logger.error("NoSuchElementException: %s" % e)
Exemplo n.º 5
0
 def exchange_to_window(self, handle):
     try:
         self.driver.switch_to.window(handle)
         logger.info("Has change to {} window page!".format(handle))
     except Exception:
         logger.error(
             "Current number of windows is only one,unable to exchange!")
Exemplo n.º 6
0
 def click(self, locator):
     el = self.find_element(locator)
     try:
         el.click()
         logger.info("The element \' %s \' was clicked.")
     except NameError as e:
         logger.error("Failed to click the element with %s" % e)
Exemplo n.º 7
0
    def test_payment_channel2(self):
        '''支付通道2测试'''
        test_action = get_func_name()
        money = Config().get("money")
        try:
            CS = ChannelSelect(self.driver).select
            DPage2 = CS(self.driver)

            PaywayName = DPage2.get_payway_name(cn=0)
            Banklist, Bank_dic, Test_bank = DPage2.get_bank_detail
            DPage2.sumbit(money)
            bank_handle = DPage2.exchange_bank_page
            DPage2.close_bank_page(bank_handle)
            DPage2.return_payment_page

            assert bank_handle
            print("Test Success! ")
            print("Test PayWay:{}".format(PaywayName))
            print("Test BankName:{}".format(Test_bank))
            print("Available banks:{}".format(Banklist))
            print(Bank_dic)
            result = self.result[0]
            ReturnCode = 0
            logger.info("第三方支付跳转成功")
        except Exception as e:
            result = self.result[1]
            ReturnCode = 1
            logger.error("Test Fail! Reason:{}".format(e))
        finally:
            time.sleep(1)
            data = {test_action: {"result": result, "ReturnCode": ReturnCode}}
            self.data["suite"].update(data)
Exemplo n.º 8
0
    def test_payment_channel1(self):
        '''支付通道1跳转'''
        money = Config().get("money")
        test_action = get_func_name()
        try:
            CS = ChannelSelect(self.driver).select
            DPage = CS(self.driver)
            PaywayName = DPage.get_payway_name(cn=1)  # 选择第一个支付通道,获取
            DPage.sumbit(money)  # 提交
            bank_handle = DPage.exchange_bank_page
            element = DPage.is_element_exist
            DPage.close_bank_page(bank_handle)
            DPage.return_payment_page

            assert element

            print("Test Success! ")
            print("Test PayWay:{}".format(PaywayName))
            result = self.result[0]
            ReturnCode = 0
            logger.info("第三方支付跳转成功")
        except Exception as e:
            print(str(e))
            result = self.result[1]
            ReturnCode = 1
            logger.error("Test Fail! Reason:{}".format(e))
        finally:
            time.sleep(1)
            data = {test_action: {"result": result, "ReturnCode": ReturnCode}}
            self.data["suite"].update(data)
Exemplo n.º 9
0
    def query(self, sql, params=None, datasize=1):
        self.datasize = datasize
        """
        参数sql:包含%s的sql字符串,当params=None的时候,不包含%s
        参数params:一个元祖,默认为None
        参数datasize:0-返回所有结果   1-每次返回一条结果   n-每次返回n条结果
        """
        try:
            # 执行SQL语句
            self.cur.execute(sql, params)
            # 获取数据的行数
            row = self.cur.rowcount
            # 获取查询数据
            """
            cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','title'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。
            cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title'))
            cursor.fetchmany(n):每次抓取n条记录,该方法返回一个由n条记录组成的列表
            """
            if self.datasize == 1:
                dataList = self.cur.fetchone()
            elif self.datasize == 0:
                dataList = self.cur.fetchall()
            else:
                dataList = self.cur.fetchmany(self.datasize)
        except:
            logger.error("Error: unable to fetch data")

        return dataList, row
Exemplo n.º 10
0
 def clear(self, locator):
     el = self.find_element(locator)
     try:
         el.clear()
         logger.info("Clear text in input box before typing.")
     except NameError as e:
         logger.error("Failed to clear in input box with %s" % e)
         self.get_windows_img()
Exemplo n.º 11
0
 def get_el_text(self, locator):
     el = self.find_element(locator)
     try:
         return el.text
         logger.info("The element \' %s \' was clicked." % el.text)
     except Exception as e:
         logger.error("Failed to get the text of the element .Reason: %s" %
                      e)
Exemplo n.º 12
0
 def select_payway(self, cn):
     '''pay way name method'''
     try:
         self.payways_elements[cn].click()  # 选择支付通道一
         payway = self.payways_elements[cn].text  # 获取支付通道名字
         return payway
     except Exception:
         logger.error("Payway does not exist")
Exemplo n.º 13
0
 def find_elements(self, locator):
     try:
         elements = self.wait.until(
             EC.presence_of_all_elements_located(locator))
         logger.info("Had find the element {}".format(len(elements)))
         return elements
     except NoSuchElementException as e:
         logger.error("NoSuchElementException: %s" % e)
Exemplo n.º 14
0
 def close_bank_page(self, bank_handle):
     '''close bank page,return to payment page'''
     try:
         self.close  # 关闭第三方支付页面
         self.exchange_to_window(bank_handle)  # 返回支付页面
         logger.info("return to payment page!")
     except Exception as e:
         pass
         logger.error("Error !Reason:{}".format(e))
Exemplo n.º 15
0
    def input_money(self, money):
        '''提交操作'''
        try:
            self.clear(self.loc_input_money)
            self.type(money, self.loc_input_money)

            logger.info("input inject money:{}...".format(money))
        except Exception:
            logger.error("提交跳转出错")
Exemplo n.º 16
0
 def type(self, text, locator):
     el = self.find_element(locator)
     el.clear()
     try:
         el.send_keys(text)
         logger.info("Had type \' %s \' in inputBox" % text)
     except NameError as e:
         logger.error("Failed to type in input box with %s" % e)
         self.get_windows_img()
Exemplo n.º 17
0
def close_driver(driver):
    """
    Recebe driver por parametro e desliga-lo
    """
    try:
        logger.info("Fechando driver")
        driver.close()
    except Exception as error:
        logger.critical("Erro ao desligar driver")
        logger.error(error)
Exemplo n.º 18
0
 def exchange_bank_page(self):
     '''turn to bank payment page'''
     try:
         handles = self.collect_handles
         current_handle = self.current_window
         for handle in handles:
             if handle != current_handle:
                 self.exchange_to_window(handle)  # 切换到到第三方支付页面
                 logger.info(
                     'switch bank page!Page handle: {}'.format(handle))
                 return current_handle
     except Exception as e:
         logger.error("{}".format(e))
Exemplo n.º 19
0
def write_ipt_by_id(id=None, text=None):
    """ Recebe "id" por parametro e o texto a ser escrito no campo. 
    Escreve o "text" em um input com "id" recebido por parametro.
    """
    try:
        if id is None or text is None:
            logger.critical("id ou text não informado")
        else:
            logger.debug("Escrevendo no campo by id: {}".format(id))
            time.sleep(1)
            driver.find_element_by_id(id).send_keys(text)
    except Exception as error:
        logger.error("Erro ao Escrevendo no campo by xpath: {}".format(id))
        logger.error(error)
Exemplo n.º 20
0
def click_btn_by_class(id_class=None):
    """ Recebe "classe" por parametro. 
    Clica em um botão com "class" recebida por parametro.
    """
    try:
        if id_class is None:
            logger.critical("id_class não informado")
        else:
            logger.debug("Clicando no botão by classe: {}".format(id_class))
            time.sleep(1)
            driver.find_element_by_class_name(id_class).click()
    except Exception as error:
        logger.error("Erro ao clicar no botão by classe: {}".format(id_class))
        logger.error(error)
Exemplo n.º 21
0
def click_btn_by_id(id=None):
    """ Recebe "id" por parametro. 
    Clica em um botão com "id" recebido por parametro.
    """
    try:
        if id is None:
            logger.critical("id não informado")
        else:
            logger.debug("Clicando no botao by id: {}".format(id))
            time.sleep(1)
            driver.find_element_by_id(id).click()
    except Exception as error:
        logger.error("Erro ao clicar no botão by id: {}".format(id))
        logger.error(error)
Exemplo n.º 22
0
def return_element_by_id(id=None):
    """
    Retorna um elemento a partir do "id" recebido
    """
    try:
        if id is None:
            logger.critical("id não informado")
            return
        else:
            logger.info("Retornando elemento by id")
            return driver.find_element_by_id(id)
    except Exception as error:
        logger.error("Erro ao retornar arquivo by id")
        logger.error(error)
Exemplo n.º 23
0
    def save_screen_shot(self, name='XSTZ_WAP'):
        day = time.strftime('%Y%m%d', time.localtime(time.time()))
        screenshot_path = REPORT_PATH + '\screenshot_%s' % day

        if not os.path.exists(screenshot_path):
            os.makedirs(screenshot_path)
        rt = time.strftime('%H%M%S', time.localtime(time.time()))
        try:
            screenshot = self.driver.save_screenshot(
                screenshot_path + '\\%s_%s.png' % (name, rt))  # 截图命名及保存位置
            return screenshot
        except NameError as e:
            logger.error("Failed to take screenshot! %s" % e)
            self.get_windows_img()
Exemplo n.º 24
0
def login():
    """ 
    Responsavel por realizar login na app
    """
    try:
        init()
        logger.debug("Music: Realizando login")
        fw.click_btn_by_xpath(INITIAL_BT_XPATH)
        fw.write_ipt_by_xpath(LG_USERNAME_IPT_XPATH, USERNAME)
        fw.click_btn_by_id(LG_USERNAME_BTN_ID)
        fw.write_ipt_by_xpath(LG_PASSWORD_IPT_XPATH, PASSWORD)
        fw.click_btn_by_id(LG_PASSWORD_BTN_ID)
    except Exception as error:
        logger.error("Music - Erro ao realizar login")
        logger.error(error)
Exemplo n.º 25
0
def click_btn_by_xpath(xpath=None):
    """ Recebe "xpath" por parametro. 
    Clica em um botão com "xpath" recebido por parametro.
    """
    try:
        if xpath is None:
            logger.critical("id não informado")
        else:
            logger.debug("Clicando no botão by xpath: {}".format(xpath))
            time.sleep(1)
            driver.find_element_by_xpath(xpath).click()
    except Exception as error:
        print(error)
        logger.error("Erro ao clicar no botão by xpath: {}".format(xpath))
        logger.error(error)
Exemplo n.º 26
0
def write_ipt_by_xpath(xpath=None, text=None):
    """ Recebe "xpath" por parametro e o "texto" a ser escrito no campo. 
    Escreve o "text" em um input com "xpath" recebido por parametro.
    """
    try:
        if xpath is None or text is None:
            logger.critical("Xpath ou text não informado")
            return
        else:
            logger.debug("Escrevendo no campo by id: {}".format(xpath))
            time.sleep(1)
            driver.find_element_by_xpath(xpath).send_keys(text)
    except Exception as error:
        logger.error("Erro ao Escrevendo no campo by xpath: {}".format(xpath))
        logger.error(error)
Exemplo n.º 27
0
def start():
    print('#---------------PROCESSO INICIADO----------------#')
    logger.info('#---------------PROCESSO INICIADO----------------#')
    try:
        music.login()
        discord.login()
        var = 1
    except Exception as error:
        logger.critical("Processo finalizado com ERRO")
        logger.error(error)
        logger.info('#---------------PROCESSO FINALIZADO----------------#')
        print('#---------------PROCESSO FINALIZADO----------------#')
        sys.exit(1)
    logger.info('#---------------PROCESSO FINALIZADO----------------#')
    print('#---------------PROCESSO FINALIZADO----------------#')
    sys.exit(0)
Exemplo n.º 28
0
    def save_screen_shot(self, name='XSTZ_WAP'):
        day = time.strftime('%Y%m%d', time.localtime(time.time()))
        png_path = REPORT_PATH + '\screenshot_%s' % day

        if not os.path.exists(png_path):
            os.makedirs(png_path)

        rt = time.strftime('%H%M%S', time.localtime(time.time()))
        try:
            img_name = '\\%s_%s.png' % (name, rt)
            self.driver.get_screenshot_as_file(
                '%s%s' % (png_path, img_name))  # 截图命名及保存位置
            return img_name

        except NameError as e:
            logger.error("Failed to take screenshot! %s" % e)
            self.save_screen_shot()
Exemplo n.º 29
0
    def is_deposit_success(self, locator, element):
        '''
        Return:
            Payload , is the source data for send Email,Dingding Robot, 
            insert Influxdb
        '''
        try:
            self.submit  # 判断是否可以正常进行提交
        except Exception:
            error_info = self.save_screen_shot()  # 错误时保存截图:图片名称
            ReturnCode = 1
            IsSuccess = "Fail"
            result = False
            self.back()  # 返回上一页面
        else:  # 如果可以正常提交,进入第三支付页面,异常判断
            try:
                bank_handle = self.exchange_bank_page  # 跳转第三方网银支付页面操作
                self.find_element((locator, element))
                IsSuccess = "success"
                ReturnCode = 0
                result = True
                error_info = None
                print("Test Success!\n ")
                logger.info("第三方支付跳转成功")
            except Exception:
                error_info = self.save_screen_shot()  # 错误时保存截图:图片名称
                ReturnCode = 1
                IsSuccess = "Fail"
                result = False
                print("Test fail!")
                logger.error("支付页面崩溃或超时!")
            finally:
                self.close_bank_page(bank_handle)
                self.return_payment_page

        finally:
            payload = {
                "result": result,
                "data": {
                    "ReturnCode": ReturnCode,
                    "IsSuccess": IsSuccess,
                },
                "Exception": error_info
            }

            return payload
Exemplo n.º 30
0
def get_x_request_id(is_logger_call=False):
    """
    @summary: 获取APP请求头唯一标识 x-request-id
    """
    try:
        x_request_id = ''
        http_request = get_request()
        if hasattr(http_request, 'META'):
            meta = http_request.META
            x_request_id = meta.get('HTTP_X_REQUEST_ID', '') if isinstance(
                meta, dict) else ''
    except Exception as e:
        # 如果是logger函数调用则不可将异常写入日志,否则可能会引起死循环
        # 非logger调用此函数的可以使用logger
        if not is_logger_call:
            logger.error(u"get_x_request_id: %s" % e)
        x_request_id = ''
    return x_request_id