【问题标题】:Capybara is finding elements that would not be visible to the userCapybara 正在寻找用户看不到的元素
【发布时间】:2016-12-07 21:56:35
【问题描述】:

我正在使用 capybara 创建 RSpec 功能测试,用于使用 Bootstrap 选项卡的测试。

我的问题是,即使不使用click_link "tab name" capybara 仍然能够找到位于该选项卡内的元素。但是,在我的本地服务器中查看页面时,选项卡运行正常。

水豚究竟是如何找到元素的?它是否以某种方式使用了绕过引导选项卡的系统?

有没有办法解决这个问题?

可能涉及的因素:

  • 出于各种原因,我正在进行的项目将这些“请求”测试称为“请求”测试,而不是功能测试。这会改变水豚的某些行为吗?

更新: - 我目前没有设置js: true。现在正在研究可能的解决方案。

【问题讨论】:

  • 如果您没有使用支持 JS 的驱动程序,那么您将使用默认的机架测试驱动程序。该驱动程序不处理大多数 CSS,再加上不支持 JS,这意味着引导选项卡根本无法运行
  • 而且,是的 - 当使用 Capybara 时,它应该是一个“功能”规范而不是“请求”规范,特别是如果你使用的是普通的 require 'capybara/rspec - 将其标记为功能测试应该可以防止避免使用与同时使用 Capybara 不兼容的 get/``post`/etc 方法。
  • @ThomasWalpole,谢谢,这很有帮助。然而,该项目的负责人希望我尽可能多地离开。是否绝对有必要更改功能规格,或者只是强烈推荐它?您知道在使用请求规范而不是功能规范时实际上会发生什么问题吗?
  • 它只是保护您免受一些常见的初学者错误,并且您必须手动将 capybara dsl 包含到请求规范中才能在那里使用它们。只需将 type: :feature 元数据添加到特定测试就很容易了

标签: twitter-bootstrap capybara rspec-rails


【解决方案1】:

这种行为的原因是 :js 被设置为 false,因此 capybara 默认使用基于机架的驱动程序。此驱动程序不处理大多数 CSS,并且 CSS 加上不支持 JavaScript 意味着引导选项卡将不起作用。因此,无论是否点击了任何选项卡链接,每个选项卡基本上都可以同时查看和选择。这意味着仍然可以单击这些链接,但它没有做任何事情。

感谢@ThomasWalpole(见 cmets)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2016-11-11
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多