RSpec Capybara找不到元素

时间:2017-02-17 11:40:20

标签: ruby-on-rails ruby xpath rspec capybara

我正在使用RSpec和Capybara在Rails中编写功能测试。出于某种原因,它并不是它的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中的op元素总数(段落/ p)时,它没有找到最后的2 。

以前有人有这个吗?可能是元素是深深嵌套到Capybara无法找到它吗?

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]"

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。事实证明,在我的视图页面上,如果用户不是某个组的一部分,那么它将显示我正在寻找的字段。

实际代码没问题。