2011-01-06 11 views
19
WebElement body = browser.findElement(By.xpath("//body")); 

body.findElement(By.xpath("")); // I want to get all child elements 
           // inside body, but nothing deeper. 

Esempio di documento.Ottieni tutti i bambini immediati e niente più in profondità

<html> 
    <body> 
    <div> 
    </div> 
    <span> 
     <table> 
     </table> 
    </span> 
    </body> 
</html> 

risultato atteso è div e span. Non ho controllo sui documenti e variano molto.

risposta

23

("*") fornisce tutti gli elementi figlio del nodo di contesto. In modo da utilizzare:

body.findElement(By.xpath("*")); 
+1

Ok. Eliminazione di commenti ... –

6
/html/body/* 

consente di selezionare solo gli elementi figli immediati di body.

Ricordare che se si copiano tutti questi nodi selezionati, si copia anche il loro contenuto. Pertanto, se si esegue copy-of, verrà prodotto anche il documento table nel documento risultante.

Inoltre, vorrei raccomandare di leggere almeno le basi XPath, si pongono troppe domande simili.

+0

+1 Risposta corretta. Hai scritto: * nodeset conterrà anche i loro elementi figli *. Questo è sbagliato o non è chiaro i tuoi pensieri. Penso che potresti rimuoverlo senza perdere. –

+0

@ Alejandro, sì, questa non è una buona formulazione, non posso pronunciarla correttamente. Come lo diresti? – Flack

+1

Forse volevi dire qualcosa del tipo: * Ricorda che se copi tutti i nodi selezionati, stai copiando anche il loro contenuto. * –

4

Ecco un altro modo per ottenere i figli diretti di un elemento:

element.findElement(By.xpath("./*")); 
1

La child invece di descendant maggio aiuta qualcuno.

Problemi correlati