Hay ocasiones en las que necesitamos acceder a elementos (generalmente textos) que se encuentran dentro de tablas HTML. Sin embargo, es muy raro que un diseñador web proporcione un atributo de identificación o nombre a una determinada celda de la tabla. Por lo tanto, no podemos utilizar los métodos habituales como "By.id ()", "By.name ()" o "By.cssSelector ()". En este caso, la opción más confiable es acceder a ellos usando el método "By.xpath ()".
En este tutorial, aprenderá:
Cómo escribir XPath para tabla
Acceder a tablas anidadas
Usar atributos como predicados
Atajo: use el elemento Inspeccionar para acceder a tablas en selenio
Cómo escribir XPath para tabla
Considere el código HTML a continuación.
Usaremos XPath para obtener el texto interno de la celda que contiene el texto "cuarta celda".
Paso 1: establecer el elemento principal (tabla)
Los localizadores XPath en WebDriver siempre comienzan con una barra diagonal doble "//" y luego siguen el elemento principal . Dado que se trata de tablas, el elemento padre siempre debe ser la etiqueta
. Por lo tanto, la primera parte de nuestro localizador XPath debería comenzar con "// tabla".
Paso 2: agregue los elementos secundarios
El elemento inmediatamente debajo de
es
, por lo que podemos decir que
es el "hijo" de
. Y también,
es el "padre" de
. Todos los elementos secundarios en XPath se colocan a la derecha de su elemento principal, separados por una barra diagonal "/" como el código que se muestra a continuación.
Paso 3: agregar predicados
El elemento
contiene dos etiquetas
. Ahora podemos decir que estas dos etiquetas
son "hijos" de
. En consecuencia, podemos decir que
es el padre de ambos elementos
.
Otra cosa que podemos concluir es que los dos elementos
son hermanos. Los hermanos se refieren a elementos secundarios que tienen el mismo padre .
Para llegar al
al que queremos acceder (el que tiene el texto "cuarta celda"), primero debemos acceder al segundo
y no al primero. Si simplemente escribimos "// table / tbody / tr", estaremos accediendo a la primera etiqueta
.
Entonces, ¿cómo accedemos al segundo
entonces? La respuesta a esto es usar Predicados .
Los predicados son números o atributos HTML encerrados en un par de corchetes "[]" que distinguen un elemento hijo de sus hermanos . Dado que el
al que necesitamos acceder es el segundo, usaremos "[2]" como predicado.
Si no usamos ningún predicado, XPath accederá al primer hermano. Por lo tanto, podemos acceder al primer
usando cualquiera de estos códigos XPath.
Paso 4: agregue los elementos secundarios sucesivos utilizando los predicados adecuados
El siguiente elemento al que debemos acceder es el segundo
. Aplicando los principios que hemos aprendido en los pasos 2 y 3, finalizaremos nuestro código XPath para que sea como el que se muestra a continuación.
Ahora que tenemos el localizador XPath correcto, ya podemos acceder a la celda que queríamos y obtener su texto interno usando el siguiente código. Se asume que ha guardado el código HTML anterior como "newhtml.html" dentro de su C Drive.
public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Controlador WebDriver = nuevo FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// tabla / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}
Acceder a tablas anidadas
Los mismos principios discutidos anteriormente se aplican a las tablas anidadas. Las tablas anidadas son tablas ubicadas dentro de otra tabla . A continuación se muestra un ejemplo.
Para acceder a la celda con el texto "4-5-6" usando los conceptos "// padre / hijo" y de predicado de la sección anterior, deberíamos poder generar el código XPath a continuación.
El siguiente código de WebDriver debería poder recuperar el texto interno de la celda a la que estamos accediendo.
El resultado a continuación confirma que se accedió correctamente a la tabla interna.
Usar atributos como predicados
Si el elemento está escrito profundamente dentro del código HTML de modo que el número a usar para el predicado sea muy difícil de determinar, podemos usar el atributo único de ese elemento en su lugar.
En el siguiente ejemplo, la celda "Nueva York a Chicago" se encuentra en el código HTML de la página de inicio de Mercury Tours.
En este caso, podemos usar el atributo único de la tabla (ancho = "270") como predicado. Los atributos se utilizan como predicados prefijándolos con el símbolo @ . En el ejemplo anterior, la celda "Nueva York a Chicago" se encuentra en el primer
del cuarto
, por lo que nuestro XPath debería ser como se muestra a continuación.
Recuerde que cuando colocamos el código XPath en Java, debemos usar el carácter de escape barra inclinada hacia atrás "\" para las comillas dobles en ambos lados de "270" para que el argumento de cadena de By.xpath () no termine prematuramente .
Ahora estamos listos para acceder a esa celda usando el siguiente código.
public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Controlador WebDriver = nuevo FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (Por.xpath ("// tabla [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}
Atajo: use el elemento Inspeccionar para acceder a tablas en selenio
Si el número o atributo de un elemento es extremadamente difícil o imposible de obtener, la forma más rápida de generar el código XPath es usando Inspect Element.
Considere el siguiente ejemplo de la página de inicio de Mercury Tours.
Paso 1
Utilice Firebug para obtener el código XPath.
Paso 2
Busque el primer elemento principal de la "tabla" y elimine todo lo que está a la izquierda.
Paso 3
Prefije la parte restante del código con doble barra inclinada "//" y cópielo en su código de WebDriver.
El código de WebDriver a continuación podrá recuperar con éxito el texto interno del elemento al que estamos accediendo.
By.xpath () se usa comúnmente para acceder a los elementos de la tabla.
Si el elemento está escrito profundamente dentro del código HTML de modo que el número a usar para el predicado sea muy difícil de determinar, podemos usar el atributo único de ese elemento en su lugar.
Los atributos se utilizan como predicados prefijándolos con el símbolo @.
Utilice el elemento Inspeccionar para acceder a tablas en selenio