Пример #1
0
class ChangeFlow(object):

    def __init__(self, driver):
        self.mine_page = MinePage(driver)
        self.change_page = ChangePage(driver)
        self.common_page = CommonPage(driver)
        self.unionpay_page = UnionPayPage(driver)
        self.common_flow = CommonFlow(driver)
        self.setting_flow = SettingFlow(driver)

    @allure.story("进入零钱")
    def goto_change_page(self):
        self.mine_page.click_mine_tab()
        self.mine_page.click_my_assets()
        self.mine_page.click_change()

    @allure.story("开通三类户操作")
    def open_change_account(self, scene, support_nfc: bool, **kwargs):
        self.change_page.click_acticate_now()
        if self.change_page.assert_text_exist("实名认证"):
            self.setting_flow.real_name_verification(**kwargs)
            self.common_page.input_wallet_password_h5(kwargs["wallet_password"])
            self.common_page.input_wallet_password_h5(kwargs["wallet_password"])
        self.change_page.click_take_photo()
        self.change_page.press_key("back")
        self.change_page.click_supported_bank()
        self.common_page.click_back_arrow()
        self.change_page.input_bank_card_number(kwargs["bank_card_number"])
        self.change_page.click_next_step()
        self.change_page.input_mobile_number(kwargs["mobile_number"])
        self.change_page.click_profession()
        self.change_page.click_profession_group(kwargs["profession_group"])
        self.change_page.click_profession_item(kwargs["profession_item"])
        self.change_page.click_protocol_check_box()
        self.change_page.click_next_step()
        if scene == 1:
            # 生产环境
            self.change_page.click_start_verification()
            box('嗨!\n请进行人脸识别\n点击准备好了再让脸进入识别框里哈')
            self.change_page.face_recognition()
            self.common_flow.copy_verification_code_from_notification()
            self.change_page.long_click_verification_code_box()
            self.common_page.click_paste()
        elif scene == 2:
            # 测试环境
            self.change_page.input_verify_code(kwargs["verify_code"])
        self.change_page.click_next_step()
        if support_nfc is True:
            self.common_page.wait_loading()
            if self.change_page.check_text_existance("重试"):
                self.common_page.click_back_arrow()
            else:
                self.unionpay_page.wait_add_bank_card_process()
        self.change_page.assert_text_exist("充值")

    @allure.story('充值操作')
    def change_recharge(self, **kwargs):
        self.change_page.click_recharge()
        self.change_page.input_amount(kwargs["amount"])
        self.change_page.click_recharge_or_withdraw_now()
        if self.change_page.check_text_existance("首次充值需要填写验证码"):
            verify_code = "123521"  # todo 通过OCR识别获取验证码后输入到这里
            self.common_page.input_wallet_password(verify_code)
        self.common_page.input_wallet_password2(kwargs["wallet_password"])
        self.common_page.wait_loading()
        self.change_page.assert_text_exist("充值成功")
        self.change_page.click_complete()

    @allure.story('提现操作')
    def change_withdraw(self, **kwargs):
        self.change_page.click_withdraw()
        self.change_page.input_amount(kwargs["amount"])
        self.change_page.click_recharge_or_withdraw_now()
        self.common_page.input_wallet_password2(kwargs["wallet_password"])
        self.common_page.wait_loading()
        self.change_page.assert_text_exist("提现成功")
        self.change_page.click_complete()

    @allure.story('遍历零钱信息页面操作')
    def traverse_change_detail(self):
        self.change_page.click_change_details()
        if self.change_page.check_text_existance("提现"):
            self.change_page.click_withdraw_h5()
            self.change_page.assert_text_exist("提现成功")
            self.common_page.click_back_arrow()
        if self.change_page.check_text_existance("充值"):
            self.change_page.click_recharge_h5()
            self.change_page.assert_text_exist("充值成功")
            self.common_page.click_back_arrow()
        self.common_page.click_back_arrow()
        self.change_page.click_change_card_package()
        self.change_page.click_first_bank_card()
        self.change_page.assert_text_exist("每日消费限额")
        self.common_page.click_back_arrow()
        self.common_page.click_back_arrow()
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("关于零钱")
        self.change_page.assert_text_exist("电子账户号")
        self.change_page.click_bound_phone_number()
        self.change_page.click_change_phone_number()
        self.change_page.assert_text_exist("添加银行卡")
        self.common_page.click_back_arrow()
        self.common_page.click_back_arrow()
        self.change_page.assert_text_exist("零钱")

    @allure.story('提升限额操作')
    def increase_limit(self, **kwargs):
        self.change_page.click_increase_limit()
        box('嗨!\n请进行身份证扫描\n点击准备好了再扫描哈')
        self.change_page.wait_scan_front_process()
        self.change_page.wait_scan_back_process()
        self.change_page.click_confirmed()
        self.change_page.assert_text_exist("请先编辑住址")
        self.change_page.click_edit_address()
        self.change_page.click_province_city_district()
        self.change_page.click_province(kwargs["province"])
        self.change_page.click_city(kwargs["city"])
        self.change_page.click_district(kwargs["district"])
        self.change_page.input_address(kwargs["address"])
        self.change_page.click_save()
        self.change_page.click_confirmed()
        self.change_page.wait_loading()
        assert self.change_page.check_text_existance("提升限额") is False, "提升限额入口依然存在"
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("关于零钱")
        self.change_page.assert_text_exist("二类户")

    @allure.story("再次绑卡操作")
    def bind_another_bank_card(self, scene, **kwargs):
        self.change_page.click_change_card_package()
        assert self.change_page.bank_card_number() == 1, "零钱卡包绑定了超过1张银行卡"
        self.change_page.click_add_card()
        self.change_page.click_take_photo_h5()
        self.change_page.press_key("back")
        self.change_page.click_supported_bank_h5()
        self.common_page.click_back_arrow()
        self.change_page.input_bank_card_number_h5(kwargs["bank_card_number"])
        self.change_page.click_next_step_h5()
        self.change_page.input_mobile_number_h5(kwargs["mobile_number"])
        self.change_page.click_cgb_account_agreement()
        self.change_page.scroll_to_boundary("end")
        self.change_page.assert_text_exist("其他")
        self.common_page.click_back_arrow()
        self.change_page.click_next_step_h5()
        if scene == 1:
            # 生产环境
            self.common_flow.copy_verification_code_from_notification()
            self.change_page.long_click_verification_code_box_h5()
            self.common_page.click_paste()
        elif scene == 2:
            # 测试环境
            self.change_page.input_verify_code_h5(kwargs["verify_code"])
        self.change_page.click_next_step_h5()
        assert self.change_page.bank_card_number() == 2, "零钱卡包期望有2张银行卡"
        self.common_page.click_back_arrow()
        self.change_page.assert_text_exist("零钱")

    @allure.story('删除绑卡操作')
    def delete_bound_card(self):
        self.change_page.click_change_card_package()
        self.change_page.click_first_bank_card()
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("删除")
        self.common_page.click_button3("删除")
        if self.change_page.check_text_existance("卡片详情"):
            self.common_page.click_back_arrow()
        self.change_page.assert_text_exist("零钱绑定卡")
        assert self.change_page.bank_card_number() == 1, "零钱卡包还剩2张绑定卡,期望1张"
        self.common_page.click_back_arrow()
        self.change_page.assert_text_exist("零钱")

    @allure.story('注销零钱操作')
    def cancel_change_account(self, **kwargs):
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("关于")
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("注销")
        if self.change_page.check_text_existance("解绑"):
            self.change_page.click_unbind()
            self.common_page.wait_loading()
        self.change_page.click_next()
        self.common_page.input_wallet_password(kwargs["wallet_password"])
        box('嗨!\n请进行人脸识别\n点击准备好了再让脸进入识别框里哈')
        self.change_page.face_recognition()
        self.change_page.wait_cancel_account_process()
        self.change_page.assert_text_exist("注销完成")
        self.change_page.click_complete()
        self.mine_page.assert_text_exist("我的资产")
class UnionPayFlow(object):
    def __init__(self, driver):
        self.home_page = HomePage(driver)
        self.unionpay_page = UnionPayPage(driver)
        self.common_page = CommonPage(driver)
        self.common_flow = CommonFlow(driver)

    @allure.story("进入添加银行卡页操作")
    def goto_add_card_page(self, scene):
        if scene == 1:
            # 付款码---立即开通
            self.home_page.click_payment_code()
            self.unionpay_page.click_acticate_now()
        elif scene == 2:
            # OPPO Pay---添加卡
            self.home_page.click_oppo_pay()
            self.common_page.click_add_card()
        elif scene == 3:
            # 卡包---添加卡(+)---添加银行卡
            self.home_page.click_card_package()
            self.home_page.click_add()
            self.home_page.click_add_bank_card()

    @allure.story("借记卡要素填写操作")
    def fill_in_debit_card_info(self, support_nfc, **kwargs):
        """ 填写借记卡信息并进行绑卡 """
        self.unionpay_page.input_bank_card_number(kwargs["bank_card_number"])
        self.unionpay_page.click_next_button()
        if support_nfc is True:
            self.unionpay_page.input_mobile_number(kwargs["mobile_number"])
            self.unionpay_page.input_bank_password(kwargs["bank_password"])
        else:
            # todo 非NFC绑卡流程,姓名、身份证、手机号、验证码
            pass
        self.unionpay_page.click_bind_card_button()
        self.unionpay_page.wait_add_bank_card_process()

    @allure.story("信用卡要素填写操作")
    def fill_in_credit_card_info(self, support_nfc, **kwargs):
        """ 填写信用卡信息并进行绑卡 """
        self.unionpay_page.input_bank_card_number(kwargs["bank_card_number"])
        self.unionpay_page.click_next_button()
        self.unionpay_page.input_mobile_number(kwargs["mobile_number"])
        self.unionpay_page.input_expire_date(kwargs["expire_date"])
        self.unionpay_page.input_cvn2(kwargs["cvn2"])
        if support_nfc is False:
            # todo 非NFC绑卡流程,验证码
            pass
        self.unionpay_page.click_bind_card_button()
        self.unionpay_page.wait_add_bank_card_process()

    @allure.story("安全信息填写操作")
    def fill_in_safety_info(self, scene, support_nfc, **kwargs):
        """ 输入验证码、密码、密保并完成 """
        if support_nfc is True:
            self.common_flow.copy_verification_code_from_notification()
            self.unionpay_page.long_click_verification_code_box()
            self.common_page.click_paste()
            self.unionpay_page.click_next_button()
        if scene == 1:
            # 账户未设置密码时
            self.common_page.input_wallet_password(kwargs["wallet_password"])
            self.common_page.input_wallet_password(kwargs["wallet_password"])
            self.unionpay_page.click_security_question()
            self.unionpay_page.click_specific_security_question(
                kwargs["security_question"])
            self.unionpay_page.input_security_answer(kwargs["security_answer"])
            self.unionpay_page.click_next_button()
        self.unionpay_page.click_next_time()

    @allure.story("遍历卡详情页")
    def traverse_card_detail(self, support_nfc):
        if support_nfc is True:
            self.home_page.click_oppo_pay()
            self.common_page.click_close()
            self.common_page.click_card_detail()
        else:
            # todo 非NFC的进入到卡详情操作
            pass
        self.unionpay_page.click_transaction_record()
        self.common_page.click_back_arrow()
        self.unionpay_page.check_device_card_number()
        self.unionpay_page.click_service_hotline()
        self.unionpay_page.press_key("back")
        self.common_page.click_back_arrow()

    @allure.story("关闭和开启付款码")
    def turn_off_and_on_payment_code(self, **kwargs):
        self.home_page.click_payment_code()
        self.unionpay_page.click_barcode()
        self.unionpay_page.click_big_barcode()
        self.unionpay_page.click_qrcode()
        self.unionpay_page.click_big_qrcode()
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("暂停使用")
        self.common_page.click_button1("暂停使用")
        self.unionpay_page.click_turn_on()
        self.common_page.input_wallet_password(kwargs["wallet_password"])
        self.unionpay_page.check_payment_code_state()

    @allure.story("扫一扫支付流程")
    def scan_payment(self, **kwargs):
        self.home_page.click_scan_it()
        self.unionpay_page.click_flashlight()
        self.unionpay_page.click_flashlight()
        self.unionpay_page.click_photo_album()
        self.unionpay_page.click_qrcode_photo()
        self.unionpay_page.input_payment_amount(kwargs["payment_amount"])
        self.oppo_pay_online_payment(**kwargs)

    @allure.story("OPPO Pay线上支付流程")
    def oppo_pay_online_payment(self, **kwargs):
        self.unionpay_page.click_confirm_payment()
        self.common_page.input_wallet_password(kwargs["wallet_password"])
        self.unionpay_page.click_done()

    @allure.story("删除银行卡流程")
    def delete_bank_card(self):
        self.home_page.click_card_package()
        self.home_page.click_first_bank_card()
        self.common_page.click_more_options()
        self.common_page.click_popup_list_item("删除银行卡")
        self.common_page.click_button3("删除银行卡")
        self.unionpay_page.wait_delete_bank_card_process()
        self.home_page.check_on_card_package_page()
Пример #3
0
class SettingFlow(object):
    def __init__(self, driver):
        self.setting_page = SettingPage(driver)
        self.common_page = CommonPage(driver)
        self.home_page = HomePage(driver)
        self.mine_page = MinePage(driver)
        self.common_flow = CommonFlow(driver)

    def goto_setting_page(self):
        self.mine_page.click_mine_tab()
        self.mine_page.click_setting()

    @allure.story("实名认证操作")
    def real_name_verification(self, scene=1, **kwargs):
        if scene == 2:
            # 设置入口
            self.setting_page.click_real_name_verification()
        self.setting_page.click_username()
        # self.setting_page.input_username(kwargs["username"])
        # self.setting_page.input_identification_number(kwargs["username"])    # 输入身份证

        self.setting_page.click_next_step()
        self.common_flow.copy_verification_code_from_notification()
        self.setting_page.long_click_verification_code_box()
        self.common_page.click_paste()
        self.setting_page.click_finish()
        # 点完成按钮后会跳转到认证信息页
        self.setting_page.check_on_certification_information_page()

    @allure.story("双击唤醒开关操作")
    def double_tap_power_switch(self):
        self.common_page.double_click_power_key()
        self.common_page.assert_text_exist("靠近读卡器")
        self.common_page.click_exit()
        self.setting_page.click_double_tap_power_switch()
        self.common_page.double_click_power_key()
        self.common_page.swipe_screen("up")
        self.setting_page.assert_text_exist("设置")
        self.setting_page.click_double_tap_power_switch()

    @allure.story("自动切卡操作")
    def auto_switch_card(self):
        self.setting_page.click_auto_switch()
        self.setting_page.click_auto_switch_switch()
        self.setting_page.click_loop_switch()
        self.setting_page.swipe_screen("up")
        self.setting_page.assert_text_exist("选择要切换的")
        self.setting_page.click_smart_switch()
        assert self.setting_page.check_text_existance(
            "选择要切换的") is False, "列表未收起"
        self.setting_page.click_loop_switch()
        self.setting_page.click_door_card()
        self.setting_page.click_specified_card(index=0)
        self.setting_page.click_dont_choose()
        self.setting_page.assert_text_exist("请选择")
        self.setting_page.click_door_card()
        self.setting_page.click_specified_card(index=0)
        self.setting_page.click_done()
        assert self.setting_page.check_text_existance(
            "请选择") is False, "未选择到指定的卡"

    @allure.story("一键修复操作")
    def one_click_repair(self):
        self.setting_page.click_one_click_repair()
        self.setting_page.click_start_repair()
        self.setting_page.assert_text_exist("未发现问题")
        self.setting_page.click_help_feedback()
        if self.setting_page.check_text_existance("加载中"):
            self.setting_page.wait_loading()
        self.setting_page.assert_text_exist("全部问题")
        self.setting_page.press_key("back")
        self.setting_page.click_complete()
        self.setting_page.assert_text_exist("设置")

    @allure.story("更改支付密码操作")
    def change_wallet_password(self, **kwargs):
        self.setting_page.click_password_setting()
        self.setting_page.click_change_password()
        self.common_page.input_wallet_password_h5(kwargs["wallet_password"])
        self.common_page.input_wallet_password_h5(
            kwargs["new_wallet_password"])
        self.common_page.input_wallet_password_h5(
            kwargs["new_wallet_password"])
        assert self.setting_page.get_toast() == "密码修改成功", "密码修改toast提示异常"
        self.setting_page.assert_text_exist("更改支付密码")

    @allure.story("忘记支付密码操作")
    def forget_wallet_password(self, scene, **kwargs):
        self.setting_page.click_password_setting()
        self.setting_page.click_forget_password()
        if scene == 1:
            # 通过身份信息找回
            self.setting_page.click_retrieve_through_id_info()
            self.setting_page.input_bank_card_number(
                kwargs["bank_card_number"])
            self.setting_page.input_username2(kwargs["username"])
            self.setting_page.input_identification_number2(
                kwargs["identification_number"])
            self.setting_page.input_mobile_number(kwargs["mobile_number"])
            self.setting_page.click_next()
        elif scene == 2:
            # 通过密保与手机号找回
            self.setting_page.click_retrieve_through_security()
            self.setting_page.click_security_question()
            self.setting_page.input_security_answer(kwargs["security_answer"])
            self.setting_page.click_next()
            self.common_flow.copy_verification_code_from_notification()
            self.setting_page.long_click_verification_code_box()
            self.common_page.click_paste()
            self.setting_page.click_next_step()
        self.common_page.input_wallet_password_h5(
            kwargs["new_wallet_password"])
        self.common_page.input_wallet_password_h5(
            kwargs["new_wallet_password"])
        assert self.setting_page.get_toast() == "密码重置成功", "密码重置toast提示异常"
        self.setting_page.assert_text_exist("更改支付密码")

    @allure.story("重置密保操作")
    def reset_security(self, **kwargs):
        self.setting_page.click_password_setting()
        self.setting_page.click_reset_security()
        self.common_page.input_wallet_password_h5(kwargs["wallet_password"])
        self.setting_page.click_security_question(
            kwargs["new_security_question"])
        self.setting_page.input_security_answer(kwargs["new_security_answer"])
        self.setting_page.click_next()
        self.common_flow.copy_verification_code_from_notification()
        self.setting_page.long_click_verification_code_box()
        self.common_page.click_paste()
        self.setting_page.click_next_step()
        self.setting_page.assert_text_exist("注销")

    @allure.story("关闭服务入口操作")
    def close_function_entry(self, **kwargs):
        self.setting_page.click_service_management()
        self.setting_page.click_function_item()
        for function_name in kwargs["entry_list"]:
            self.setting_page.click_specific_function_item_switch(
                function_name)
            self.common_page.click_button2("关闭")
        for num in range(3):
            self.common_page.click_back_arrow()
        self.home_page.click_home_tab()
        assert self.home_page.check_text_existance(
            "精选专区") is False, "关闭精选专区后依然存在精选专区"
        self.home_page.scroll_to_boundary("end")
        self.home_page.click_open_more_services()
        self.setting_page.click_open_all()
        self.common_page.click_back_arrow()
        self.home_page.assert_text_exist("精选专区")

    @allure.story("协议、声明、版本核查操作")
    def check_protocol_statement_version(self):
        self.setting_page.swipe_screen("up")
        self.setting_page.assert_text_exist("版本号")
        self.setting_page.click_version()
        self.setting_page.click_service_management()
        self.setting_page.click_service_agreement()
        self.setting_page.scroll_to_boundary("end")
        self.common_page.click_back_arrow()
        self.setting_page.click_privacy_statement()
        self.setting_page.scroll_to_boundary("end")
        self.common_page.click_back_arrow()
        self.common_page.click_back_arrow()
        self.setting_page.assert_text_exist("设置")

    @allure.story("注销操作")
    def cancel_wallet_payment_account(self, scene=1, **kwargs):
        if scene == 2:
            # 实名认证入口
            self.setting_page.click_real_name_verification()
        self.setting_page.click_cancel_account()
        self.setting_page.click_confirm_logout()
        self.common_page.input_wallet_password_h5(kwargs["wallet_password"])
        assert self.setting_page.check_text_existance(
            "注销钱包支付账户") is False, "注销入口依然存在,注销失败"
        self.common_page.click_back_arrow()
        self.home_page.click_home_tab()