Rails 的水豚:如何只查找不可见元素
Capybara with Rails: how to find ONLY invisible elements
我在 Rails 项目(Rails 5.2.0).
中使用 Capybara(capybara 3.1.0) 进行系统测试
如何保证元素不可见
我一直在使用 visible: false
选项,直到我发现它也匹配可见元素。
例如我使用:
find("h1", visible: false).text
无一例外,控制台打印h1的文字,而h1肯定是可见的。
这是预期的吗?这种行为背后的逻辑是什么?确保元素不可见的正确方法是什么?
当 Capybara 首次发布时,visible 的值(true 或 false)意味着启用或禁用可见性过滤器,出于遗留测试原因一直存在。您还可以指定 :visible、:hidden、:all (https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Finders#find-instance_method) 的值,其中 :visible
与 true
的行为相同,:all
与 [=14= 的行为相同] 和 :hidden
将 return 只有不可见元素。
这意味着您的 find
需要变成
find("h1", visible: :hidden).text(:all)
如果需要文本,则需要使用 :all
参数,因为 text
默认仅显示文本 (https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method)
我在 Rails 项目(Rails 5.2.0).
中使用 Capybara(capybara 3.1.0) 进行系统测试如何保证元素不可见
我一直在使用 visible: false
选项,直到我发现它也匹配可见元素。
例如我使用:
find("h1", visible: false).text
无一例外,控制台打印h1的文字,而h1肯定是可见的。
这是预期的吗?这种行为背后的逻辑是什么?确保元素不可见的正确方法是什么?
当 Capybara 首次发布时,visible 的值(true 或 false)意味着启用或禁用可见性过滤器,出于遗留测试原因一直存在。您还可以指定 :visible、:hidden、:all (https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Finders#find-instance_method) 的值,其中 :visible
与 true
的行为相同,:all
与 [=14= 的行为相同] 和 :hidden
将 return 只有不可见元素。
这意味着您的 find
需要变成
find("h1", visible: :hidden).text(:all)
如果需要文本,则需要使用 :all
参数,因为 text
默认仅显示文本 (https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method)