【UI自动化测试】4_TPshop项目实战 _后台管理-新增商品成功

文章目录

一、新增商品成功

二、page

bash 复制代码
page(包) 页面封装
-admin_page(包) 后台系统页面
--①login_page.py  #后台管理登录页面
--②home_page.py   # 后台系统主页
--③goods_page.py  # 后台商品管理页面

2.1 home_page.py

python 复制代码
from selenium.webdriver.common.by import By

from base.base_page import AdminBasePage

# 后台系统主页
class HomePage(AdminBasePage):
    # 实例属性-管理操作步骤在该页面中所用到元素定位信息
    def __init__(self):
        super().__init__()  # 子类中重写或扩展父类的方法
        # 一级菜单:商城
        self.goods_shop_link =(By.XPATH, "//*[text()='商城']")
        # 二级菜单:商品列表
        self.goods_list =  (By.CSS_SELECTOR, "[data-param='goodsList|Goods']")


    # 跳转商品管理页面
    def to_goods_page(self):
        # 点击一级菜单:商城
        self.find_el(self.goods_shop_link).click()
        # 点击二级菜单:商品列表
        self.find_el(self.goods_list).click()

2.2 goods_page.py

python 复制代码
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

from base.base_page import AdminBasePage

# 后台商品管理页面
class GoodPage(AdminBasePage):
    # 实例属性-管理操作步骤在该页面中所用到元素定位信息
    def __init__(self):
        super().__init__()  # 子类中重写或扩展父类的方法
        # iframe标签
        self.frame = (By.ID, "workspace")
        # 添加商品的按钮
        self.add_goods_btn = (By.CSS_SELECTOR, "[title='添加商品']")
        # 商品名称输入框
        self.goods_name = (By.NAME, "goods_name")
        # 商品分类-一级分类
        self.one_catgery = (By.ID, "cat_id")
        # 商品分类-二级分类
        self.two_catgery = (By.ID, "cat_id_2")
        # 商品分类-三级分类
        self.three_catgery = (By.ID, "cat_id_3")
        # 本店售价
        self.shop_price = (By.NAME, "shop_price")
        # 市场价
        self.market_price = (By.NAME, "market_price")
        # 是否包邮:是
        self.is_recive = (By.ID, "is_free_shipping_label_1")
        # 确认提交
        self.submit_btn = (By.ID, "submit")

    def add_goods(self, g_name, oc, tc, thc, s_price, m_price):
        """
        添加商品
        :param g_name: 商品名称
        :param oc: 一级分类
        :param tc: 二级分类
        :param thc: 三级分类
        :param s_price: 本店售价
        :param m_price: 市场价
        :return:
        """
        # frame切换
        self.switch_frame(self.find_el(self.frame))
        # 2、点击【添加商品】
        self.find_el(self.add_goods_btn).click()
        # 3、输入商品名称
        self.input_text(self.find_el(self.goods_name), g_name)
        # 4、选择商品分类
        Select(self.find_el(self.one_catgery)).select_by_value(oc)
        Select(self.find_el(self.two_catgery)).select_by_value(tc)
        Select(self.find_el(self.three_catgery)).select_by_value(thc)
        # 5、输入本店售价
        self.input_text(self.find_el(self.shop_price), s_price)
        # 6、输入市场价
        self.input_text(self.find_el(self.market_price), m_price)
        # 8、选择是否包邮
        self.find_el(self.is_recive).click()
        # 9、点击【确认提交】
        self.find_el(self.submit_btn).click()

三、script

python 复制代码
script(包) 
-admin_script(包) 
--①test_login.py  
--②test_goods.py   

3.1 test_goods.py

python 复制代码
import time

from config import BASE_PATH
from page.admin_page.goods_page import GoodPage
from page.admin_page.home_page import HomePage
from page.admin_page.login_page import AdminLoginPage
from utils import DriverUtils, el_is_exist_by_text


# 1。定义测试类
class TestLogin:
    # 类级别的初始化方法
    def setup_class(self):
        # 1.打开浏览器
        self.driver = DriverUtils.get_admin_driver()
        # 2.打开测试网址
        self.driver.get("http://192.168.189.139/admin")

    # 类级别的销毁的方法
    def teardown_class(self):
        # 1.关闭浏览器
        DriverUtils.quit_admin_driver()

    # 2。定义测试方法
    def test_login(self):
        # 执行登录操作步骤
        AdminLoginPage().admin_login("admin", "123456", "8888")
        # 执行跳转新增商品页面
        HomePage().to_goods_page()
        # 商品名称
        g_name = f"goods_{time.strftime('%Y%m%d%H%M%S%S')}"
        # 执行新增商品
        GoodPage().add_goods(g_name, "12", "13", "15", "210", "220")
        # 断言
        try:
            # 调用根据文本判断当前页面是否存在的函数
            assert el_is_exist_by_text(self.driver, False, g_name)
        except Exception as e:
            # 如断言失败,则截图
            self.driver.get_screenshot_as_file(BASE_PATH + "/img/test_add_goods.png")
            raise e   # 继续抛出异常(如果不写,则表示捕获到异常,但是不跑出来)


相关推荐
电子云与长程纠缠2 小时前
UE5 Lyra PocketWorld进行3D内容UI预览 - 下
开发语言·学习·游戏·ui·ue5
阿部多瑞 ABU1 天前
告别手工核图:基于 .NET + MuPDFCore 的 CAD 等轴测 PDF 材料表提取与新旧版本对比实战
后端·算法·ui·pdf·c#
MoSTChillax2 天前
UI规范设计:从视觉到交互的全面指南
前端·ui·产品经理·设计规范·vibecoding
Devlab2 天前
LVGL设计大师——网页版anyui来了!!
嵌入式硬件·物联网·低代码·ui·iot
向星而行_star3 天前
Ito 模型在业务场景中的落地应用指南
ui
界面开发小八哥3 天前
界面控件DevExpress XAF v26.1新版亮点——Blazor UI功能增强(二)
ui·界面控件·blazor·devexpress·ui开发
Oll Correct3 天前
Adobe illustrator 案例四:吃豆人 (Pac-Man)图标绘制
笔记·ui·adobe·illustrator
阿图灵4 天前
Agentic AI 架构入门(九):Agent 通信协议全景——ACP/A2A/AG-UI/MCP
人工智能·ui·架构·ai agent·智能体·mcp·agentic ai
AI分享猿4 天前
UI设计Prompt系列(十二):设计系统入门——把视觉语言沉淀为可复用规范
ui·prompt
l1m0_4 天前
告别反复修改Prompt:AI生成React应用并落地开发的实战复盘
前端·react.js·ui·ai·设计