Estoy tratando de capturar capturas de pantalla usando Selenium webdriver en una página que tiene un área de texto con un gran texto desplazable. Necesito capturar capturas de pantalla de todos los textos en el área de texto. Con mi código, puedo desplazarme hacia abajo en el área de texto y tomar capturas de pantalla, pero necesito detenerme una vez que se muestran todos los textos. Aquí está el código
while(!textDisplayedInPage("text at the bottom of textarea element")){ takeScreenShot(); scrollDown(); } public boolean textDisplayedInPage(String text){ WebElement element = null; try{ element =getDriver().findElement(By.xpath("//*[contains(text(),'"+text+"')]")); }catch (Exception e){} if(element != null){ return true; }; return false; }el problema es que el método textDisplayedInPage() no funciona y Selenium encuentra el elemento en la primera pantalla aunque aún no se muestra y rompe el ciclo. Probé algunas respuestas que encontré de problemas similares aquí, pero todas fallan al entregar lo que se muestra. Cualquier idea sobre cómo capturar o verificar el texto mostrado de un elemento desplazable ayudaría.
Cuando Selenium busca un elemento, verifica dentro del árbol DOM y, aunque no puede ver el texto completo, está allí. Si necesita recuperar y verificar algún texto, probablemente element.getText() sea suficiente para esto, pero si necesita absolutamente tomar capturas de pantalla, puede usar JavaScriptExecutor y algo de código JS de desplazamiento hacia abajo:
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.getElementById(id_attribute_value).scrollHeight;", "");