Beispiel #1
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)
Beispiel #2
0
 def delete(self, k):
     tag = self.r.exists(k)  #判断这个key是否存在
     if tag:
         self.r.delete(k)
         logger.info('%s删除成功' % k)
     else:
         logger.info('这个key%s不存在' % k)
Beispiel #3
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
Beispiel #4
0
    def send(self):
        self.msg["Subject"] = self.title
        self.msg["From"] = self.sender
        self.msg["To"] = self.receiver

        #邮件正文
        if self.message:
            self.msg.attach(MIMEText(self.message))

        # 添加附件,支持多个附件(传入list),或者单个附件(传入str)
        if self.files:
            if isinstance(self.files, list):
                for f in self.files:
                    self._attach_file(f)

            elif isinstance(self.files, str):
                self._attach_file(self.files)

        #连接服务器并发送
        try:
            smtp_server = smtplib.SMTP(self.server)  #连接server
        except (gaierror and error) as e:
            logger.exception("发送邮件失败,无法连接到SMTP服务器,检查SMTP服务器及网络.%s", e)
        else:
            try:
                smtp_server.login(self.sender, self.password)  #登录
            except smtplib.SMTPAuthenticationError as e:
                logger.exception("用户名及密码验证失败--%s", e)
            else:
                smtp_server.sendmail(self.sender, self.receiver.split(";"),
                                     self.msg.as_string())  #发送邮件
            finally:
                smtp_server.quit()  #断开连接
                logger.info('发送邮件"{0}"成功! 收件人:{1}。如果没有收到邮件,请检查垃圾箱,'
                            '同时检查收件人地址是否正确'.format(self.title, self.receiver))
Beispiel #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!")
Beispiel #6
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)
Beispiel #7
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)
Beispiel #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)
Beispiel #9
0
 def clear_anykeys(self, pattern):
     keys = self.r.keys(pattern=pattern)
     if len(keys) == 0:
         logger.info('没有查询到匹配%s的key值' % pattern)
     else:
         self.r.delete(*keys)
         logger.info('匹配%s的key值清除成功' % pattern)
Beispiel #10
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)
Beispiel #11
0
 def _attach_file(self, att_file):
     """将单个文件添加到附件列表中"""
     att = MIMEText(open('%s' % att_file, 'rb').read(), 'plain', 'utf-8')
     att["Content-Type"] = 'application/octet-stream'
     file_name = re.split(r'[\\|/]', att_file)
     att["Content-Disposition"] = 'attachment; filename="%s"' % file_name[-1]
     self.msg.attach(att)
     logger.info('attach file {}'.format(att_file))
Beispiel #12
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)
Beispiel #13
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()
Beispiel #14
0
 def hash_del(self, name, k):
     res = self.r.hdel(name, k)
     if res:  #因为删除成功会返回1,删除失败返回0
         logger.info('删除成功')
         return 1
     else:
         logger.info('删除失败,该key不存在')
         return 0
Beispiel #15
0
 def __init__(self, browser_type='firefox'):
     self.browser = None
     self.driver = None
     self._type = browser_type.lower()
     if self._type in BROWSER_TYPE:
         self.browser = BROWSER_TYPE[self._type]
     else:
         logger.info('不支持的浏览器类型%s!仅支持%s' %
                     (self._type, ','.join(BROWSER_TYPE.keys())))
Beispiel #16
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))
Beispiel #17
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()
Beispiel #18
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("提交跳转出错")
Beispiel #19
0
def sync_data_view():
    """ sync database data
    :return:
    """
    for item in ScanConnDBSettingModel().all_list().get("data", []):
        scan_db = ScanConnDBSettingModel(**item)
        if scan_db.db_type.mysql == "mysql":
            scan_mysql(scan_db)
    logger.info("scan success")
    return "ok"
Beispiel #20
0
 async def _refreshIdentity() -> NoReturn:
     while True:
         logger.info("Start trying to login pixiv account")
         try:
             await PixivAPIRoot.login()
         except Exception:
             logger.exception("Exception occurred during trying to login account:")
         await asyncio.sleep(
             PixivConstants.CONFIG["account"]["refresh-interval"].as_number()
         )
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)
Beispiel #22
0
    def _attach_file(self, att_file):  # 将单个文件添加到附件列表中
        f = open(att_file, "rb")
        mail_body = f.read()
        f.close
        att = MIMEText(mail_body, 'plain', 'utf-8')
        att["Content-Type"] = 'application/octet-stream'

        file_name = re.split(r'[\\|/]', att_file)
        att["Content-Disposition"] = 'attachment; filename="%s"' % file_name[-1]
        self.msg.attach(att)
        logger.info('attach file {}'.format(att_file))
Beispiel #23
0
 def test_search(self):
     datas = ExcelReader(self.excel).data
     for d in datas:
         with self.subTest(data=d):
             self.sub_setUp()
             self.driver.find_element(*self.locator_kw).send_keys(
                 d['search'])
             self.driver.find_element(*self.locator_su).click()
             time.sleep(2)
             links = self.driver.find_elements(*self.locator_result)
             for link in links:
                 logger.info(link.text)
             self.sub_tearDown()
 def test_search_po(self):
     datas = ExcelReader(self.excel).data
     for d in datas:
         with self.subTest(data=d):
             self.sub_setUp_po()
             self.page.search(d['search'])
             time.sleep(2)
             self.page = BaiDuResultPage(self.page)  #页面跳转到result页面
             self.page.save_screen_shot()
             links = self.page.result_links
             for link in links:
                 logger.info(link.text)
             self.sub_tearDown_po()
Beispiel #25
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))
Beispiel #26
0
    def db_insert(self, table_name, table_data):
        """插入多条数据"""

        for key in table_data:
            table_data[key] = "'" + str(table_data[key]) + "'"
        key = ','.join(table_data.keys())
        value = ','.join(table_data.values())
        # print(type(value))
        # print(value.split(',')[0])
        real_sql = "INSERT INTO " + table_name + " (" + key + ") VALUES (" + value + ")"

        logger.info('执行SQL语句%s' % real_sql)
        self.cur.execute(real_sql)
        self.conn.commit()
Beispiel #27
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)
Beispiel #28
0
async def init_superuser(init_data: InitEsConnModel, user: UserInDBMode):
    revoke_data: dict = {"es_conn": False, "add_user": False}
    try:
        if init_data.conn().ping() and not init_data.save():
            revoke_data["es_conn"] = True

        if not user.create_index() and not user.save():
            revoke_data["add_user"] = True

        if len(revoke_data.values()) != sum(revoke_data.values()):
            init_data.delete()
    except Exception as e:
        logger.info(e)
    return revoke_data
Beispiel #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
Beispiel #30
0
    def __init__(self, browser_type='firefox'):
        self._type = browser_type.lower()  # 浏览器名字私有属性
        if self._type in TYPES:
            self.browser = TYPES[self._type]
            logger.info('Yod had select {} browser.'.format(self._type))
            if self._type == 'phantomjs':
                SERVICE_ARGS = ['--load-images=true', '--disk-cache=true']
                self.driver = self.browser(
                    executable_path=EXECUTABLE_PATH[self._type],
                    service_args=SERVICE_ARGS)
            self.driver = self.browser(
                executable_path=EXECUTABLE_PATH[self._type])

        else:
            raise UnSupportBrowserTypeError('仅支持%s!' % ', '.join(TYPES.keys()))
            self.driver = None
            logger.Error('仅支持%s!检测浏览器拼写!' % ', '.join(TYPES.keys()))