2017-02-17 19 views
0

Я пишу тест функции в Rails, используя RSpec Capybara. По какой-то причине это не элемент по его идентификатору. Я пробовал несколько вещей, чтобы понять, почему это не находит элемент, но ничего не помогло.RSpec Capybara не находит элемент

Вот мой тест

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, который возвращается, я могу видеть param_set_mat_dipoles идентификатор присутствует

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

Но когда я проверяю с в консоли rspec

page.find("#param_set_mat_dipoles") 

не может найти элемент.

Я сделал некоторые исследования, и он может найти идентификатор родительского DIV, но когда я проверяю общие элементы число оп (пункт/р) в этой ID это не найдя последнюю 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]" 
+0

Это предположение, но попробуйте использовать 'page.find (" # param_set_mat_dipoles ", visible: false)' –

ответ

0

Я зафиксировал проблему. Оказалось, что на моей странице просмотра, если пользователь не был частью определенной группы, он покажет поле, которое я искал.

Фактический код был ОК.