文章目录
- 一、新增商品成功
- 二、page
-
- [2.1 home_page.py](#2.1 home_page.py)
- [2.2 goods_page.py](#2.2 goods_page.py)
- 三、script
-
- [3.1 test_goods.py](#3.1 test_goods.py)
一、新增商品成功

二、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 # 继续抛出异常(如果不写,则表示捕获到异常,但是不跑出来)

