Class SeleniumUtil

java.lang.Object
giis.demo.descuento.it.SeleniumUtil

public class SeleniumUtil extends Object
Utilidades varias para uso en los tests con Selenium
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final org.slf4j.Logger
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static org.openqa.selenium.WebElement
    findUsingWaitUntilVisible(org.openqa.selenium.WebDriver driver, org.openqa.selenium.By locator)
    Localiza un elemento utilizando un wait que espera a que se encuentre presente y visible en el markup Nota 2025: Ejecutando en local (comprobado con Chrome 143) en algunas ocasiones falla el wait cuando intenta localizar un span, produciendo una excepcion del driver que indica "Node with given id does not belong to the document" Parece que es un bug del ChromeDriver que se arrastra desde Chrome 130 por una race condition: Cuando Chrome actualiza el DOM y el driver intenta leer el nodo justo en este microinstante, ocurre la excepcion.
    private static URL
     
    static org.openqa.selenium.WebDriver
    Instancia un WebDriver para el navegador usado en estos tests (Chrome).
    static String[][]
    getTableContent(org.openqa.selenium.WebElement tableElement)
    Utilidad para obtencion de todos los elementos de una tabla a partir del WebElement que apunta a esta.
    private static String[][]
    listToStringMatrix(List<List<String>> irows, int maxcol)
     
    static void
    sleep(long millis)
     
    static void
    takeScreenshot(org.openqa.selenium.WebDriver driver, String name)
    Toma una imagen de la vista actual del navegador y lo guarda en target/screenshots.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • log

      private static final org.slf4j.Logger log
  • Constructor Details

    • SeleniumUtil

      public SeleniumUtil()
  • Method Details

    • getNewDriver

      public static org.openqa.selenium.WebDriver getNewDriver()
      Instancia un WebDriver para el navegador usado en estos tests (Chrome). WebDriver es un interface que debe instanciarse con el driver correspondiente al navegador a utilizar, pero no existe una factoria que lo haga, por lo que se utiliza este metodo.
      Notar la diferencia entre driver, que es el fichero externo que realiza el interfaz con el navegador y los bindings (Selenium Client and WebDriver Language Bindings) que son las dependencias que definen los metodos con los que se interactua con WebDriver. Tambien existe un remote web driver que permite ejecutar el navegador en otro equipo diferente.
      Estos drivers son archivos ejecutables que se guardaran en las carpetas de recursos pero que no se pueden obtener directamente mediante maven. Para automatizar la obtencion de los drivers locales se utiliza el componente webdrivermanager que se encarga de descargar y poner accesibles los binarios en el path.
      Returns:
      el WebDriver instanciado.
    • getNativeUrl

      private static URL getNativeUrl(String url)
    • getTableContent

      public static String[][] getTableContent(org.openqa.selenium.WebElement tableElement)
      Utilidad para obtencion de todos los elementos de una tabla a partir del WebElement que apunta a esta. Obtiene como un string y por orden todos los elementos encerrados entre th o tr. Como La tabla puede no tener un numero igual de celdas en cada fila, el numero de columnas devuelto sera el de la fila mas larga.
      Parameters:
      tableElement - WebElement que apunta a un elemento table.
      Returns:
      Matriz de strings con el contenido de cada celda (incluyendo headers).
    • listToStringMatrix

      private static String[][] listToStringMatrix(List<List<String>> irows, int maxcol)
    • takeScreenshot

      public static void takeScreenshot(org.openqa.selenium.WebDriver driver, String name)
      Toma una imagen de la vista actual del navegador y lo guarda en target/screenshots.
      Parameters:
      name - nombre que se dara a la imagen (le anyade un timestamp para diferenciar imagenes guardadas en la misma sesion)
    • findUsingWaitUntilVisible

      public static org.openqa.selenium.WebElement findUsingWaitUntilVisible(org.openqa.selenium.WebDriver driver, org.openqa.selenium.By locator)
      Localiza un elemento utilizando un wait que espera a que se encuentre presente y visible en el markup Nota 2025: Ejecutando en local (comprobado con Chrome 143) en algunas ocasiones falla el wait cuando intenta localizar un span, produciendo una excepcion del driver que indica "Node with given id does not belong to the document" Parece que es un bug del ChromeDriver que se arrastra desde Chrome 130 por una race condition: Cuando Chrome actualiza el DOM y el driver intenta leer el nodo justo en este microinstante, ocurre la excepcion. Se parcheara comprobando esta excepcion y reejecutando el wait
    • sleep

      public static void sleep(long millis)