Selenio - Localizadores

La ubicación de elementos en Selenium WebDriver se realiza con la ayuda de los métodos findElement () y findElements () proporcionados por WebDriver y la clase WebElement.

  • findElement () devuelve un objeto WebElement basado en un criterio de búsqueda especificado o termina lanzando una excepción si no encuentra ningún elemento que coincida con los criterios de búsqueda.

  • findElements () devuelve una lista de WebElements que coinciden con los criterios de búsqueda. Si no se encuentran elementos, devuelve una lista vacía.

La siguiente tabla enumera toda la sintaxis de Java para ubicar elementos en Selenium WebDriver.

Método Sintaxis Descripción
Por ID driver.findElement (By.id (<ID de elemento>)) Localiza un elemento usando el atributo ID
Por nombre driver.findElement (By.name (<nombre del elemento>)) Localiza un elemento usando el atributo Name
Por nombre de clase driver.findElement (By.className (<clase de elemento>)) Localiza un elemento usando el atributo Class
Por nombre de etiqueta driver.findElement (By.tagName (<htmltagname>)) Localiza un elemento usando la etiqueta HTML
Por texto de enlace driver.findElement (By.linkText (<linktext>)) Localiza un enlace usando el texto del enlace
Por texto de enlace parcial driver.findElement (By.partialLinkText (<linktext>)) Localiza un enlace utilizando el texto parcial del enlace.
Por CSS driver.findElement (By.cssSelector (<selector de css>)) Localiza un elemento usando el selector CSS
Por XPath driver.findElement (By.xpath (<xpath>)) Localiza un elemento mediante una consulta XPath

Uso de localizadores

Ahora entendamos el uso práctico de cada uno de los métodos de localización con la ayuda de https://www.calculator.net

Por ID

Aquí se accede a un objeto con la ayuda de ID. En este caso, es el ID del cuadro de texto. Los valores se ingresan en el cuadro de texto usando el método sendkeys con la ayuda de ID (cdensity).

driver.findElement(By.id("cdensity")).sendKeys("10");

Por nombre

Aquí se accede a un objeto con la ayuda de nombres. En este caso, es el nombre del cuadro de texto. Los valores se ingresan en el cuadro de texto usando el método sendkeys con la ayuda de ID (cdensity).

driver.findElement(By.name("cdensity")).sendKeys("10");

Por nombre de clase

Aquí se accede a un objeto con la ayuda de Class Names. En este caso, es el nombre de clase del WebElement. Se puede acceder al valor con la ayuda del método gettext.

List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));

Por nombre de etiqueta

El nombre de etiqueta DOM de un elemento se puede utilizar para ubicar ese elemento en particular en el WebDriver. Es muy fácil manejar tablas con la ayuda de este método. Eche un vistazo al siguiente código.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();

Por texto de enlace

Este método ayuda a localizar un elemento de enlace con texto visible coincidente.

driver.findElements(By.linkText("Volume")).click();

Por texto de enlace parcial

Este método ayuda a localizar un elemento de enlace con texto visible que coincide parcialmente.

driver.findElement(By.partialLinkText("Volume")).click();

Por CSS

El CSS se utiliza como método para identificar el objeto web; sin embargo, NO todos los navegadores admiten la identificación CSS.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));

Por XPath

XPath significa lenguaje de ruta XML. Es un lenguaje de consulta para seleccionar nodos de un documento XML. XPath se basa en la representación de árbol de documentos XML y proporciona la capacidad de navegar por el árbol seleccionando nodos utilizando una variedad de criterios.

driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");