以下是关于 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
复制
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,你可以用更少的代码实现更强大的测试能力,尤其适合中小型项目快速落地自动化测试。