2016-01-30 26 views
0

在Rails应用程序,我有以下的CSS是返回true。可见?当它应该是假的

#step2 { display:none } 

我对这个条件的测试是在这里

Then /^I should not see "([^\"]*)" because it is hidden$/ do |id| 
    s=page.find(id) 
    expect(s.visible?).to be false 
end 

当我手动,在弹出的页面部分不可见。

的错误是

expected true 
     got false 
    (RSpec::Expectations::ExpectationNotMetError) 
    ./features/step_definitions/navagation_steps.rb:85:in `/^I should not see "([^\"]*)" because it is hidden$/' 
    features/profile.feature:10:in `And I should not see "#step2" because it is hidden' 

的page.find调用似乎正常工作。如果我打印我得到的物体

#<Capybara::Node::Element:0x007fd42ea30818> 

我试过各种不同的咒语都无济于事。这似乎是最直接的。有没有人在这里看到这个问题?它让我难住。

+0

尝试'期待(s.visible?)。到be_falsey' .. –

+0

你跟水豚这些测试使用的是什么驱动? –

+0

告诉你我是一个新手。我不知道司机是什么。你如何确定? –

回答

0

期待(s.visible?)。not_to进行EQ(真)

这似乎是工作。

+0

你试过我的吗?我所说的会起作用,因为你的期望是错误的。 –

+0

是的,我试过了,它不适合我。不知道为什么。 –

0

使用的RSpec提供的动态谓词匹配器将读取更好,提供更好的错误消息

expect(s).not_to be_visible 

注意 - 如果您使用的是与水豚它不会处理最“外部默认架试车手“CSS所以它不能够确定的知名度,除非显示:无在元素的样式属性

0

您可以使用以下提到的方法,如果您要验证的元素不是页面上可见

Then /^I should not see "([^\"]*)" because it is hidden$/ do |id| 
    expect(page).to have_selector(<SELECTOR>,:visible => false) 
end 

或者,你也可以做同样喜欢

Then /^I should not see "([^\"]*)" because it is hidden$/ do |id| 
    page.find(<SELECTOR>, :visible => false) 
end 

注:<SELECTOR>是一个元素的CSS选择器。

希望这有助于:)

相关问题