美文网首页
76. 美客生鲜项目实战 - 注册反向流程 - 验证码错误

76. 美客生鲜项目实战 - 注册反向流程 - 验证码错误

作者: 薛东弗斯 | 来源:发表于2024-04-07 07:01 被阅读0次
    project > page > user_page.py
    project > testcases > user_center > test_user.py
    
    # project > testcases > user_center > test_user.py
    import time
    import allure
    import pytest
    from page.user_page import UserPage
    from testcases.user_center.conftest import delete_user, delete_code
    from utils.assert_util import assert_compare
    from utils.mysql_util import db
    from utils.read import read_yaml
    
    @allure.epic("美客生鲜的项目")
    @allure.feature("用户中心")
    @pytest.mark.run(order=1)
    class TestUser:
        @allure.story("未登录时跳转")
        def test_go_login(self,driver_project):
            page = UserPage(driver_project)
            with allure.step("点击请登录"):
                page.click(page.ple_login)
            actual_url = page.get_current_url()
            expected_url = "http://meikefresh.5istudy.online/#/app/login"
            assert_compare(expected_url, "==", actual_url)
            time.sleep(10)
            page.back()  # 在点击登录后,必须退回前一个页面,才可以找到会员中心
            page.move_to_element(page.vip_center)  # 必须移到”会员中心“,才可以点击后面的选项
            with allure.step("点击我的订单"):
                page.click(page.my_order)
            actual_url = page.get_current_url()
            assert_compare(expected_url, "==", actual_url)
            page.back()
            page.move_to_element(page.vip_center)
            with allure.step("点击我的收藏"):
                page.click(page.my_fav)
            actual_url = page.get_current_url()
            assert_compare(expected_url, "==", actual_url)
            page.back()
            page.move_to_element(page.vip_center)
            with allure.step("点击我的收货地址"):
                page.click(page.my_address)
            actual_url = page.get_current_url()
            assert_compare(expected_url, "==", actual_url)
            page.back()
            with allure.step("点击我的购物车"):
                page.click(page.shopping_cart)
            page.switch_to_window()   # 点击购物车后,会切到新的登录窗口,此处切到新窗口,默认是当前窗口
            actual_url = page.get_current_url()
            assert_compare(expected_url, "==", actual_url)
            page.close_driver()
            page.switch_to_window(to_parent_window=True)
    
    
        @allure.title("用户注册成功")
        def test_register(self, driver_project):
            data = read_yaml()['register_ok']
            page = UserPage(driver_project)
            with allure.step("点击免费注册"):
                page.click(page.register)
            with allure.step("输入手机号"):
                page.send_keys(page.register_mobile, data['mobile'])
            with allure.step("点击获取验证码"):
                page.click(page.send_code)
                time.sleep(2)
            with allure.step("获取短信验证码"):
                sql = f"select code from users_verifycode where mobile = {data['mobile']} order by id desc limit 1;"
                code = db.select_db_one(sql)['code']
            with allure.step("输入验证码"):
                page.send_keys(page.input_code, code)
            with allure.step("输入密码"):
                page.send_keys(page.input_password, data['password'])
            with allure.step("点击注册并登录"):
                page.click(page.register_submit)
            text = page.get_text(page.user_name)
            assert_compare(str(data['mobile']), "==", text)
            with allure.step("退出"):
                page.click(page.logout)
            delete_user(data['mobile'])
            delete_code(data['mobile'])
    
        @allure.title("用户注册失败-验证码错误")
        def test_register_failed(self, driver_project):
            """注册失败"""
            data = read_yaml()['register_failed']
            page = UserPage(driver_project)
            page.register_failed(data)
    
        @allure.title("用户注册失败-用户已存在")
        def test_register_exist(self, driver_project):
            """
            已存在的用户
            :param driver_project:
            :return:
            """
            mobile = read_yaml()['register_exist']['mobile']
            page = UserPage(driver_project)
            page.refresh()
            # page.click(page.register)
            page.send_keys(page.register_mobile, mobile)
            page.click(page.send_code)
            text = page.get_text(page.user_exist)
            assert_compare("用户已经存在", '==', text)
    
    # project > page > user_page.py
    import allure
    from selenium.webdriver.common.by import By
    from base.base_page import BasePage
    from testcases.user_center.conftest import delete_user, delete_code
    from utils.assert_util import assert_compare
    
    class UserPage(BasePage):
        # 请登录
        ple_login = (By.CSS_SELECTOR, 'a[href="#/app/login"]')
        # 会员中心
        vip_center = (By.XPATH, '//a[contains(text(),"会员中心")]')
        # 我的订单
        my_order = (By.CSS_SELECTOR, 'a[href="#/app/home/member/order"]')
        # 我的收藏
        my_fav = (By.CSS_SELECTOR, 'a[href="#/app/home/member/collection"]')
        # 我的收货地址
        my_address = (By.CSS_SELECTOR, 'a[href="#/app/home/member/receive"]')
        # 购物车
        shopping_cart = (By.CSS_SELECTOR, 'a[href="#/app/shoppingcart/cart"]')
    
        """注册功能"""
        # 免费注册
        register = (By.CSS_SELECTOR, 'a[href="#/app/register"]')
        # 手机号
        register_mobile = (By.ID, 'jsRegMobile')
        # 免费获取验证码
        send_code = (By.ID, 'jsSendCode')
        # 输入手机验证码
        input_code = (By.ID, 'jsPhoneRegCaptcha')
        # 输入密码
        input_password = (By.ID, 'jsPhoneRegPwd')
        # 注册并登录
        register_submit = (By.ID, 'jsMobileRegBtn')
        # 退出
        logout = (By.XPATH, '//*[@id="ECS_MEMBERZONE"]/a[2]')
        # 用户名
        user_name = (By.CSS_SELECTOR, 'a[href="#/app/home/member/userinfo"]')
        # 验证码错误
        error_code = (By.XPATH, '//*[@id="mobile_register_form"]/p[2]')
        # 用户已存在
        user_exist = (By.XPATH, '//*[@id="mobile_register_form"]/p[1]' )
    
        """登录相关"""
        #  用 户 名
        login_account = (By.ID, 'account_l')
        # 密     码
        login_password = (By.ID, 'password_l')
        # 登录按钮
        login_btn = (By.ID, 'jsLoginBtn')
        # 登录用户名错误信息
        login_account_error = (By.XPATH, '//*[@id="jsLoginForm"]/p[1]')
        # 登录密码为空错误信息
        login_password_error = (By.XPATH, '//*[@id="jsLoginForm"]/p[2]')
        # 登录密码错误信息
        login_error = (By.XPATH, '//*[@id="jsLoginForm"]/p[3]')
    
        """我的地址"""
        # 配送区域
        express_area = (By.XPATH, '//td[contains(text(),"配送区域")]')
        # 省
        province = (By.XPATH, '//td[contains(text(),"配送区域")]/following-sibling::td/div/div/select[1]')
        # 市
        city = (By.XPATH, '//td[contains(text(),"配送区域")]/following-sibling::td/div/div/select[2]')
        # 区
        district = (By.XPATH, '//td[contains(text(),"配送区域")]/following-sibling::td/div/div/select[3]')
        # 收货人姓名
        username = (By.ID, 'consignee_0')
        # 详细地址
        address = (By.ID, 'address_0')
        # 手机
        mobile = (By.ID, 'mobile_0')
        # 新增收货地址按钮
        add_address_button = (By.XPATH, '//button[contains(text(),"新增收货地址")]')
        # 确定修改
        confirm = (By.XPATH, '//button[contains(text(),"确定修改")]')
        # 删除
        delete_address = (By.XPATH, '//button[contains(text(),"删除")]')
    
        def register_failed(self, data):
            """
            注册失败
            :return:
            """
            self.get_url("http://meikefresh.5istudy.online/")
            with allure.step("点击免费注册"):
                self.click(self.register)
            with allure.step("输入手机号"):
                self.send_keys(self.register_mobile, data['mobile'])
            with allure.step("点击获取验证码"):
                self.click(self.send_code)
            with allure.step("输入验证码"):
                self.send_keys(self.input_code, "f123")   # 此处故意输入错误的验证码
            with allure.step("输入密码"):
                self.send_keys(self.input_password, data['password'])
            with allure.step("点击注册并登录"):
                self.click(self.register_submit)
            text = self.get_text(self.error_code)
            assert_compare("验证码错误", '==', text)
            delete_user(data['mobile'])
            delete_code(data['mobile'])
    
        def login(self):
            self.get_url("http://meikefresh.5istudy.online/#/app/login")
            self.send_keys(self.login_account, "13800001111")
            self.send_keys(self.login_password, "123456")
            self.click(self.login_btn)
    

    相关文章

      网友评论

          本文标题:76. 美客生鲜项目实战 - 注册反向流程 - 验证码错误

          本文链接:https://www.haomeiwen.com/subject/iqqwtjtx.html