class RegisterPage(PageObject): def __init__(self, web_driver): super(RegisterPage, self).__init__(web_driver) self.elements_exist(*current_page) self._db = MysqlXjbTools() # @message_i_know_afterwards # @message_cancel_afterwards def register(self, phone_number, login_password): self.perform_actions( PHONE_NUMBER, phone_number, GET_VERIFICATION_CODE, PASSWORD, login_password, ) verification_code = self._db.get_sms_verify_code( mobile=phone_number, template_id='cif_register') self.perform_actions( VERIFICATION_CODE_INPUT, verification_code, LOGIN_PASSWORD_CONFIRM, SHOPPING_FIRST, ) page = huaxin_ui.ui_ios_xjb_2_0.home_page.HomePage(self.web_driver) return page @robot_log def register_binding_card(self, phone_number, login_password, trade_password): self.perform_actions(PHONE_NUMBER, phone_number, GET_VERIFICATION_CODE, PASSWORD, login_password) verification_code = self._db.get_sms_verify_code( mobile=phone_number, template_id='cif_register') self.perform_actions( VERIFICATION_CODE_INPUT, verification_code, ) self.perform_actions( LOGIN_PASSWORD_CONFIRM, BINDING_CARD, TRADE_PASSWORD, trade_password, TRADE_PASSWORD, trade_password, TRADE_PASSWORD_CONFIRM, ) page = BindingCardPage(self.web_driver) return page
class BankCardResignPage(PageObject): def __init__(self, web_driver): super(BankCardResignPage, self).__init__(web_driver) self._db = MysqlXjbTools() @robot_log def verify_page_title(self, last_no): self.assert_values( '尾号' + last_no + '银行卡重新签约', self.get_text(self.page_title, 'find_element_by_id')) page = self return page @robot_log def resign(self, mobile): self.assert_values( mobile, self.get_text('com.shhxzq.xjb:id/component_cet_mobile', 'find_element_by_id').replace(" ", "")) self.perform_actions(GET_VERIFY_CODE) verification_code = self._db.get_sms_verify_code( mobile=mobile, template_id='cif_bindBankCard') self.perform_actions(VERIFY_CODE_INPUT, verification_code, NEXT) page = huaxin_ui.ui_android_xjb_3_0.user_operation_succeed_page.UserOperationSucceedPage( self.web_driver) return page
class BankCardManagementPage(PageObject): def __init__(self, web_driver): super(BankCardManagementPage, self).__init__(web_driver) self.elements_exist(*current_page) self._db = MysqlXjbTools() @robot_log def binding_card(self, band_card_no, phone_number): self.perform_actions( SWIPE_START, SWIPE_STOP, 'U', SWIPE_STOP_CONFIRM, CARD_NO, band_card_no, PHONE_NO, phone_number, GET_VERIFY_CODE, ) verification_code = self._db.get_sms_verify_code( mobile=phone_number, template_id='cif_bindBankCard') self.perform_actions( VERIFY_CODE_INPUT, verification_code, BINDIND_CARD_CONFIRM, BINDIND_CARD_DONE, ) page = self return page @robot_log def delete_band_card(self, trade_password, last_card_no): self.perform_actions( BANK_CARD_FIRST, # BANK_CARD_LAST_CARD_NO % last_card_no, BANK_CARD_OPERATOR, BANK_CARD_DELETE, TRADE_PASSWORD, trade_password, BANK_CARD_DELETE_CONFIRM, ) page = self return page
class SettingModifyMobilePage(PageObject): def __init__(self, web_driver): super(SettingModifyMobilePage, self).__init__(web_driver) self.elements_exist(*current_page) self._db = MysqlXjbTools() @robot_log def modify_mobile(self, mobile_old, trade_password, mobile_new): self.perform_actions( TRADE_PASSWORD, trade_password, TRADE_PASSWORD_CONFIRM, RECEIVE_SMS, GET_VERIFY_CODE, ) verify_code = self._db.get_sms_verify_code( mobile=mobile_old, template_id='cif_changeMobile') self.perform_actions( TRADE_PASSWORD_VERIFY_CODE_INPUT, verify_code, VERIFY_CODE_CONFIRM, MOBILE, mobile_new, MOBILE_GET_VERIFY_CODE, ) verify_code = MysqlXjbTools().get_sms_verify_code( mobile=mobile_new, template_id='cif_changeMobile') self.perform_actions( MOBILE_VERIFY_CODE_INPUT, verify_code, MOBILE_CONFIRM, MODIFY_MOBILE_DONE, ) page = LoginPage(self.web_driver) return page
def add_credit_card(self, credit_card_no, phone_no): self.perform_actions( CREDIT_CARD_NO, credit_card_no, PHONE_NO, phone_no, GET_VERIFY_CODE, ) _db = MysqlXjbTools() verify_code = _db.get_sms_verify_code(mobile=phone_no, template_id='credit_bind_card') self.perform_actions(INPUT_VERIFY_CODE, verify_code, ADD_CREDIT_CARD_CONFIRM) page = huaxin_ui.ui_android_xjb_3_0.user_operation_succeed_page.UserOperationSucceedPage( self.web_driver) return page
def add_credit_card(self, credit_card_no, phone_no): self.perform_actions( ADD_CREDIT_CARD, CREDIT_CARD_NO, credit_card_no, # CARD_TYPE, PHONE_NO, phone_no, GET_VERIFY_CODE, ) _db = MysqlXjbTools() verify_code = _db.get_sms_verify_code(mobile=phone_no, template_id='credit_bind_card') self.perform_actions(VERIFY_CODE_INPUT, verify_code, ADD_CREDIT_CARD_CONFIRM) page = huaxin_ui.ui_ios_xjb_3_0.credit_card_add_finish_page.CreditCardAddFinishPage( self.web_driver) return page
def add_credit_card(self, credit_card_no, phone_no): time.sleep(3) self.perform_actions( CREDIT_CARD_NO, credit_card_no, PHONE_NO, phone_no, GET_VERIFY_CODE, ) _db = MysqlXjbTools() verify_code = _db.get_sms_verify_code(mobile=phone_no, template_id='credit_bind_card') self.perform_actions( INPUT_VERIFY_CODE, verify_code, ADD_CREDIT_CARD_CONFIRM, ) page = self return page
class BindingCardDetailPage(PageObject): def __init__(self, web_driver, device_id=None): super(BindingCardDetailPage, self).__init__(web_driver, device_id) self._db = MysqlXjbTools() @robot_log def verify_page_title(self): self.assert_values( '绑定银行卡', self.get_text('com.shhxzq.xjb:id/title_actionbar_orange', 'find_element_by_id')) page = self return page @robot_log def binding_card(self, bank_card_no, mobile): self.perform_actions( CARD_NO, bank_card_no, PHONE_NO, mobile, GET_VERIFY_CODE, ) verification_code = self._db.get_sms_verify_code( mobile=mobile, template_id='cif_bindBankCard') self.perform_actions(VERIFY_CODE_INPUT, verification_code, BINDIND_CARD_CONFIRM) page = huaxin_ui.ui_ios_xjb_3_0.useroperation_succeed_page.UserOperatinSucceedPage( self.web_driver) return page
class ProductPurchasePage(PageObject): def __init__(self, web_driver): super(ProductPurchasePage, self).__init__(web_driver) self._db = MysqlXjbTools() @robot_log def verify_page_title(self): self.assert_values( '买入', self.get_text(self.page_title, 'find_element_by_id')) page = self return page @robot_log def verify_purchase_amount(self, amount): default_amount_text = self.get_text( 'com.shhxzq.xjb:id/product_purchase_amt', 'find_element_by_id') default_amount = filter(lambda ch: ch in '0123456789.', default_amount_text) if float(amount) <= ASSERT_DICT['max']: self.assert_values('%.2f' % float(amount), default_amount) else: self.assert_values('%.2f' % ASSERT_DICT['max'], default_amount) page = self return page @robot_log def verify_product_purchase_page_details(self, product_name): self.assert_values( '现在买入', self.get_text('com.shhxzq.xjb:id/product_purchase_title', 'find_element_by_id')) self.assert_values( product_name, self.get_text('com.shhxzq.xjb:id/product_name', 'find_element_by_id')) self.assert_values( '剩余额度', self.get_text('com.shhxzq.xjb:id/purchase_limit_title', 'find_element_by_id')) self.assert_values( '买入金额', self.get_text('com.shhxzq.xjb:id/amount_title', 'find_element_by_id')) self.assert_values( '付款账户', self.get_text('com.shhxzq.xjb:id/payment_type_title', 'find_element_by_id')) self.assert_values( 'True', str(self.element_exist("//android.widget.TextView[@text='应付金额']"))) page = self return page @robot_log def buy_finance_product(self, amount, trade_password=None, mobile=None, cash_management_product=None, points='N', nonsuperposed_coupon='N', superposed_coupon='N', age=None): ASSERT_DICT.update({'success_flag': '0'}) self.perform_actions(AMOUNT, amount) if cash_management_product is not None: self.perform_actions( PAYMENT_TYPE, SWIPE_BEGIN, CASH_MANAGEMENT_PRODUCT_SWIPE_STOP % cash_management_product, 'U') if cash_management_product == 'UI作为支付手段异常测试': self.assert_values( '余额不足', self.get_text('com.shhxzq.xjb:id/not_sufficient_prompt', 'find_element_by_id')) page = self return page else: self.perform_actions(CASH_MANAGEMENT_PRODUCT % cash_management_product) if points == 'Y': self.perform_actions(POINT_SWITCH) time.sleep(5) # if nonsuperposed_coupon == 'Y': # self.perform_actions(COUPONS_INFO) # # time.sleep(10) # # self.perform_actions(SWIPE_BEGIN, NONSUPERCOMPOSED_COUPON_SWIPE_STOP, 'U', # COUPONS, # COUPONS_CONFIRM) # # if superposed_coupon == 'Y': # self.perform_actions(COUPONS_INFO) # # time.sleep(10) # self.perform_actions(COUPON_SWIPE_BEGAIN, SUPERCOMPOSED_COUPON_SWIPE_STOP, 'U', # SUPERPOSED_COUPON_1, # SUPERCOMPOSED_COUPON_SWIPE_BEGAIN, SUPERCOMPOSED_COUPON_SWIPE_STOP_1, 'U', # SUPERPOSED_COUPON_2, # COUPONS_CONFIRM) self.perform_actions(SWIPE_BEGIN, COMFIRM_BUTTON_SWIPE_STOP, 'U', BUY_CONFIRM) xjb_assets = ASSERT_DICT['xjb_total_assets_login'] if 1 <= float(amount) < float(xjb_assets): ASSERT_DICT.update({'success_flag': '1'}) if age >= 70: self.assert_values( '风险提示', self.get_text('com.shhxzq.xjb:id/alertTitle', 'find_element_by_id')) self.assert_values( '您已满70周岁,确认继续购买?', self.get_text('com.shhxzq.xjb:id/message', 'find_element_by_id')) self.perform_actions(KEEP_BUY) time.sleep(2) # 数据库数据更新有点滞后 verification_code = self._db.get_sms_verify_code( mobile=mobile, template_id='as_risk_match') self.perform_actions(VERIFY_CODE_INPUT, verification_code, VERIFY_CODE_CONFIRM) if float(amount) >= 5000000: self.assert_values( '风险提示', self.get_text('com.shhxzq.xjb:id/alertTitle', 'find_element_by_id')) self.assert_values( '您的交易金额为500万,确认继续购买?', self.get_text('com.shhxzq.xjb:id/message', 'find_element_by_id')) self.perform_actions(KEEP_BUY) self.assert_values( '输入短信验证码', self.get_text('com.shhxzq.xjb:id/tv_dialog_title', 'find_element_by_id')) self.assert_values( True, self.element_exist( "//android.widget.Button[contains(@text,'后重发')]")) self.assert_values( True, self.element_exist("//android.widget.Button[@text='确认']")) page = self else: self.perform_actions(TRADE_PASSWORD, trade_password) page = huaxin_ui.ui_android_xjb_3_0.user_operation_succeed_page.UserOperationSucceedPage( self.web_driver) elif float(amount) > float(xjb_assets): self.perform_actions(CANCEL_BUTTON) page = self else: page = self return page
class BindingCardDetailPage(PageObject): def __init__(self, web_driver, device_id=None): super(BindingCardDetailPage, self).__init__(web_driver, device_id) self._db = MysqlXjbTools() @robot_log def verify_page_title(self): self.assert_values( '绑定银行卡', self.get_text(self.page_title, 'find_element_by_id')) page = self return page @robot_log def binding_card(self, bank_card_no, mobile): self.perform_actions( CARD_NO, bank_card_no, PHONE_NO, mobile, GET_VERIFY_CODE, ) last_card_no = bank_card_no[-4:] ASSERT_DICT.update({'last_card_no': last_card_no}) verification_code = self._db.get_sms_verify_code( mobile=mobile, template_id='cif_bindBankCard') self.perform_actions(VERIFY_CODE_INPUT, verification_code, BINDIND_CARD_CONFIRM) page = huaxin_ui.ui_android_xjb_3_0.user_operation_succeed_page.UserOperationSucceedPage( self.web_driver) return page @robot_log def verify_user_information(self, id_no, user_name, id_type='id_card'): user_information = self.get_text('com.shhxzq.xjb:id/dtv_user_info', 'find_element_by_id') name_text = user_information.split('\n\n')[0] id_text = user_information.split('\n\n')[1] name = name_text.split(':')[0] name_detail = name_text.split(':')[1] id_type_detail = id_text.split(':')[0] id_detail = id_text.split(':')[1] self.assert_values('姓 名', name) self.assert_values(user_name, name_detail) self.assert_values(id_no, id_detail) if id_type == 'HK_laissez_passer': self.assert_values('港澳通行证', id_type_detail) elif id_type == 'T_laissez_passer': self.assert_values('台湾通行证', id_type_detail) elif id_type == 'id_card': self.assert_values('身份证', id_type_detail) page = self return page @robot_log def modify_user_information(self): self.perform_actions(MODIFY) page = self return page @robot_log def binding_card_input_user_information(self, banding_card_user_name, id_no, id_type='id_card'): self.perform_actions(USER_NAME, banding_card_user_name) if id_type == 'laissez_passer': self.perform_actions(ID_TYPE) self.assert_values( '选择证件类型', self.get_text('com.shhxzq.xjb:id/tv_title', 'find_element_by_id')) self.perform_actions(SWIPE_BEGIN, SCROLL, 'U', ID_TYPE_COMPLETE) self.perform_actions(ID, id_no, NEXT) page = self return page def binding_card_first_time(self, bank_card_no, mobile): self.perform_actions( CARD_NO, bank_card_no, PHONE_NO, mobile, GET_VERIFY_CODE, ) last_card_no = bank_card_no[-4:] ASSERT_DICT.update({'last_card_no': last_card_no}) verification_code = self._db.get_sms_verify_code( mobile=mobile, template_id='cif_bindBankCard') self.perform_actions(VERIFY_CODE_INPUT, verification_code, BINDIND_CARD_CONFIRM) page = huaxin_ui.ui_android_xjb_3_0.binding_card_complete_page.BindingCardCompletePage( self.web_driver) return page
class BindingCardPage(PageObject): def __init__(self, web_driver, device_id=None): super(BindingCardPage, self).__init__(web_driver, device_id) self._db = MysqlXjbTools() @robot_log def verify_page_title(self): self.assert_values( '绑定银行卡', self.get_text('com.shhxzq.xjb:id/title_actionbar', 'find_element_by_id')) page = self return page # @user_info_close_afterwards # @gesture_close_afterwards def binding_card(self, user_name, id_no, band_card_no, phone_number): self.perform_actions( USER_NAME, user_name, ID_NO, id_no, CARD_NO, band_card_no, PHONE_NUMBER, phone_number, GET_VERIFY_CODE, ) verification_code = MysqlXjbTools().get_sms_verify_code( mobile=phone_number, template_id='cif_bindBankCard') self.perform_actions(VERIFY_CODE_INPUT, verification_code, BINDIND_CARD_CONFIRM) page = huaxin_ui.ui_android_xjb_3_0.binding_card_complete_page.BindingCardCompletePage( self.web_driver) return page @robot_log def certificated_user_binding_bank_card(self, bank_card_no, mobile): self.perform_actions( CARD_NO, bank_card_no, PHONE_NUMBER, mobile, GET_VERIFY_CODE, ) verification_code = self._db.get_sms_verify_code( mobile=mobile, template_id='cif_bindBankCard') self.perform_actions(VERIFY_CODE_INPUT, verification_code, BINDIND_CARD_CONFIRM) page = huaxin_ui.ui_android_xjb_3_0.user_operation_succeed_page.UserOperationSucceedPage( self.web_driver) return page @robot_log def go_to_binding_card_detail_page(self, device_id): self.perform_actions(INPUT_ID_INFORMATION) page = huaxin_ui.ui_android_xjb_3_0.binding_card_detail_page.BindingCardDetailPage( self.web_driver, device_id) return page
class CreditCardRepayPage(PageObject): def __init__(self, web_driver): super(CreditCardRepayPage, self).__init__(web_driver) self.elements_exist(*current_page) self._db = MysqlXjbTools() @robot_log def delete_credit_card(self, last_card_no, trade_password): self.perform_actions( CREDIT_CARD % last_card_no, CREDIT_CARD_CONFIRM, CREDIT_CARD_OPERATION, CREDIT_CARD_DELETE, TRADE_PASSWORD, trade_password, CREDIT_CARD_DELETE_CONFIRM, ) page = self return page @robot_log def add_credit_card(self, credit_card_no, phone_no): self.perform_actions( ADD_CREDIT_CARD, CREDIT_CARD_NO, credit_card_no, CARD_TYPE, PHONE_NO, phone_no, GET_VERIFY_CODE, ) verify_code = self._db.get_sms_verify_code( mobile=phone_no, template_id='credit_bind_card') self.perform_actions( VERIFY_CODE_INPUT, verify_code, ADD_CREDIT_CARD_CONFIRM, ADD_CREDIT_CARD_DONE, ) page = self return page # 信用卡还款 @robot_log def repay(self, repay_amount, trade_password): self.perform_actions(CREDIT_CARD_SELECTED, REPAY_AMOUNT, repay_amount, REPAY_CONFIRM, TRADE_PASSWORD, trade_password, REPAY_DONE) page = self return page # 转到预约还款页面 @robot_log def go_to_reserved_pay_page(self): self.perform_actions( CREDIT_CARD_SELECTED, RESERVATION_PAY, ) page = ReservedPayPage(self.web_driver) return page # 取消预约还款 @robot_log def cancel_reservation(self): self.perform_actions(CREDIT_CARD_SELECTED, CANCEL_RESERVATION, CANCEL_RESERVATION_CONFIRM) page = ReservedPayPage(self.web_driver) return page # 添加信用卡还款提醒 @robot_log def add_repayment_warn(self): self.perform_actions( CREDIT_CARD_SELECTED, CREDIT_CARD_SELECTED_DETAIL, # REPAYMENT_WARN_SET, REPAYMENT_WARN_SWITCH, # REPAYMENT_WARN_DATE, REPAYMENT_WARN_DATE_COMFIRM, ) # 取消信用卡还款提醒 @robot_log def cancel_repayment_warn(self): self.perform_actions( CREDIT_CARD_SELECTED, CREDIT_CARD_SELECTED_DETAIL, # REPAYMENT_WARN_SET, REPAYMENT_WARN_SWITCH, # REPAYMENT_WARN_DATE, REPAYMENT_WARN_DATE_CANCEL, )
class SettingModifyMobilePage(PageObject): def __init__(self, web_driver, device_id): super(SettingModifyMobilePage, self).__init__(web_driver, device_id) self.elements_exist(*current_page) self._db = MysqlXjbTools() @robot_log def verify_page_title(self): self.assert_values( '修改绑定手机', self.get_text(self.page_title, 'find_element_by_id')) page = self return page @robot_log def modify_mobile(self, mobile_old, trade_password, mobile_new): self.perform_actions( TRADE_PASSWORD, trade_password, TRADE_PASSWORD_CONFIRM, RECEIVE_SMS, GET_VERIFY_CODE, ) verify_code = self._db.get_sms_verify_code( mobile=mobile_old, template_id='cif_changeMobile') self.perform_actions( TRADE_PASSWORD_VERIFY_CODE_INPUT, verify_code, VERIFY_CODE_CONFIRM, MOBILE, mobile_new, MOBILE_GET_VERIFY_CODE, ) verify_code = MysqlXjbTools().get_sms_verify_code( mobile=mobile_new, template_id='cif_changeMobile') self.perform_actions( MOBILE_VERIFY_CODE_INPUT, verify_code, MOBILE_CONFIRM, MODIFY_MOBILE_DONE, ) page = huaxin_ui.ui_android_xjb_3_0.login_page.LoginPage( self.web_driver) return page @robot_log def modify_mobile_without_sms(self, mobile_old, trade_password, mobile_new): self.perform_actions( TRADE_PASSWORD, trade_password, TRADE_PASSWORD_CONFIRM, RECEIVE_SMS, GET_VERIFY_CODE, ) verify_code = self._db.get_sms_verify_code( mobile=mobile_old, template_id='cif_changeMobile') self.perform_actions( TRADE_PASSWORD_VERIFY_CODE_INPUT, verify_code, VERIFY_CODE_CONFIRM, MOBILE, mobile_new, MOBILE_GET_VERIFY_CODE, ) verify_code = MysqlXjbTools().get_sms_verify_code( mobile=mobile_new, template_id='cif_changeMobile') self.perform_actions( MOBILE_VERIFY_CODE_INPUT, verify_code, MOBILE_CONFIRM, MODIFY_MOBILE_DONE, ) page = huaxin_ui.ui_android_xjb_3_0.login_page.LoginPage( self.web_driver) return page @robot_log def go_to_upload_materials_page(self, device_id=None): self.perform_actions(NOT_RECEIVE_SMS) # time.sleep(2) # self.assert_values('华信现金宝', self.get_text('com.shhxzq.xjb:id/title_actionbar', 'find_element_by_id')) # # self.click_screen(x=0.5, y=0.757) page = huaxin_ui.ui_android_xjb_3_0.upload_materials_page.UploadMaterialsPage( self.web_driver, device_id) return page