selenium实战记录-从登陆-首页-进入应用页面测试用例

项目结构

样式:

projectName #项目名称

├── base #封装PO基类

├── page #封装PO页面对象

├── scripts #定义测试用例脚本

├── data #存放测试数据

├── report #存放生成的测试报告

├── log #存放日志文件

├── img #存放截图

├── config.py#定义项目的配置信息

├── utils.py #定义工具类

├──pytest.ini #pytest配置文件

├── utils.py #定义工具类

└──conftest.py #不用写任何代码,放在项目的根目录,所有测试文件都能读取它

自动化测试用例编写遵循原则

  1. 核心业务,重复执行的业务;
  2. 正向用例;
  3. 尽量减少用例脚本之间的依赖
  4. 不是所有用例都需要自动化;

page类

1、一个也没一个page文件,如图:

2、登陆后home页面封装代码

python 复制代码
#后台home页面
from selenium.webdriver.common.by import By
from base.base import BasePage
from base.base import BaseHandle

#定义对象库层
class HomePage(BasePage):
    def __init__(self):
        super().__init__() #继承基类的初始化方法,自带驱动
        self.username=By.XPATH,"//*[@class='user-name']/span"
        self.digital=By.XPATH,"//*[@src='https://yxf-bucket-01.oss-cn-beijing.aliyuncs.com/ApplicationIcons/1641972601070.png']"
    #获取元素定位使用基础类中方法,代码更简洁
    def find_username(self):
        return self.get_element(self.username)
    def find_digital(self):
        return self.get_element(self.digital)

#定义操作层
class HomeHandle(BaseHandle):
    def __init__(self):
        self.home_page=HomePage()
    #获取登陆者姓名,通过text获取
    def get_username(self):
        return self.home_page.find_username().text
    #点击进入客户管理
    def click_digital(self):
        self.home_page.find_digital().click()

#定义业务层
class HomeProxy:
    #实例化操作层类
    def __init__(self):
        self.home_handle=HomeHandle()
    #获取用户姓名,需要返回用户名字所以使用return
    def get_username_msg(self):
        return self.home_handle.get_username()
    #点击登陆跳转到home页面
    def go_digital_page(self):
        self.home_handle.click_digital()

测试脚本

1、测试用例:先登陆-进入首页-点击客户管理应用;

2、代码如下:

python 复制代码
import pytest
from page.page_home import HomeProxy
from  page.page_login import LoginProxy
from  page.page_digital import DigitalProxy
import logging
from utils import UtilsDriver,get_msg

#定义测试类,
class TestLogin:
    #初始化。类级别的
    def setup_class(self):
    			#实例化
        self.login_proxy=LoginProxy()
        self.home_proxy=HomeProxy()
        self.dig_proxy=DigitalProxy()
    #结束销毁,类级别,统一销毁
    def teardown_class(self):
        UtilsDriver.quit_driver()  #调用工具类中的关闭webdriver对象
    #success
    def test01_login(self):
        # 调用登陆业务进入首页,参数有账号密码
        self.login_proxy.go_home_page("ydhl","ganfeimei","ydhl123456")
        username = self.home_proxy.get_username_msg() #获取登陆者姓名
        #断言,通过登陆后页面获取用户名来断言
        assert "甘飞梅原点演示" == username
        logging.info("登陆者姓名:{}".format(username))

    def test02_home(self):
        #点击客户管理应用进入
        self.home_proxy.go_digital_page()
        digname=self.dig_proxy.get_digname_msg()
        #同上通过进入应用后获取应用名来断言
        assert "营销服务平台" == digname
         logging.info("应用名称:{}".format(digname))

测试结果

1、html格式测试报告。

相关推荐
奔跑中的小象15 小时前
GuideLLM 压测实战指南:给大模型推理服务做一次完整 SLA 评估
测试工具·guidellm
cpolar技术支持17 小时前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
测试狗科研平台1 天前
材料热传导能力表征——热导率计算方法与流程解析
科技·测试工具·材料工程
Luminbox紫创测控2 天前
GB/T 34515—2026新规航天热平衡试验:太阳模拟器该怎么选
测试工具·安全性测试·测试标准·航天器热平衡
蒸鱼Yuzheng2 天前
Unity 与 Unreal 测试工具怎么回答:Profiler、日志、自动化与证据链
测试工具·unity·性能分析·游戏测试·unrealengine
2302_805771072 天前
Day13Jmeter数据驱动
功能测试·单元测试·测试用例·需求分析·测试
2302_805771072 天前
Day14Jmeter+数据库的操作
功能测试·单元测试·测试用例·需求分析
匠测AI说3 天前
XCUITest 自动化全解:同进程白盒、XCTest 架构、自动同步机制与 iOS 端选型指南
测试工具·ios·自动化
xfilm埃利测量3 天前
四探针法测电阻:原理讲透 + 常见问题一次说清
测试工具·平面·四探针·薄膜电阻测量