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");