UI自动化:seldom框架和Selenium

news/2025/3/18 12:07:26

以下是关于 seldom框架 和 Selenium 的对比解析及结合使用的详细说明,帮助理解二者的定位、功能差异和应用场景:


1. 核心定位

工具定位
Selenium浏览器自动化工具库,提供直接操控浏览器的底层API(如点击、输入、获取元素等)。
seldom基于 unittest 的测试框架,封装了Selenium并扩展了测试管理功能,简化自动化脚本编写。(seldom API 的设计理念是将元素操作和元素定位放到一起,本身不太适合实现Page object设计模式。poium是Page objects设计模式最佳实践。要实现Page object设计模式可将 seldom 与 poium 结合使用。)

2. 功能对比

功能Seleniumseldom
浏览器驱动管理4.6版本以前需手动下载驱动或依赖第三方库(如webdriver-manager),4.6+版本自动管理驱动,无需手动下载自动管理驱动,无需手动下载(集成webdriver-manager)
元素定位与操作原生API(如find_elementclick封装简化API(如id()css() + 链式调用)
断言需结合unittest/pytest断言内置丰富断言方法(如assertTextassertUrl
数据驱动需借助ddtpytest参数化原生支持数据驱动(data装饰器)
测试报告需集成第三方库(如Allure、HTMLTestRunner)内置HTML测试报告,自动生成
执行效率优化需自行实现并行、重试逻辑支持并发执行、失败重试(命令行参数控制)
移动端/API测试仅支持Web UI支持Web、API、App测试(集成Requests、Appium)

3. seldom 核心功能

3.1 简化元素定位与操作

  • 链式调用

    python

    复制

    from seldom import Seldom
    Seldom(id="kw").type("seldom").click(id="su")
  • 智能等待:自动处理元素加载等待,无需显式编写WebDriverWait

3.2 数据驱动测试

  • CSV/YAML数据驱动

    python

    复制

    from seldom import data
    @data([
        ("case1", "seldom"),
        ("case2", "Python"),
    ])
    def test_search(self, name, keyword):
        Seldom(id="kw").type(keyword).click(id="su")

3.3 丰富的断言

  • 内置断言方法

    python

    复制

    self.assertText("百度一下")         # 断言文本存在
    self.assertUrl("https://www.baidu.com/")  # 断言URL

3.4 测试报告

  • 自动生成报告:运行后生成 reports/ 目录下的HTML报告,展示用例执行详情

3.5 命令行工具

  • 常用命令

    bash

    复制

    seldom run test_dir/            # 运行目录下所有用例
    seldom run test.py --browser firefox  # 指定浏览器
    seldom run test.py --report=allure   # 生成Allure报告
    seldom run test.py --parallel 4      # 并发执行

4. 结合使用示例

4.1 Web自动化测试(百度搜索)

python

复制

from seldom import Seldom, TestCase

class TestBaidu(TestCase):
    def test_search(self):
        # 打开页面
        self.open("https://www.baidu.com")
        # 操作元素
        Seldom(id="kw").type("seldom").click(id="su")
        # 断言
        self.assertText("seldom_百度搜索")

4.2 API测试

python

复制

from seldom import request

class TestAPI(TestCase):
    def test_login(self):
        payload = {"username": "admin", "password": "123456"}
        res = request.post("https://api.example.com/login", json=payload)
        self.assertStatusCode(200, res)
        self.assertJSON({"code": 0}, res)

5. 如何选择?

使用 Selenium 的场景

  • 需要高度定制化浏览器行为(如修改User-Agent、网络拦截)。

  • 项目已深度集成其他测试框架(如pytest + Selenium)。

  • 仅需简单的浏览器自动化脚本。

使用 seldom 的场景

  • 快速搭建Web/API/App自动化测试项目。

  • 需要开箱即用的测试报告、数据驱动、失败重试等功能。

  • 追求代码简洁和开发效率,减少样板代码。


6. 总结

  • seldom 是 Selenium 的上层封装,针对测试场景优化,提供更简洁的API和丰富的测试管理功能。通过 seldom,你可以用更少的代码实现更强大的测试能力,尤其适合中小型项目快速落地自动化测试。


http://www.niftyadmin.cn/n/5890039.html

相关文章

单片机字符串换行符使用说明

在单片机中,字符串的换行通常使用 \r\n 来表示。\r 是回车(Carriage Return),\n 是换行(Line Feed)。这两个字符的组合 \r\n 是 Windows 系统中的标准换行符。 例如,如果你有一个字符串 QIOTEV…

侯捷C++课程学习笔记:构造函数那些事儿(四)

C 构造函数全面解析 上图节选自爱吃喵的鲤鱼 一、构造函数基础特性 1. 核心功能定位 ​对象初始化中枢:负责在对象创建时完成成员变量的初始化工作​生命周期唯一性:每个对象在其生命周期内仅被调用一次,类似出生证明的签发过程 2. 基础语…

网络安全linux命令

文章目录: 一:网络信息安全简介 二:网络中存在的威胁 三:常见的攻击类型 1.端口扫描 2.DoS和DDoS攻击 3.特洛依木马(Trojan) 3.1 木马的工作原理 3.2 特洛伊木马具有的特性 3.3 木马的种类 3.4 被…

Ollama本地部署deepseek-r1蒸馏版

Docker安装Ollama 拉取镜像 docker pull ollama/ollama​ 启动-使用GPU docker run -d --gpusall -p 11434:11434 --name ollama ollama/ollamadocker run : Docker 的核心命令,用于创建并启动一个新的容器。 -d : 后台模式(detached mode&#xff09…

Spring Boot 读取 ZooKeeper (ZK) 属性的总结指南

Spring Boot 读取 ZooKeeper (ZK) 属性的总结指南,涵盖配置定义、绑定、初始化和使用: 1. 在配置文件中定义 ZK 属性 在 application.properties 或 application.yml 中添加 ZK 相关配置: application.properties # 单源配置示例 zookeep…

【贪心算法】将数组和减半的最小操作数

1.题目解析 2208. 将数组和减半的最少操作次数 - 力扣(LeetCode) 2.讲解算法原理 使用当前数组中最大的数将它减半,,直到数组和减小到一半为止,从而快速达到目的 重点是找到最大数,可以采用大根堆快速达到…

Python:函数(一)

python函数相关的知识点 1. 函数定义与调用 定义:使用 def 关键字,后接函数名和参数列表。 def greet(name):"""打印问候语(文档字符串)"""print(f"Hello, {name}!") 调用&#xff1a…

运维新手入门——线缆的使用(Beginner‘s Guide to Operations and Maintenance - Cable Usage)

运维新手入门——线缆的使用 近期不断的有朋友问到线缆的传输距离,我们每天都在与线缆打交道,清楚了解线缆的使用才能在项目中得心应手,我们之前有提到过。 本期我们一起再来总结下常用的线缆传输距离。 01) 网线:超…