RSpec 水豚找不到元素

RSpec Capybara not finding element

我正在 Rails 使用 RSpec 水豚编写功能测试。由于某种原因,它不是 id 的元素。我已经尝试了几种方法来了解为什么找不到元素,但没有任何帮助。

这是我的测试

require 'rails_helper'

include Warden::Test::Helpers

feature 'Dipole options checkbox' do
  before(:each) do
    @user = FactoryGirl.create(:user)
    @group = FactoryGirl.create(:group)
    @user.groups << @group
    @stack = FactoryGirl.create(:stack, user: @user, group: @group)
    @param_set = FactoryGirl.create(:param_set, user: @user, group: @group, stack: @stack)
  end

  scenario "when check #dipole-options should be visible" do
    login_as(@user, scope: :user)
    visit "/param_sets/#{@param_set.id}/edit#box"

    page.find(:path, "//input[@id='param_set_mat_dipoles']")

   end
end

我做了一些调试,当我查看返回的 HTML 时,我可以看到 ID param_set_mat_dipoles 存在

(byebug) body.include? "#param_set_mat_dipoles"
true

但是当我在 rspec 控制台中检查时

page.find("#param_set_mat_dipoles")

找不到元素。

我做了一些研究,它能够找到父级 div 的 ID,但是当我检查该 ID 中的操作元素总数 (paragraph/p) 时,它找不到最后 2.

有人有过这个吗?会不会是元素嵌套太深导致水豚找不到?

PS:这是它可以到达的xpath:

path="/html/body/div/div/div[2]/form/div[2]/div[4]/p[7]"

它会找到我需要的 xpath:

path="/html/body/div/div/div[2]/form/div[2]/div[4]/p[9]"

我解决了这个问题。事实证明,在我的视图页面上,如果用户不属于某个组,它会显示我正在寻找的字段。

实际代码没问题。