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

2024-04-07  本文已影响0人  薛东弗斯
project > data > data.yaml
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)

# 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)
# project > data > data.yaml
#userinfo:
#  username: admin
#  password: 123456

skill:
  - 接口自动化
  - UI自动化
  - 性能测试

#userinfos:
#  - username: admin
#    password: 123456
#  - username: test01
#    password: 123456
#
#userinfo_list:
#  - [ admin,123456 ]
#  - [ test01,123456 ]
#
#skills:
#  - - 接口自动化
#    - UI自动化
#    - 性能测试
#
#skills2:
#  - [ 接口自动化, UI自动化, 性能测试 ]
#
#
#项目
register_ok:
  mobile: 13832234444
  password: 123456

register_failed:
  mobile: 13800001112
  password: 123456

register_exist:
  mobile: 13017744356

user_login:
  - mobile: ''
    password: 123456
  - mobile: 13800001111
    password: ''
  - mobile: 13800001111
    password: 123451
  - mobile: 13800001111
    password: 123456

user_address:
  province: 天津市
  city: 天津城区
  district: 和平区
  username: 老白
  useraddress: 人民广场100
  mobile: 1234567899999
上一篇 下一篇

猜你喜欢

热点阅读