ruby-on-rails - 带 Rails 的 Capybara:如何只找到不可见的元素
问题描述
我在 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
false
:hidden
这意味着您find
需要成为
find("h1", visible: :hidden).text(:all)
:all
如果您想要文本,则使用所需的参数,因为text
默认为仅可见文本(https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method)
推荐阅读
- javascript - AWS Lambda 处理程序中是否需要回调?
- forms - 是的,一起验证数组中的字段
- sql-server - 使用 SQL server 2017,如何将浮点数(IEEE754 单精度 32 位)转换为二进制?
- swiftui - SwiftUI 中带有嵌套视图的上下文菜单
- javascript - Javascript按类删除动态创建的iframe元素?
- firebase - 如何在 Flutter 中禁用 Firebase 为 Web 自动生成 UUID
- web-scraping - 从电子商务网站上抓取产品页面
- c# - 加载位图资源时,.net 5 应用程序不支持 BinaryFormatter
- html - 立场:粘不工作!在 FLEXBOX 内
- c++ - Emscripten 生成文件