ruby-on-rails - 检查在 Rails Capybara 中可见不到一秒的元素可见性
问题描述
我正在尝试编写一个集成测试,我必须在其中检查按钮单击时元素的可见性。该代码在一台机器上完美运行,而在另一台机器上则失败。元素会一直显示,直到数据来自后端。所以它的可见性也取决于机器的速度。那是问题吗?这是代码:
assert page.has_css?('#my_element_id')
assert find('#my_element_id', visible: true)
但我收到一个错误:expected false to be truthy
.
有没有其他方法可以断言元素的可见性?
解决方案
你也可以试试:
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?
因此,您可以等待后端数据通过,然后检查可见性。如果您尝试在该数据之前检查它是否可见,我不太确定,这似乎取决于机器与我的互联网连接。
推荐阅读
- spring - 具有安全性的 Spring Boot Starter - Okta oauth2 的问题
- tensorflow - TensorFlow中如何清除整个网络结构
- javascript - npm Custom Package bin 脚本作为 Windows JScript 文件运行?
- domain-driven-design - 将 UnitOfWork 与 DDD 原则一起使用有什么意义?
- haskell - Haskell 超类型和子类型
- django - django 产品删除
- pyspark - Pyspark:是否有必要为 ml 算法使用“StringIndexer”创建“标签”列?为什么不能直接使用特征列?
- javascript - React - 在上下文中更改状态而不是重新渲染 DOM
- python - 使用烧瓶 python 集成平台数字人类 uneeq 来自 webhook 的 Dialogflow 响应
- c - 从 git 中提取时,如何在 CLions 上使用 C 启用代码洞察力?