Elemento web en Selenium

โšก Resumen inteligente

Elemento web en Selenium representa cada control de formulario como un objeto programable, lo que permite a los evaluadores interactuar con campos de texto, casillas de verificaciรณn, botones de radio y elementos de envรญo utilizando los mรฉtodos findElement, sendKeys, click, clear y submit a travรฉs de Java Ejemplos de cรณdigo.

  • ๐Ÿงฉ Precisiรณn del localizador: Identifique los elementos del formulario por ID, nombre, XPath o selector CSS mediante findElement() para garantizar una interacciรณn estable con el DOM.
  • โœ๏ธ Manejo de entradas: Envรญa texto editable a los campos usando sendKeys() sin sobrescribir los valores existentes durante la ejecuciรณn automatizada.
  • ๐Ÿงน Reinicio de campo: Borre los cuadros de entrada mediante el mรฉtodo clear() antes de volver a introducir los datos, evitando asรญ que queden valores residuales en las comprobaciones posteriores.
  • ๐Ÿ–ฑ๏ธ Interacciรณn con botones: Active acciones de inicio de sesiรณn o navegaciรณn mediante el mรฉtodo click() en la referencia WebElement correspondiente.
  • ๐Ÿ“จ Envรญo de formulario: Utilice submit() en cualquier elemento dentro de un formulario para que WebDriver envรญe automรกticamente el controlador de envรญo del formulario principal.
  • ๐Ÿ›ก๏ธ Consejo de estabilidad: Agregue esperas implรญcitas o explรญcitas antes de las llamadas a findElement() para evitar NoSuchElementException en pรกginas cargadas dinรกmicamente.

Elemento web en Selenium

Elemento web en Selenium

Los formularios son los elementos web fundamentales que capturan informaciรณn de los visitantes de un sitio web. Los formularios web incluyen diferentes controles de interfaz grรกfica de usuario (GUI), como cuadros de texto, campos de contraseรฑa, casillas de verificaciรณn, botones de opciรณn, menรบs desplegables y campos para archivos.

Este tutorial explica cรณmo acceder a cada elemento del formulario usando Selenium Controlador web con Java. Selenium encapsula cada elemento del formulario como un objeto de WebElement. Proporciona una API para localizar elementos y realizar acciones sobre ellos, como introducir texto, hacer clic en botones y enviar formularios. Las secciones siguientes describen los mรฉtodos disponibles para cada elemento del formulario.

Introducciรณn a WebElement FindElement,FindElements

Introducciรณn a WebElement, findElement(), findElements()

Selenium WebDriver representa un elemento de formulario simple como un objeto de Elemento web.

WebDriver identifica los elementos del formulario utilizando diferentes propiedades del elemento web, incluyendo ID, Nombre, Clase, XPath, Nombre de la etiqueta, selectores CSS y texto del enlace.

WebDriver proporciona los dos mรฉtodos WebElement siguientes para encontrar elementos:

  • buscarElemento() โ€“ encuentra un รบnico elemento web y lo devuelve como un WebElement Selenium objeto.
  • buscarElementos() โ€“ devuelve una lista de objetos WebElement que coinciden con los criterios del localizador.

El siguiente ejemplo muestra cรณmo recuperar un รบnico elemento, un campo de texto en una pรกgina web, como un objeto WebElement mediante el mรฉtodo findElement(). El mรฉtodo findElements() para buscar varios elementos se explica en tutoriales posteriores.

Paso 1) Importa el paquete necesario para crear objetos WebElement.

Paso 2) Para recuperar un objeto WebElement, llame al mรฉtodo findElement() disponible en la clase WebDriver, como se muestra a continuaciรณn.

Selenium Texto de entrada

Los cuadros de entrada se refieren a cualquiera de estos dos tipos:

  1. Campos de texto โ€“ Selenium Cuadros de texto que aceptan valores escritos y los muestran exactamente como se introducen.
  2. Campos de contraseรฑa โ€“ Cuadros de texto que aceptan valores escritos pero los enmascaran con una serie de caracteres especiales (generalmente puntos o asteriscos) para ocultar informaciรณn confidencial.

    Selenium Texto de entrada

Localizadores

El mรฉtodo findElement() recibe un parรกmetro, que es un localizador que apunta al elemento. Diferentes localizadores, como By.id(), By.name(), By.xpath() y By.cssSelector(), encuentran elementos en la pรกgina utilizando sus propiedades, como id, nombre o ruta.

Puedes utilizar plugins como FirePath para obtener el ID, la ruta XPath y otros valores de localizaciรณn para los elementos.

Usando el sitio de ejemplo https://demo.guru99.com/test/login.htmlEl cรณdigo que aparece a continuaciรณn localiza el campo de texto "Direcciรณn de correo electrรณnico" utilizando el localizador id y el campo "Contraseรฑa" utilizando el localizador name.

Localizadores

  1. El campo de texto del correo electrรณnico se encuentra por ID.
  2. El campo de contraseรฑa se encuentra por nombre.

enviar claves en Selenium

sendKeys() en Selenium Es un mรฉtodo que se utiliza para introducir contenido editable en campos de texto y contraseรฑa durante la ejecuciรณn de pruebas. Estos campos se identifican mediante localizadores como nombre, clase e ID. El mรฉtodo estรก disponible en el objeto WebElement. A diferencia del mรฉtodo type, sendKeys() no reemplaza el texto existente en un cuadro de texto.

Cรณmo ingresar texto en Selenium

Para introducir texto en campos de texto y campos de contraseรฑa, sendKeys() es el mรฉtodo disponible en el WebElement en Selenium.

Usando el mismo ejemplo de https://demo.guru99.com/test/login.htmlEl fragmento a continuaciรณn localiza el campo de texto y el campo de contraseรฑa e introduce texto en ellos. Selenium.

Texto en Selenium

  1. Localiza el campo de texto "Direcciรณn de correo electrรณnico" utilizando el localizador de ID.
  2. Localice el campo "Contraseรฑa" utilizando el buscador de nombres.
  3. Introduzca texto en la โ€œDirecciรณn de correo electrรณnicoโ€ utilizando el Selenium Mรฉtodo sendKeys.
  4. Ingrese una contraseรฑa en el campo "Contraseรฑa" usando el mรฉtodo sendKeys().

Eliminar valores en la entrada Boxes

El claro() Este mรฉtodo elimina el texto que se encuentra dentro de un cuadro de entrada. Este mรฉtodo no necesita ningรบn parรกmetro. El siguiente fragmento de cรณdigo borra el texto de los campos de correo electrรณnico o contraseรฑa.

Eliminar valores en la entrada Boxes

Selenium Haga clic en los botones

El Selenium Se accede al botรณn de clic mediante el mรฉtodo click().

En el ejemplo anterior

  1. Busca el botรณn para iniciar sesiรณn.
  2. Haz clic en el botรณn "Iniciar sesiรณn" en la pรกgina de inicio de sesiรณn del sitio para autenticarte.

Selenium Haga clic en los botones

Selenium Enviar botones

Los botones de envรญo envรญan el formulario completo al servidor. Puedes llamar al mรฉtodo click() en el elemento web, como se muestra arriba, o usar el mรฉtodo submit() en cualquier elemento del formulario o en el propio botรณn de envรญo.

Selenium Enviar botones

Cuando se utiliza submit(), WebDriver busca en el DOM para identificar el formulario al que pertenece el elemento y luego activa su funciรณn de envรญo.

Paquete COMPLETE Code

Aquรญ estรก el cรณdigo completo y funcional.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

Localizaciรณn de averรญas

Si encuentra una excepciรณn NoSuchElementException() al buscar elementos, significa que el elemento no estรก presente en la pรกgina en el momento en que WebDriver accediรณ a รฉl.

  1. Vuelva a comprobar su localizador utilizando FirePath o la opciรณn Inspeccionar elemento en Chrome.
  2. Comprueba si el valor utilizado en el cรณdigo difiere del valor actual del elemento que se ve en FirePath.
  3. Algunos atributos son dinรกmicos para ciertos elementos. Si un valor cambia dinรกmicamente, utilice By.xpath() o By.cssSelector(), que son mรกs fiables pero ligeramente mรกs complejos.
  4. En ocasiones, el problema radica en una condiciรณn de espera; WebDriver puede ejecutar el cรณdigo antes de que la pรกgina termine de cargarse.
  5. Agregue una espera antes de findElement() usando esperas implรญcitas o explรญcitas.

Resumen

  • La tabla que aparece a continuaciรณn resume los comandos para acceder a cada tipo de elemento mencionado anteriormente.
Elemento Comando Mareas Ideales para Lecciones
Entrada Box sendKeys () Se utiliza para introducir valores en cuadros de texto.
claro() Se utiliza para borrar el valor actual de los cuadros de texto.
Enlaces hacer clic() Se utiliza para hacer clic en el enlace y esperar a que la pรกgina se cargue por completo antes de continuar con el siguiente comando.
Botรณn de Envรญo enviar() Se utiliza para enviar el formulario activando el controlador de envรญo del formulario principal.
  • WebDriver permite la selecciรณn de mรกs de una opciรณn en un elemento SELECT mรบltiple.
  • Puedes usar el mรฉtodo submit() en cualquier elemento del formulario. WebDriver activa automรกticamente la funciรณn de envรญo del formulario al que pertenece el elemento.

Preguntas Frecuentes

findElement() devuelve el primer WebElement que coincide y lanza una excepciรณn NoSuchElementException si no existe ninguno. findElements() devuelve una lista de WebElements coincidentes y devuelve una lista vacรญa si ningรบn elemento coincide con el localizador.

Un WebElement es un Selenium Envoltorio que expone mรฉtodos de automatizaciรณn como sendKeys, click y clear. Un elemento HTML es el nodo DOM subyacente. WebDriver localiza el nodo DOM y devuelve una referencia a WebElement para interactuar con รฉl.

Sรญ. Las herramientas con IA analizan el DOM y proponen localizadores estables mediante ID, nombre, XPath relativo o selectores CSS. Reducen la fragilidad de los localizadores al detectar combinaciones de atributos รบnicas y sugerir alternativas cuando cambia un atributo.

Sรญ. Los localizadores autorreparables impulsados โ€‹โ€‹por IA vuelven a enlazar automรกticamente un WebElement cuando cambia un atributo. Esto reduce los fallos intermitentes, disminuye el esfuerzo de mantenimiento y mantiene Selenium Las suites se mantienen estables a pesar de las frecuentes actualizaciones de la interfaz de usuario en los ciclos de entrega รกgiles.

Las excepciones comunes de WebElement incluyen StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException y TimeoutException. Cada una indica un problema diferente del DOM, de visibilidad o de sincronizaciรณn que debe resolverse con esperas o actualizando las referencias de los elementos.

Resumir este post con: