当前位置: 首页 > news >正文

Selene 条件匹配器大全:掌握 Python 中所有可用的断言方法

Selene 条件匹配器大全:掌握 Python 中所有可用的断言方法

【免费下载链接】seleneUser-oriented Web UI browser tests in Python项目地址: https://gitcode.com/gh_mirrors/sel/selene

在 Python 自动化测试领域,Selene 以其简洁优雅的 API 和强大的条件匹配能力脱颖而出。作为一款面向用户的 Web UI 浏览器测试框架,Selene 提供了丰富的条件匹配器(Condition),帮助开发者编写可读性强、维护性高的断言逻辑。本文将系统梳理 Selene 中所有可用的断言方法,从基础到进阶,助你轻松掌握 UI 测试的断言技巧。

核心条件匹配器架构

Selene 的条件匹配器体系基于Condition基类构建,位于 selene/core/condition.py。该架构支持三种主要实体的断言:

  • ElementCondition:针对单个元素的条件判断
  • CollectionCondition:针对元素集合的条件判断
  • BrowserCondition:针对浏览器状态的条件判断

所有条件匹配器遵循一致的调用风格,通常以should方法串联,例如:

browser.element('#username').should(have.text('John Doe'))


图:Selene 条件匹配器在 IDE 中的自动补全提示,提升开发效率

元素状态断言(be 模块)

be模块提供元素基本状态的断言方法,位于 selene/support/conditions/be.py。常用方法包括:

  • 可见性断言

    • be.visible:元素可见
    • be.hidden:元素隐藏
  • 交互状态断言

    • be.enabled:元素可交互
    • be.disabled:元素不可交互
    • be.clickable:元素可点击
  • 选择状态断言

    • be.selected:单选/复选框被选中
    • be.deselected:单选/复选框未选中
  • 存在性断言

    • be.present:元素存在于 DOM
    • be.absent:元素从 DOM 中移除

元素属性断言(have 模块)

have模块提供元素属性和内容的断言方法,位于 selene/support/conditions/have.py。核心功能分为:

文本内容断言

  • have.text('部分文本'):包含指定文本
  • have.exact_text('完整文本'):精确匹配文本
  • have.text_matching(r'\d+'):文本匹配正则表达式


图:在 TodoMVC 应用中使用浏览器开发者工具检查元素文本,辅助编写断言

属性与样式断言

  • have.attribute('href', 'https://example.com'):元素具有指定属性及值
  • have.css_property('color', 'rgb(255, 0, 0)'):元素具有指定 CSS 样式
  • have.value('admin@example.com'):表单元素具有指定值
  • have.css_class('active'):元素具有指定 CSS 类

集合数量断言

  • have.size(5):集合包含指定数量元素
  • have.size_greater_than(3):集合元素数量大于指定值
  • have.size_less_than_or_equal(10):集合元素数量小于等于指定值

否定断言(not_ 模块)

not_模块提供所有断言的否定形式,位于 selene/support/conditions/not_.py。使用方式简单直观:

# 元素不包含指定文本 element.should(not_.have.text('Error')) # 元素不可见 element.should(not_.be.visible) # 集合元素数量不等于5 elements.should(not_.have.size(5))

浏览器状态断言

针对浏览器全局状态的断言方法同样丰富:

  • URL 断言

    • have.url('https://example.com'):精确匹配 URL
    • have.url_containing('example'):URL 包含指定片段
  • 标题断言

    • have.title('首页 - 示例网站'):精确匹配页面标题
    • have.title_containing('示例'):标题包含指定文本
  • 标签页断言

    • have.tabs_number(2):浏览器打开指定数量标签页
    • have.tabs_number_greater_than(1):标签页数量大于指定值

高级条件组合

Selene 支持通过逻辑运算符组合多个条件,实现复杂断言逻辑:

# 元素可见且包含指定文本 element.should(be.visible.and_(have.text('Success'))) # 元素不可见或包含错误文本 element.should(be.hidden.or_(have.text('Error')))

对于更复杂的场景,可通过Condition类自定义断言:

from selene.core.condition import Condition def have_custom_property(value): return Condition( f'have custom property "{value}"', lambda element: element.get_property('custom') == value ) element.should(have_custom_property('special'))

最佳实践与常见问题

断言等待机制

Selene 条件匹配器内置智能等待机制,默认等待时间可通过配置调整:

from selene import config config.timeout = 10 # 设置全局超时为10秒

避免常见陷阱

  • 区分have.texthave.exact_text的使用场景
  • 集合断言前确保元素已加载
  • 复杂断言拆分多个简单断言,提高可读性


图:在 PyCharm 中运行 Selene 测试,条件匹配器会自动等待元素满足断言条件

总结

Selene 提供了全面的条件匹配器体系,从基础的元素状态检查到复杂的自定义断言,覆盖了 Web UI 测试的各种场景。掌握这些断言方法,能够帮助你编写更健壮、更易维护的自动化测试代码。建议结合官方文档 docs/reference/condition.md 深入学习,探索更多高级用法。

通过本文介绍的条件匹配器,你可以构建出既强大又优雅的断言逻辑,让 Python 自动化测试变得更加高效和愉悦。无论是新手还是有经验的测试工程师,Selene 的条件匹配器都将成为你测试工具箱中不可或缺的重要组件。

【免费下载链接】seleneUser-oriented Web UI browser tests in Python项目地址: https://gitcode.com/gh_mirrors/sel/selene

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1219336/

相关文章:

  • AM64x/AM243x硬件防火墙实战:从寄存器配置到系统安全架构
  • 公称直径DN65与DN70的区别
  • 3分钟掌握Anime4K:让你的动漫视频秒变4K高清!
  • 3分钟掌握通达信缠论指标:告别复杂手绘,实现智能技术分析
  • iwck多场景应用:除了吃泡面,这10个场景也能用上键盘屏蔽
  • 数据科学中的四层连接:血缘、技术、组织与认知
  • PHP面试核心知识点与高级特性解析
  • ARM7看门狗机制解析与嵌入式系统应用
  • PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发
  • 如何在3分钟内掌握Windows屏幕实时翻译的终极技巧
  • AssetRipper:5大核心技术突破解决Unity资源逆向工程难题
  • 抖音视频无水印解析工具:5分钟搭建你的专属去水印服务
  • TI AM64x PDMA架构解析:PSI-L接口与X-Y FIFO模式实战指南
  • 揭秘Diffuse:3个实用技巧让APK/AAB差异分析效率翻倍
  • AM275x CTSET2计数器/定时器CTCRx寄存器配置深度解析与实战
  • 生成式AI落地难?用曼哈顿计划系统工程思维破局
  • NAS性能优化:通过Synology_enable_M2_volume构建高速M.2存储池完整方案
  • 3个简单步骤,免费解锁WeMod终极体验:Wand-Enhancer完整指南
  • SunnyUI控件库:3步打造专业级C WinForm界面,告别丑陋默认样式!
  • 嵌入式开发实战:从寄存器配置到工程思维
  • Formsmd:开发者首选的开源Typeform替代品,5分钟构建专业多步骤表单
  • 矩生成函数MGF实战指南:从分布编码到工程加速
  • 免费音频转换器fre:ac:从新手到高手的终极指南
  • OpenRocket终极指南:免费开源火箭设计仿真工具快速入门
  • Noto字体库:如何为多语言项目选择终极免费字体解决方案
  • 群晖NAS USB网卡驱动终极指南:快速突破千兆网络限制
  • TikZCD编辑器架构解析:LaTeX交换图可视化编辑技术实现
  • 如何在5分钟内掌握Translumo:Windows实时屏幕翻译的终极指南
  • Nigate:Mac用户必备的免费NTFS读写工具完整指南
  • KMS_VL_ALL_AIO:一键解决Windows和Office激活难题的高效工具