首页 > 解决方案 > 检查在 Rails Capybara 中可见不到一秒的元素可见性

问题描述

我正在尝试编写一个集成测试,我必须在其中检查按钮单击时元素的可见性。该代码在一台机器上完美运行,而在另一台机器上则失败。元素会一直显示,直到数据来自后端。所以它的可见性也取决于机器的速度。那是问题吗?这是代码:

assert page.has_css?('#my_element_id')

assert find('#my_element_id', visible: true)

但我收到一个错误:expected false to be truthy.

有没有其他方法可以断言元素的可见性?

标签: ruby-on-railscapybara

解决方案


你也可以试试: assert find('#my_element_id').visible?

来自:https ://rubydoc.info/gems/capybara/0.4.0/Capybara/Element#visible%3F-instance_method

然而,它确实说:

可见的?⇒ 布尔值

元素是否可见。并非所有驱动程序都支持 CSS,因此结果可能不准确。

我假设您在谈论是否#my_element_id可见。

编辑:

如果您在检查具有 id 的元素之前先等待元素可见,则#my_element_id此帖子可能会有所帮助: How to make Capybara check for visibility after some JS has run?

因此,您可以等待后端数据通过,然后检查可见性。如果您尝试在该数据之前检查它是否可见,我不太确定,这似乎取决于机器与我的互联网连接。


推荐阅读