2011-03-28 11 views
8

मैं पेज का उपयोग करना चाहता हूं। यह देखने के लिए कि क्या पृष्ठ उपयोगकर्ता को लेबल प्रदर्शित नहीं करता है, यहां HTML में यह क्या है:capybara: page.should have_no_content डिस्प्ले के लिए सही तरीके से काम नहीं करता है: कोई भी तत्व

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

तो जब मैं पेज का उपयोग करता हूं। Should have_no_content ("मेरा खाता") है, यह सत्य के बजाय झूठा लौटाता है।

उत्तर

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 
12

आपको इस जानकारी की

find('#account_input').should_not be_visible 
0

मैं

page.should_not (have_content (ARG1) नहीं होना चाहिए लागू करने के लिए एक और रास्ता मिल गया)

-1

तो जब मैं पेज का उपयोग करता हूं। Should have_no_content ("मेरा खाता"), यह सत्य के बदले गलत है।

यह गलत होना चाहिए। इस बारे में इस बारे में सोचें: यदि आपके पृष्ठ में "मेरा खाता" सामग्री है, तो have_content सत्य वापस आ जाएगा, इस प्रकार है_no_content को गलत लौटना चाहिए। और कारण - यह कहना सही नहीं है कि HTML में सामग्री "मेरा खाता" नहीं है। इस प्रकार, यह गलत है।

+0

यह सच होना चाहिए, झूठी नहीं। यह केवल एक तरीका है जो कहता है: "यह सच है कि इस तत्व में यह सामग्री नहीं है"। – Clawsy

संबंधित मुद्दे