2013-08-12 17 views
5

Cercare il modo migliore per determinare se un elemento è veramente vuoto.L'elemento di asserzione di Capibara è vuoto

<table id="foo"> 
    <tr> 
    <td>Cell One</td> 
    <td></td> 
    </tr> 
</table> 

Ma entrambi questi ritorno true:

find("#foo td:nth-child(1)").should have_content('') 
find("#foo td:nth-child(2)").should have_content('') 

Così ho usato questo:

find("#foo td:nth-child(1)").text.should == 'Cell One' 
find("#foo td:nth-child(2)").text.should == '' 

che sembra funzionare, ma non controllare per vedere se l'elemento può contenere altri elementi. Ad esempio può contenere un'immagine, un collegamento o un intervallo.

Posso controllare ciascuno di quelli singolarmente (immagine, collegamento o intervallo), ma sembra che ci dovrebbe essere un modo migliore.

C'è un modo per verificare se l'elemento è vuoto?

+0

Per le vostre esigenze, è la seguente vuoto? '' –

+0

Questa è una buona domanda, ma direi di no. –

+0

Probabilmente sarebbe più semplice controllare se la sua proprietà innerHTML è '" "', altrimenti puoi anche controllare '.children.length === 0' ma fallisce per l'esempio precedente –

risposta

5

È possibile effettuare le seguenti per verificare che l'elemento non ha alcun testo e non ha elementi secondari (cioè è in realtà vuoto):

# Has no child elements 
find("#foo td:nth-child(2)").all('*').length.should == 0 

# Has no text 
find("#foo td:nth-child(2)").text.should=='' 
Problemi correlati