2011-11-23 24 views
15

Ya he intentado usar la sintaxis ">", pero el selenio no lo acepta, sé que hay una forma de obtenerlo mediante Xpath pero todo nuestro proyecto está escrito usando selectores de CSS.¿Cómo puedo obtener todos los elementos secundarios de los elementos con selectores CSS que usan selenio?

Estoy tratando de almacenar una lista que contendrá todos los hijos inmediatos de un elemento pero no sus hijos (descendientes), cuando utilizo la sintaxis "*" obtengo todos los descendientes del elemento.

+0

¿Quiere decir que 'body> *' no le da todos los descendientes directos de la etiqueta corporal en Selenio? – jro

+0

Puede dar un ejemplo del selector de CSS que está utilizando. En Selenium RC tenemos la mayor parte de nuestro código usando selectores de CSS sin problemas, así que me sorprendería si en Selenium2 hubieran dado un paso atrás. – Skuld

+0

@jro, he intentado usar 'someWebElement.findElement (By.cssSelector ("> *"))' La excepción arrojada es: "invalidElementStateException". – Shiran

Respuesta

22

Debe especificar una etiqueta para comenzar desde ... si desea "todos los elementos hijos inmediatos", simplemente obtendrá todos los elementos, que no es realmente lo que desea.

Para obtener "todos los niños inmediatas de un elemento, pero no sus hijos" para body, utilizan body > *. Para obtener todos los descendientes directos de <div id='question'>, utilice div#question > *.

+0

Gracias! ¡eso fue útil! Tratamos de usar el> * en relatividad con webElement (como: 'someWebElement.findElements (By.cssSelector ("> * "))), en lugar de: webDriver.findElements (By.cssSelector (elementLocator +"> * ") .'' – Shiran

+3

¡Tenga en cuenta que este es un selector extremadamente ineficaz! Los selectores Css se validan de derecha a izquierda, por lo que al usar el asterisco (*, alias selector universal) al final del selector, el navegador seleccionará todos los elementos y luego comenzará a filtrar (en este caso: solo los elementos que son hijos directos del elemento 'cuerpo'). Por lo tanto, para páginas pequeñas esto no sería un problema, pero en aplicaciones más grandes de una sola página puede ralentizar las cosas ... –

Cuestiones relacionadas