Extraer el texto de un control oculto (hidden)
Buenas lectores.
En ocasiones necesitamos traer el texto de un elemento que se encuentra oculto al usuario, esto por facilidad en algunas operaciones o simplemente el desarrollador almacena algun identificador o valor que vamos a necesitar mas adelante. En estos escenarios que son "atipicos" tambien necesitamos soluciones de las mismas características puesto que al ser un elemento invisible no podemos interactuar con el con un simple getText.
Para esto la solución es sencilla, recurrimos a nuestra siempre confiable (la vieja confiable) javascript. Vamos a traernos el atributo del texto:
Si usamos screenplay:
WebElementFacade element = target.resolveFor(actor);
String value = BrowseTheWeb.as(actor).evaluateJavascript("return arguments[0].innerText;", element).toString().trim();
Si estamos usando POM
@FindBy(id="color")
WebElementFacade colorDropdown;
String value = colorDropdown.getAttribute("innerText")
Si estamos usando Selenium directo
String value = driver.findElement(By.id("color")).getAttribute("innerText");
Si vamos a usar una lista
private static String elementNotVisible(List<WebElementFacade> elements) {
return elements.stream()
.findFirst()
.map(element -> element.getAttribute("textContent"))
.orElse("");
}
Fuentes:
https://github.com/serenity-bdd/serenity-core/issues/742
https://github.com/serenity-bdd/serenity-core/blob/main/serenity-screenplay-webdriver/src/main/java/net/serenitybdd/screenplay/questions/TextContent.java
https://serenity-bdd.github.io/docs/screenplay/screenplay_webdriver
Comentarios
Publicar un comentario