Selenium es una popular herramienta de automatización basada en la web de código abierto. A veces, el controlador web de Selenium enfrenta problemas al interactuar con algunos elementos web. Por ejemplo, el usuario abre un sitio web y aparece una ventana emergente inesperada que evitará que el controlador web realice operaciones y produzca resultados inexactos. Aquí es donde entra en uso JavascriptExecutor.
¿Qué es JavaScriptExecutor en Selenium?
JavaScriptExecutor es una interfaz que se utiliza para ejecutar JavaScriprt a través de Selenium webdriver. JavaScript es un lenguaje de programación que interactúa con HTML en un navegador, y para usar esta función en Selenium, se requiere JavascriptExecutor.
JavascriptExecutor proporciona dos métodos:
- EjecutarScript
- EjecutarAsyncScript
1. Ejecutar Script
Este método ejecuta javaScript en la ventana o marco actualmente seleccionado. El script se ejecuta como una función anónima y puede devolver valores. Los tipos de datos devueltos son:
- elemento web
- Lista
- Cuerda
- Largo
- booleano
2. EjecutarAsyncScript
Este método se utiliza para ejecutar Javascript asíncrono en la ventana o marco actual. Un Javascript asíncrono ejecutado es un solo hilo mientras que el resto de la página se analiza continuamente. que mejora el rendimiento.
Empezar con JavaScriptExecutor
1. Importar el paquete
Importar org.openqa.selenium.JavascriptExecutor;
2. Crea una referencia
JavascriptExecutor js = (JavascriptExecutor) controlador;
3. Llame al método JavascriptExecutor
js.executeScript(secuencia de comandos, argumentos);
Javascript
// importing the package Import org.openqa.selenium.JavascriptExecutor; // creating a reference JavascriptExecutor js = (JavascriptExecutor) driver; // calling the method js.executeScript(script, args);
Ejemplos de JavascriptExecutor en Selenium
Ejemplo 1. JavascriptExecutor en Selenium para actualizar la ventana del navegador
JavascriptExecutor js = (JavascriptExecutor) controlador;
js.executeScript(“ubicación.recargar()”);
Ejemplo 2. JavascriptExecutor en Selenium para enviar texto
JavascriptExecutor js = (JavascriptExecutor) controlador;
js.executeScript(“document.getElementByID(‘element id’).value = ‘xyz’;”);
Ejemplo 3. Generar ventana emergente de alerta
JavascriptExecutor js = (JavascriptExecutor)controlador;
Js.executeScript(“alerta(‘hola mundo’);”);
Ejemplo 4. Obtener texto interno de una página web
JavascriptExecutor js = (JavascriptExecutor)controlador;
string sText = js.executeScript(“return document.documentElement.innerText;”).toString();
Ejemplo 5. Obtener título de una página web
JavascriptExecutor js = (JavascriptExecutor)controlador;
string sText = js.executeScript(“return document.title;”).toString();
Ejemplo 6. Página de desplazamiento
JavascriptExecutor js = (JavascriptExecutor)controlador;
// Desplazamiento vertical: hacia abajo 150 píxeles
js.executeScript(“ventana.scrollBy(0,150)”);
Haga clic en un elemento usando JavaScripExecutor
En el ejemplo, usamos selenium webdriver y javascriptexecutor para abrir el sitio web geeksforgeeks y hacer clic en un elemento.
Java
import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.edge.EdgeDriver; public class geeksforgeeks { public static void main(String args[]) { System.setProperty( "webdriver.edge.driver", "C:\\Users\\ADMIN\\Documents\\Selenium\\msedgedriver.exe"); // Instantiate a Driver class. WebDriver driver = new EdgeDriver(); // Maximize the browser driver.manage().window().maximize(); // Launch Website driver.get("https://www.geeksforgeeks.org/"); WebElement java = driver.findElement( By.xpath("//*[@id=\"hslider\"]/li[6]/a")); // Create a reference JavascriptExecutor js = (JavascriptExecutor)driver; // Call the JavascriptExecutor methods js.executeScript("arguments[0].click();", java); } }
Explicación del código: la secuencia de comandos anterior es para abrir Edge Browser y navegar al sitio web de geeksforgeeks y hacer clic en un elemento usando JavaScriptExecutor. Entonces, veamos cómo funciona:
- Establezca una propiedad del sistema «webdriver.edge.driver» en la ruta del archivo youredgedrivrer.exe e instancia una clase de controlador Edge: System.setProperty(«webdriver.edge.driver»,»edgedriver location»);
- Maximice la ventana: driver.manage().window().maximize();
- Para abrir la URL: driver.get(“Enlace URL”)
- Obtenga el elemento para Java usando el método finddby xpath “driver.findElement(By.xpath(“dirección xpath”));”
- Crear referencia para JavaScriptExecutor «JavascriptExecutor js = (JavascriptExecutor) controlador»;
- Llame al método JavascriptExecutor y pase el elemento web para hacer clic en «js.executeScript(«argumentos[0].click();»,elementoweb);»
Producción: