首页 > 解决方案 > 带 Rails 的 Capybara:如何只找到不可见的元素

问题描述

我在 Rails 项目(Rails 5.2.0)中使用 Capybara(capybara 3.1.0)进行系统测试。

确保元素不可见的方法是什么。

我一直在使用该visible: false选项,直到我发现它也与可见元素匹配。

例如我使用:

find("h1", visible: false).text

也不例外,h1的文字是打印在控制台的,而h1是绝对可见的。

这是预期的吗?这种行为背后的逻辑是什么?确保元素不可见的正确方法是什么?

标签: ruby-on-railsautomated-testscapybara

解决方案


Capybara 首次发布时,visible 的值(true 或 false)意味着启用或禁用可见性过滤器,因为遗留测试原因一直存在。您还可以指定 :visible, :hidden, :all ( https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Finders#find-instance_method ) 的值,其中行为与,行为:visible相同相同并且将只返回不可见的元素。true:allfalse:hidden

这意味着您find需要成为

find("h1", visible: :hidden).text(:all)

:all如果您想要文本,则使用所需的参数,因为text默认为仅可见文本(https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#text-instance_method


推荐阅读