capybara: page.should have_no_content doesn't work correctly for display:none element

后端 未结 4 2075
你的背包
你的背包 2020-12-16 22:10

I would like to use page.should have_no_content to check if the page doesn\'t display the label to user, here what it is in HTML:

  • 相关标签:
    4条回答
    • 2020-12-16 22:19

      I found another way to implement should not have

      page.should_not( have_content(arg1))

      0 讨论(0)
    • 2020-12-16 22:23

      I found a solution using:

      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
      
      0 讨论(0)
    • 2020-12-16 22:33

      So when I use page.should have_no_content("My Account"), it returns false instead of true.

      It should be false. Think about it this way: if your page does have the content "My account", then have_content would return True, thus have_no_content should return False. And the reason - it is not true to say that the HTML does not have the content "My account" in it. Thus, it is False.

      0 讨论(0)
    • 2020-12-16 22:43

      You could use this statement

      find('#account_input').should_not be_visible
      
      0 讨论(0)
    提交回复
    热议问题