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)
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)
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
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))
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!")
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)
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)
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)
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)
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)
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))
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)
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()
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
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())))
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))
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()
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("提交跳转出错")
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"
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)
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))
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()
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))
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()
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)
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
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
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()))