我正在使用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]"
答案 0 :(得分:0)
我解决了这个问题。事实证明,在我的视图页面上,如果用户不是某个组的一部分,那么它将显示我正在寻找的字段。
实际代码没问题。