La guía paso a paso o código que hallarás en este artículo es la resolución más fácil y válida que encontramos a esta duda o dilema.
Solución:
Si hay un enlace que abre una nueva ventana/pestaña, puede usar driver.switchTo().window();
Sin embargo, si desea ejecutar algo en varias ventanas, le recomiendo tener varias instancias de webdriver. Es mucho más fácil de administrar y es compatible (existen soluciones alternativas para abrir una nueva pestaña/ventana, como presionar una tecla de acceso directo que abre una nueva ventana, pero no son compatibles).
Si desea que varios subprocesos actúen todos en la misma instancia de controlador, pero en pestañas diferentes, eso NO es posible.
Es posible cambiar entre pestañas individuales sin tener múltiples instancias de navegador.
Hay una diferencia en cómo el controlador web maneja diferentes ventanas y cómo maneja diferentes pestañas.
Caso 1:
En caso de que haya varias ventanas, el siguiente código puede ayudar:
//Get the current window handle
String windowHandle = driver.getWindowHandle();
//Get the list of window handles
ArrayList tabs = new ArrayList (driver.getWindowHandles());
System.out.println(tabs.size());
//Use the list of window handles to switch between windows
driver.switchTo().window(tabs.get(0));
//Switch back to original window
driver.switchTo().window(mainWindowHandle);
Caso 2:
En caso de que haya varias pestañas en la misma ventana, solo hay un identificador de ventana. Por lo tanto, cambiar entre los identificadores de ventana mantiene el control en la misma pestaña.
En este caso, usar Ctrl + t (Ctrl + Tabulador) para cambiar entre pestañas es más útil.
//Open a new tab using Ctrl + t
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
//Switch between tabs using Ctrl + t
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
El código de ejemplo detallado se puede encontrar aquí:
http://design-interviews.blogspot.com/2014/11/switching- between-tabs-in-same-browser-window.html
Para abrir varias pestañas:
driver = new ChromeDriver();
IJavaScriptExecutor jscript = driver as IJavaScriptExecutor;
for (int i = 0; i < 10; i++)
driver.Navigate().GoToUrl(this.baseURL);
jscript.ExecuteScript("window.open('0', '_blank');", this.baseURL);
Cambia entre ellos:
for (int i = 0; i < driver.WindowHandles.Count; i++)
driver.SwitchTo().Window(driver.WindowHandles[i])]);
Te mostramos reseñas y valoraciones
Si te ha sido de ayuda este artículo, sería de mucha ayuda si lo compartieras con otros seniors de esta manera nos ayudas a dar difusión a nuestro contenido.