UI自动化:seldom框架和Selenium

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


1. 核心定位

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

2. 功能对比

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

3. seldom 核心功能

3.1 简化元素定位与操作

  • 链式调用:

    python

    复制

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

3.2 数据驱动测试

  • CSV/YAML数据驱动:

    python

    复制

    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

    复制

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

3.4 测试报告

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

3.5 命令行工具

  • 常用命令:

    bash

    复制

    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

复制

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

复制

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,你可以用更少的代码实现更强大的测试能力,尤其适合中小型项目快速落地自动化测试。
相关推荐
志栋智能2 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
第九序言T3 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
qq_426003963 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
跨境小彭5 小时前
Temu 全托管模式下,SKU 利润核算的实践复盘
大数据·运维·人工智能·自动化·temu
天远数科5 小时前
零信任架构实战:基于天远企业法人四要素高级版构建自动化供应商资质穿透核验网关
人工智能·架构·自动化
chushiyunen6 小时前
autoHotKey、windows自动化快捷键工具
运维·windows·自动化
海宇大数据7 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化持牌网络小贷小微商户极速助业贷秒级全维风险决策网关
网络·人工智能·架构·自动化
阿狸猿8 小时前
实时数仓架构设计及其应用
自动化
Fluxproxy11 小时前
大模型批量数据采集:AI 自动化工作流搭建实战
大数据·人工智能·自动化
众壹新能源科技11 小时前
逆变器直流开关柜温度监测与预防:红外巡检发现3个120度热点
运维·人工智能·自动化