handling web tables frames
En el último tutorial de Selenium WebDriver, aprendimos varias comandos de Selenium WebDriver utilizados habitualmente incluidos temas importantes como el manejo de iframe y excepciones en los scripts de Selenium.
Avanzando en nuestro integral serie de tutoriales sobre selenio , en este tutorial discutiremos sobre manejo de tablas web, iframe y elementos dinámicos que son parte esencial de cualquier proyecto web.
Este tutorial consta de 3 temas diferentes y sus mecanismos de manejo en secuencia de comandos de selenio.
- Tablas web / tablas HTML
- Marcos
- Elementos dinámicos
Lo que vas a aprender:
# 1) Tablas web / tablas HTML
En este módulo, aprenderemos sobre las tablas web o tablas HTML en una página web, las etiquetas disponibles en HTML y cómo manejar las tablas web de forma dinámica.
Las tablas web son básicamente un grupo de elementos que se almacenan lógicamente en un formato de fila y columna. Se utiliza para organizar información similar en una página web.
A continuación se muestra un ejemplo de tabla Html:
A continuación se muestra el fragmento de la estructura HTML de una tabla HTML:
Las siguientes etiquetas se definen generalmente en tablas html:
1.La etiqueta 'tabla' define la tabla HTML.
2.La etiqueta 'tbody' define un contenedor para filas y columnas.
3.’tr ’define filas en una tabla HTML.
4.’td ’/’ th ’define la columna de una tabla HTML.
Encuentre los detalles de una tabla web:
Hay muchas formas de manejar una tabla web.
implementación de c ++ de lista doblemente enlazada
Enfoque # 1 :
A continuación se muestra el xpath de una de las celdas en la tabla html. Digamos 'nombre'
// div [@ id = ’main’] / table [1] / tbody / tr [1] / th [1]
tr [1] define la primera fila y th [1] define la primera columna.
Si un número de filas y columnas es siempre constante, digamos que nuestra tabla HTML siempre tendrá 5 filas y 3 columnas.
|_+_|Excepto por el número de fila y columna, cada componente de XPath sigue siendo el mismo. Por lo tanto, puede iterar usando 'for loop' para cada fila y columna como se mencionó anteriormente.
Enfoque # 2 :
El primer enfoque es el más adecuado para la mesa que no cambia sus dimensiones y siempre permanece igual. El enfoque anterior no será una solución perfecta para cambiar dinámicamente las tablas web.
Tomemos como ejemplo la tabla HTML anterior:
|_+_|Paso 1 : Primero obtenga la tabla HTML completa y almacénela en una variable 'htmltable' de tipo elemento web.
Paso 2 : Obtenga todas las filas con el nombre de etiqueta 'tr' y almacene todos los elementos en una lista de elementos web. Ahora todos los elementos con la etiqueta 'tr' se almacenan en la lista de 'filas'.
Paso 3 : Recorra cada fila y obtenga la lista de elementos con etiqueta 'Th'. 'Filas.get (0)' dará la primera fila y 'FindElements (By.tagName ( 'Th' ))’ dará una lista de columnas para la fila.
Paso 4 : Iterar usando 'Columnas.getsize ()' y obtenga los detalles de cada celda.
Nota : El enfoque anterior será más adecuado si las dimensiones de la mesa cambian dinámicamente.
Con esto concluye el tema de cómo manejar tablas web en selenio. A continuación, aprenderemos a manejar un elemento dentro de un marco.
# 2) Marcos
En esta sección, aprenderemos sobre los marcos en una página web y cómo identificar los marcos. Además, descubriremos cómo podemos manejar un marco en Selenium WebDriver.
A muchos desarrolladores les gusta colocar elementos dentro de un marco. El marco es como un contenedor donde se pueden agrupar pocos elementos.
Identificación de un marco:
Diferentes formas de saber si el elemento está presente dentro de un marco o no
#1 . Haz clic derecho en el elemento. Compruebe si la opción 'Este marco' está disponible. Si esta opción de marco está disponible, significa que el elemento está dentro de un marco.
#2 . Vea el código fuente de la página web y compruebe si hay alguna etiqueta disponible para 'iframe'.
softwares para descargar videos desde cualquier sitio web
Verificar la cantidad de marcos en una página web :
Todos los marcos tienen el nombre de la etiqueta como 'iframe'.
List frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
En el ejemplo anterior : frameList tendrá toda la lista de marcos y frameList.size () dará el número de fotogramas.
Manejo de un elemento dentro del marco:
Si un elemento está dentro de un marco, el control debe cambiar primero al marco y luego comenzar a operar en los elementos.
Paso 1 : Para cambiar dentro de un marco:
driver.switchTo (). frame (1); // pasar el número de fotograma como parámetro.
o
driver.switchTo (). frame ('Nombre del marco'); // pasa el nombre del marco como parámetro.
o
driver.switchTo (). frame ('xpath del marco');
Paso 2 : Después de cambiar dentro de un marco, el selenio podrá operar sobre elementos.
driver.findElement ( //*[@id=’username’]).sendKeys(“username”);
driver.findElement ( //*[@id=’pass’]).sendKeys(“password”);
Aquí, hemos aprendido cómo manejar un elemento dentro del marco y, a continuación, cubriremos las diferentes formas de manejar un elemento dinámico.
# 3) Elementos dinámicos
En esta sección aprenderemos diferentes formas de manejar elementos dinámicos y construir un XPath genérico.
En algunos escenarios, los atributos de los elementos cambian dinámicamente. Puede ser 'id', 'nombre', etc.
Ejemplo : digamos que el 'id' de un campo de nombre de usuario es 'username_123' y el XPath será
// * [@ id = ’username_123 ′] pero cuando vuelva a abrir la página, es posible que el campo 'id' del 'nombre de usuario' haya cambiado y el nuevo valor sea 'username_234'.
En este caso, la prueba fallará porque el selenio no pudo encontrar el XPath que ha pasado anteriormente, ya que la identificación del campo ha cambiado a algún otro valor.
Hay muchos enfoques según el tipo de problema:
cómo crear un nuevo archivo java en eclipse
Problema tipo 1: Si parte del valor del atributo cambia .
Ejemplo : Como en el ejemplo anterior, el valor de id cambia pero pocos campos permanecen constantes.
'Username_123' cambió a 'username_234' pero 'username' siempre se mantuvo constante.
Puede construir xpath de la siguiente manera:
driver.findElement (Por.xpath ( '// * [contiene (@ id,’ nombre de usuario ’)]' )). sendKeys ( 'nombre de usuario' );
conductor . findElement (Por.xpath ( '// * [empieza-con (@ id,’ usuario ’)]' )). sendKeys ( 'nombre de usuario' );
'Contiene' es un método Java que comprueba si id contiene el nombre de usuario de la subcadena.
comienza con() comprueba si algún atributo comienza con 'usuario'.
Problema tipo 2: Si el valor completo del atributo cambia dinámicamente.
Nuevamente, en este caso, podría haber diferentes enfoques:
Por ejemplo : si el id del campo 'login' cambia dinámicamente y no hay un valor constante para usar, el método contiene.
Solución : Uso de sendKeys.
Selenium proporciona diferentes API para usar teclas de función. Por ejemplo, tecla de tabulación, teclas de entrada, F5, etc.
Paso 1 : Introducir la contraseña
driver.findElement (By.id ( 'contraseña' )). sendKeys ('contraseña'));
Paso 2 : Use las funciones de las teclas para navegar al elemento.
driver.findElement (By.id ( 'contraseña' )). sendKeys (claves. INGRESAR ));
o
driver.findElement (By.id ( 'contraseña' )). sendKeys (claves. PESTAÑA ));
Conclusión
Las tablas web, los marcos y los elementos dinámicos son parte fundamental de cualquier proyecto web. Siempre es deseable escribir código efectivo para manejar tablas web y elementos dinámicos.
Comprender la construcción de XPath genérico, que es muy útil al manejar elementos dinámicos. En el caso de un marco, su script debe cambiar el marco y luego operar en el elemento.
Siguiente tutorial # 19 : En el próximo tutorial de Selenium aprenderemos sobre tipos de excepciones y cómo manejar excepciones en java en scripts de Selenium.
Publique sus consultas relacionadas con tablas web, marcos y manejo de elementos dinámicos si tiene alguno.
Lectura recomendada
- Cómo localizar elementos en los navegadores Chrome e IE para crear scripts de Selenium - Tutorial de Selenium n. ° 7
- Uso de la clase selecta de selenio para manejar elementos desplegables en una página web - Tutorial de selenio n. ° 13
- Localizadores de selenio: identificación de elementos web mediante XPath en selenio (ejemplos)
- Cómo utilizar el selector CSS para identificar elementos web para scripts de Selenium - Tutorial de Selenium n. ° 6
- Verifique la visibilidad de los elementos web usando varios tipos de comandos de WebDriver - Tutorial de Selenium n. ° 14
- Tutorial de Cucumber Selenium: Integración de Cucumber Java Selenium WebDriver
- Integración de selenio con JMeter
- Manejo de iFrames con el método switchTo () de Selenium WebDriver