capybara:page.should have_no_content无法正常显示display:none元素

时间:2011-03-28 01:11:03

标签: ruby-on-rails cucumber integration-testing capybara

我想使用page.should have_no_content来检查页面是否没有向用户显示标签,这里是HTML中的内容:

<li id="account_input" style="display: none;">
    <label for="account_name">My Account</label>
    ...
</li>

因此,当我使用page.should have_no_content(“我的帐户”)时,它会返回false而不是true。

4 个答案:

答案 0 :(得分:12)

您可以使用此声明

find('#account_input').should_not be_visible

答案 1 :(得分:3)

我发现a solution使用了:

Then /^"([^\"]+)" should not be visible$/ do |text|
  paths = [
    "//*[@class='hidden']/*[contains(.,'#{text}')]",
    "//*[@class='invisible']/*[contains(.,'#{text}')]",
    "//*[@style='display: none;']/*[contains(.,'#{text}')]"
  ]
  xpath = paths.join '|'
  page.should have_xpath(xpath)
end

答案 2 :(得分:0)

我发现另一种实施方式不应该

page.should_not(have_content(arg1))

答案 3 :(得分:-1)

  

因此,当我使用page.should have_no_content(“我的帐户”)时,它会返回   是假的而不是真的。

应该是假的。这样考虑一下:如果您的页面确实包含“我的帐户”内容,那么has_content将返回True,因此have_no_content应返回False。原因是 - 并不是说​​HTML中没有“我的帐户”内容。因此,它是假的。