`
xiao_hui
  • 浏览: 4428 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

assert_select的用法

阅读更多

API中有关assert_select这块读着有些呦口,于是给翻了出来:

 

assert_select(selector, equality?, message?)

 

assert_select(element, selector, equality?, message?)

此断言可以选择元素,进行一个或多个相等测试。

 

如果第一个参数为元素,则选择所有相匹配的元素:以此元素开始(包括此元素)以及它的所有深度优先子节点元素。

如果没有指定元素,并且assert_select也没有在assert_select块内被调用,调用assert_select时元素来自于响应的HTML。

当在assert_select块内被调用时,则以数组的形式将元素传递到块内。在块内调用assert_select,并且没有为它指定元素,则块内assert_select进行断言测试时使用的元素为assert_select块所选择的元素。数组中的每个元素可以分别被assert_select所使用。

如果响应中包含两个顺序列表(ol),而每个顺序列表又包含四个列表元素(li),那么:

 
assert_select "ol" do |elements|
    elements.each do |element|
      assert_select element, "li", 4
    end
  end

 

  测试,正如你想的那样:

 

assert_select "ol" do
    assert_select "li", 8
  end

 

选择器可以是CSS选择器表达式(或字符串),带替换值的表达式或者是HTML::Selector对象。

相等测试

 

相等测试可以是以下其中之一:

    *      true - 如果至少有一个元素被选择,那么此断言为真。
    *      false - 如果没有元素被选择,那么此断言为真。
    *      String/Regexp - 如果至少一个元素的文本值与此字符串或正则表达式相匹配,那么此断言为真。
    *      Integer - 如果被选择的元素的个数与这个整数相等,那么此断言为真。
    *      Range - 如果被选择的元素的个数符合这个排列,那么此断言为真。

如果没有指定相等测试,那么当至少有一个元素被选择时,此断言为真。

为了执行多个相等测试,可以使用带有以下键的哈希:

    *      :text - 加上条件以缩小被选择元素的范围,条件为元素内的文本(字符串或正则表达式)含有:text对应的值。
    *      :html - 加上条件以缩小被选择元素的范围,条件为元素内的HTML内容(字符串或正则表达式)含有:html对应的值。
    *      :count - 如果被选择元素的个数等于:count对应的值,那么些断言为真。
    *      :minimum - 如果被选择元素的个数至少等于:count对应的值,那么些断言为真。
    *      :maximum - 如果被选择元素的个数最多等于:count对应的值,那么些断言为真。

如果此方法调用时使用块,一旦所有相等测试执行完毕,所有匹配元素所组成的数组将被此方法调用。


示例:

 

  # 断定至少有一个form元素  
  assert_select "form"

  # Form元素包含四个input
  assert_select "form input", 4

  # 页面的title是"Welcome"
  assert_select "title", "Welcome"

  # 页面的title是"Welcome" 并且页面当中只有一个title元素   
  assert_select "title", {:count=>1, :text=>"Welcome"}, "Wrong title or more than one title element"

  # 页面不包含form元素
  assert_select "form", false, "This page must contain no forms"

  # 测试内容和样式
  assert_select "body div.header ul.menu"

  # 使用替代值
  assert_select "ol>li#?", /item-\d+/

  # form中的所有input元素都有name属性
  assert_select "form input" do
    assert_select "[name=?]", /.+/  # Not empty
  end


 

0
0
分享到:
评论

相关推荐

    Android读取Assert资源目录下数据库,数据库操作

    之后,你可以使用`SQLiteDatabase`的方法执行SQL语句: ```java DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); String query = "SELECT * FROM...

    pytest-mock-1.13.0_testing_python_thin_源码.zip

    mock_db.execute.assert_called_once_with('SELECT * FROM table') ``` 在这个例子中,`mocker.patch`用于模拟数据库连接,`return_value`和`execute`属性用来控制mock对象的行为,最后的`assert`检查了`execute`...

    槽-惊人的快速多生产商频道-Rust开发

    功能有界/无界队列没有不安全的代码简单的设计,很少的依赖关系,非常快速地编译异步支持的select-like接口(请参阅示例/select.rs)与std :: sync :: mpsc的功能奇偶用法用法要使用Flume,请放置f

    下拉框选择,文件上传,cookie操作与实战代码示例

    例如,`Select()`函数用于创建一个Select对象,然后通过`select_by_value()`或`select_by_visible_text()`方法选择特定的值或可见文本。 2. **文件上传**: 文件上传功能常见于各种表单提交,比如简历上传、图片...

    新110道python真实面试笔试面试题.docx_python面试

    * 使用 assert 语句可以实现断言,断言成功则程序继续执行,断言失败则程序报错。 九、SQL * 使用 SQL 语句可以实现数据的查询和操作,例如 select 语句可以实现数据的查询。 十、Linux 命令 * 使用 ls 和 pwd ...

    Oracle相关接口使用方法

    本文将深入解析“Oracle相关接口使用方法”,基于标题、描述、标签及部分内容,详细阐述各接口的功能与使用场景,帮助读者全面理解并灵活运用。 #### 一、Environment接口 `Environment`接口用于创建Oracle环境上...

    unity3d 树形控件 AssertStore全名叫TreeView Control

    在Unity3D的C#编程中,可以使用`UnityEngine.UI.TreeView`类及其相关的扩展方法和属性来控制树形视图的行为。例如,`AddChild()`用于添加子节点,`RemoveChild()`用于移除子节点,`Select()`用于选中特定节点等。 ...

    testingsql:用于测试在python中运行SQL脚本

    2. **运行SQL脚本**:然后,你可以使用`run_script`方法执行包含多个SQL语句的文本文件,或者使用`run_query`方法执行单个SQL查询。 ```python with conn: conn.run_script('path/to/your/script.sql') result = ...

    用于微控制器 的 Lua_C语言_代码_相关文件_下载

    embLua(包括完整的 Lua 5.3.4 内核)的目的是为 C/C++ 开发人员提供使用脚本功能扩展其微控制器/嵌入式设备的可能性。embLua 的主要重点是在自定义项目和新平台中的...更多详情、使用方法,请下载后阅读README.md文件

    ZendFramework中文文档

    2.3.2. 使用声明(Assert)来编写条件性的 ACL 规则 3. Zend_Auth 3.1. 简介 3.1.1. 适配器 3.1.2. 结果 3.1.3. 身份的持久(Persistence) 3.1.3.1. 在PHP Session 中的缺省持久(Persistence) 3.1.3.2. 实现...

    crash掉数据库的若干可能

    可以尝试将嵌套的多集操作拆分为多个步骤或使用不同的数据处理方法,如临时表或集合变量。此外,确保在执行涉及多集的操作前,对数据库进行更新,应用最新的补丁和修复程序,以解决可能存在的已知问题。 总结: 在...

    selenium 页面自动化测试

    我们可以使用Selenium提供的方法检查页面状态,如元素是否存在、文本是否匹配等,以确保测试的正确性。 ```python assert "Expected Text" in driver.page_source # 验证页面是否包含预期文本 ``` 6. **结束...

    Android读取数据库信息

    在这个例子中,`getReadableDatabase()`方法用于获取只读的数据库实例,如果需要进行写入操作,则应使用`getWritableDatabase()`. `rawQuery()`方法执行SQL查询,返回一个`Cursor`对象,它就像一个指针,可以遍历...

    Android SQLite数据库操作demo

    6. 查询数据:可以使用SELECT语句从表中获取数据。在Android中,我们通常使用SQLiteQueryBuilder或rawQuery()方法执行查询,并通过Cursor对象遍历结果。 7. 更新数据:使用UPDATE语句更新表中的特定记录。在Android...

    Selenium_python之学习笔记

    6. **断言**:为了验证页面状态,可以使用断言方法。例如,确保某个元素可见: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from ...

    ABAP關鍵字說明(E文版)

    16. **ASSERT**: 断言,用于测试代码正确性,如`ASSERT condition.`。 17. **WHILE/ENDWHILE**: 循环结构,如`WHILE condition. ... ENDWHILE.`。 18. **REPLACE**: 字符串操作,替换子字符串,如`REPLACE ALL ...

    VisualC++(VC++)编程序软件语言关键字大全集合参考.pdf

    cast`、`return`、`safecast`、`sealed`、`selectany`、`short`、`signed`、`sizeof`、`static`、`static_assert`、`struct`、`switch`、`template`、`this`、`thread`、`throw`、`true`、`try`、`typedef`、`typeid...

Global site tag (gtag.js) - Google Analytics