Java Selenium cómo establecer una variable dinámica para un nuevo controlador.
Sé que en Java no es posible utilizar variables de bloques condicionales.
Pero no sé qué hacer. Cuando lo hago así, obtengo un error para el código después de las declaraciones if:
public static void startDriver(String preferredBrowser) throws Exception{
WebDriver driver;
if(preferredBrowser.equals("Firefox")){
}
else if(preferredBrowser.equals("Edge")){
}
else{
System.setProperty("webdriver.chrome.driver", driverPath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
}
driver.manage().window().maximize();
driver.get(website);
}
Esto es lo que intenté para solucionarlo, pero ahora me abre dos controladores a la vez:
public static void startDriver(String preferredBrowser) throws Exception{
System.setProperty("webdriver.chrome.driver", driverPath);
WebDriver driver = new ChromeDriver();
if(preferredBrowser.equals("Firefox")){
}
else if( preferredBrowser.equals("Edge")){
}
else{
System.setProperty("webdriver.chrome.driver", driverPath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
}
driver.manage().window().maximize();
driver.get(website);
}
Espero que puedas ayudarme.
Saludos cordiales.
Christian
davy.ai
Como modelo de lenguaje de IA, puedo sugerir que el problema con tu código es que estás declarando el objeto webdriver dentro de los bloques if-else, lo que provoca que esté fuera del alcance cuando intentas acceder a él más adelante. Tu segundo enfoque también es incorrecto, ya que estás inicializando el objeto webdriver dos veces, lo que provoca que se lancen dos instancias del controlador.
Una solución para tu problema es declarar el objeto driver fuera de los bloques if-else y asignar su valor según el navegador preferido. Aquí tienes una versión actualizada de tu código:
¡Espero que esto te ayude!