Selenium WebDriver Estrategias de localización

Para Selenium WebDriver todos los elementos de una página web como los campos de texto, botones, links, imágenes son WebElements.

En aras de encontrar cada uno de esos WebElements en la página, Selenium utiliza unos “locators” o localizadores que le permiten ubicar al elemento y ejecutar una acción sobre él. De esta misma forma puede también acceder a atributos visibles como el texto (mediante el método getText()) y a atributos no visibles desde la interfaz de usuario a través de comandos como getAttribute(“nombre del atributo”).

Para comunicarle a Selenium cómo encontrar un elemento utilizamos el comando: driver. findElement() que es el método encargado de devolver el WebElement y que recibe como parámetros un localizador (By).

Así que quedaría de la siguiente forma:

A continuación se listan los localizadores en el orden en que se recomienda su uso, una descripción de cada uno y algunas desventajas o argumentos a tener en cuenta.

  1. By.id(“string”)

    Descripción: Este es el primer localizador que debemos tratar de utilizar pues la mayoría de las veces identifican de forma única al elemento.

    Desventajas:

    A veces el id se auto genera automáticamente y es difícil sino imposible predecirlo.En ocasiones los elementos carecen totalmente de un id.

  2. By.name(“q”)

    Descripción: Este localizador es el segundo que debemos tratar de utilizar en caso que no tengamos un id. Usualmente los nombre de los elementos son únicos y nos permiten ubicar un elemento con facilidad.

    Desventajas:

    En ocasiones los nombre de los elementos pueden no ser únicos. Algunos elementos pueden carecer del atributo name.

  3. By.className(“gLFyf.gsfi”)

    Descripción: Este localizador se refiere al atributo class del elemento Web.

    Desventajas:

    Normalmente varios tipos de elementos comparten la misma clase por lo que es útil para encontrar un conjunto de elementos (driver.findElements()), de lo contrario haría referencia al primer elemento que contenga ese atributo class.

  4. By.tagName(“input”)

    Descripción: Este localizador busca por el nombre del tag (etiqueta) del elemento dentro del DOM(Document Object Model)

    Desventajas:

    Pueden haber varios elementos con el mismo nombre de etiqueta (Ej. <button>)

  5. By.linkText(“string”)

    Descripción: Este localizador busca links en la página donde el texto coincida con el parámetro que le pasamos al método linkText().

    Desventajas:

    Puede resultar engorroso si hay más de un link en la página con el mismo texto. (Ej. “Read more”)

  6. By.partialLinkText(“string”)

    Descripción: Este localizador busca links en la página donde el texto coincida parcialmente con el parámetro que le pasamos al método partialLinkText(“string”).

    Desventajas:

    Puede resultar engorroso si hay más de un link en la página que comparten ese texto que coincide parcialmente con el texto del link

  7. By.cssSelector(“input[name=’q’]”)

    Descripción: Este localizador, es en si una estrategia de localización que utiliza el lenguaje CSS (Cascade Style Sheet).

    Desventajas:

    No todos los navegadores manejan de igual forma los css por lo que en algunos podrían funcionar y en otros no. Se necesitan conocimientos de css selector.

  8. By.xpath(“//input[@name=’q’]”)

    Descripción: Xpath que significa XML Path Language, es un lenguaje que permite recorrer y procesar los elementos del DOM, por lo que es muy útil para encontrar un WebElement

    Desventajas:

    WebDriver utiliza las capacidades nativas de XPath de un navegador siempre que sea posible. En aquellos navegadores que no tienen soporte nativo de XPath, Selenium ha proporcionado su propia implementación. Esto puede llevar a un comportamiento inesperado a menos que se manejen esas diferencias en los distintos motores XPath. Se necesitan conocimientos de XPath.

    Usando JavaScript

    Ej:WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript(“return $(‘.cheese’)[0]”);

    Descripción: Puede ejecutar código de JavaScript para encontrar un elemento siempre que devuelva un elemento DOM, este se convertirá automáticamente en un objeto WebElement

    Desventajas:

    Se necesitan conocimientos de JavaScript.

Next
Next

Framework para la Automatización de Pruebas