En aquest tema, aprendrem com executar JavaScript directament des de Selenium WebDriver. Aquesta habilitat és especialment útil quan necessitem interactuar amb elements web que no són fàcilment accessibles mitjançant els mètodes estàndard de Selenium o quan volem manipular el DOM directament.
Per què executar JavaScript amb Selenium?
- Interacció amb elements complexos: Alguns elements web poden no ser accessibles mitjançant els mètodes tradicionals de Selenium. JavaScript pot ajudar a interactuar amb aquests elements.
 - Manipulació del DOM: Podem modificar el Document Object Model (DOM) directament per provar diferents escenaris.
 - Obtenir informació addicional: JavaScript pot extreure informació que no és directament accessible a través de Selenium.
 - Simulació d'esdeveniments: Podem simular esdeveniments com clics, canvis de valor, etc., que poden ser difícils d'aconseguir amb Selenium.
 
Com executar JavaScript amb Selenium
Selenium WebDriver proporciona una interfície anomenada JavascriptExecutor que ens permet executar codi JavaScript. A continuació, es mostra com utilitzar aquesta interfície.
Exemple de codi
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class ExecuteJavaScriptExample {
    public static void main(String[] args) {
        // Configuració del WebDriver
        System.setProperty("webdriver.chrome.driver", "ruta/al/teu/chromedriver");
        WebDriver driver = new ChromeDriver();
        // Navegar a una pàgina web
        driver.get("https://www.example.com");
        // Crear una instància de JavascriptExecutor
        JavascriptExecutor js = (JavascriptExecutor) driver;
        // Executar un script JavaScript
        String title = (String) js.executeScript("return document.title;");
        System.out.println("El títol de la pàgina és: " + title);
        // Tancar el navegador
        driver.quit();
    }
}Explicació del codi
- Configuració del WebDriver: Inicialitzem el WebDriver per al navegador Chrome.
 - Navegació a una pàgina web: Utilitzem el mètode 
getper obrir una pàgina web. - Creació de 
JavascriptExecutor: Convertim el nostreWebDriveraJavascriptExecutor. - Execució de JavaScript: Utilitzem el mètode 
executeScriptper executar un script JavaScript que retorna el títol de la pàgina. - Impressió del resultat: Mostrem el títol de la pàgina a la consola.
 - Tancament del navegador: Finalment, tanquem el navegador.
 
Exercici Pràctic
Objectiu: Utilitzar JavascriptExecutor per canviar el color de fons d'un element web.
Instruccions
- Navega a una pàgina web de la teva elecció.
 - Identifica un element web al qual vulguis canviar el color de fons.
 - Utilitza 
JavascriptExecutorper canviar el color de fons de l'element. 
Solució
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.By;
public class ChangeBackgroundColor {
    public static void main(String[] args) {
        // Configuració del WebDriver
        System.setProperty("webdriver.chrome.driver", "ruta/al/teu/chromedriver");
        WebDriver driver = new ChromeDriver();
        // Navegar a una pàgina web
        driver.get("https://www.example.com");
        // Localitzar l'element
        WebElement element = driver.findElement(By.id("element-id"));
        // Crear una instància de JavascriptExecutor
        JavascriptExecutor js = (JavascriptExecutor) driver;
        // Canviar el color de fons de l'element
        js.executeScript("arguments[0].style.backgroundColor = 'yellow'", element);
        // Tancar el navegador
        driver.quit();
    }
}Explicació de la Solució
- Localització de l'element: Utilitzem 
findElementper localitzar l'element pel seu ID. - Execució de JavaScript: Utilitzem 
executeScriptper canviar el color de fons de l'element a groc. 
Conclusió
L'execució de JavaScript amb Selenium és una tècnica poderosa que pot ajudar a superar limitacions en la interacció amb elements web. Hem après com utilitzar JavascriptExecutor per executar scripts JavaScript i manipular el DOM directament. Aquesta habilitat és essencial per a la resolució de problemes complexos en l'automatització de proves. En el següent tema, explorarem com treballar amb cookies utilitzant Selenium.
Automatització de Proves amb Selenium
Mòdul 1: Introducció a l'Automatització de Proves
- Què és l'Automatització de Proves?
 - Beneficis de l'Automatització de Proves
 - Visió General de Selenium
 - Configuració del Teu Entorn
 
Mòdul 2: Començant amb Selenium
- Introducció a Selenium WebDriver
 - Instal·lació de Selenium WebDriver
 - Primer Script de Selenium
 - Comprensió de la Interfície WebDriver
 
Mòdul 3: Localització d'Elements Web
- Introducció als Localitzadors
 - Ús de Localitzadors ID i Nom
 - XPath i Selectors CSS
 - Estratègies Avançades de Localització
 
Mòdul 4: Interacció amb Elements Web
- Realització d'Accions sobre Elements Web
 - Gestió de Desplegables i Caixes de Selecció
 - Treballant amb Alertes i Pop-ups
 - Gestió de Finestres del Navegador i Frames
 
Mòdul 5: Sincronització en Selenium
Mòdul 6: Marc de Proves i Selenium
- Introducció a TestNG
 - Configuració de TestNG amb Selenium
 - Creació de Casos de Prova TestNG
 - Proves Basades en Dades amb TestNG
 
Mòdul 7: Conceptes Avançats de Selenium
- Gestió de Trucades AJAX
 - Treballant amb Cookies
 - Captura de Captures de Pantalla
 - Execució de JavaScript amb Selenium
 
Mòdul 8: Selenium Grid i Proves en Paral·lel
- Introducció a Selenium Grid
 - Configuració de Selenium Grid
 - Execució de Proves en Paral·lel
 - Proves Multinavegador
 
Mòdul 9: Integració Contínua i Selenium
- Introducció a la Integració Contínua
 - Integració de Selenium amb Jenkins
 - Automatització de l'Execució de Proves
 - Informes i Registre
 
