2011-01-06 18 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. 

Documento de ejemplo.Obtenga todos los hijos inmediatos y nada más profundo

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

resultado esperado es div y span. No tengo control sobre los documentos y varían mucho.

Respuesta

23

("*") proporciona todos los elementos secundarios del nodo de contexto. Así que utilice:

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

Ok. Eliminando comentarios ... –

6
/html/body/* 

Seleccionará solo elementos secundarios inmediatos de body.

Recuerde que si copia todos estos nodos seleccionados, también copiará su contenido. Por lo tanto, si lo hace copy-of, table también se producirá en el documento resultante.

Además, recomendaría leer al menos los conceptos básicos de XPath, usted hace muchas preguntas similares.

+0

+1 Respuesta correcta. Usted escribió: * nodeset contendrá sus elementos secundarios también *. Esto está mal o no está claro tus pensamientos. Creo que podrías eliminar eso sin perderlo. –

+0

@ Alejandro, sí, esa no es una buena formulación, no puedo decir esto correctamente. ¿Cómo dirías eso? – Flack

+1

Quizás quieras decir algo como: * Recuerda que si copias todos los nodos seleccionados, también estás copiando el contenido de ellos. * –

4

Ésta es otra manera de conseguir los hijos directos de un elemento:

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

El child en lugar de descendant mayo de ayuda a alguien.

Cuestiones relacionadas