Solución:
Código:
WebDriver wd = new FirefoxDriver();
wd.get("http://www.gmail.com");
wd.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
wd.manage().window().maximize();
//To open a new tab
Robot r = new Robot();
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_T);
r.keyRelease(KeyEvent.VK_CONTROL);
r.keyRelease(KeyEvent.VK_T);
//To switch to the new tab
ArrayList<String> tabs = new ArrayList<String>(wd.getWindowHandles());
wd.switchTo().window(tabs.get(1));
//To navigate to new link/URL in 2nd new tab
wd.get("http://facebook.com");
La única forma de abrir enlaces en nuevas pestañas es simulando atajos del teclado. Lo siguiente es válido en FFX, Chrome e IE
- Ctrl + t abrirá una nueva pestaña en blanco y cambiará el foco a ella.
- Manteniendo presionada la tecla Ctrl, luego haciendo clic en el enlace, se abrirá el enlace en una nueva pestaña, pero dejará el foco en la pestaña existente.
- Manteniendo presionada la tecla Ctrl Y Mayús, luego haciendo clic se abrirá el enlace en una nueva pestaña Y moverá el foco a la nueva pestaña.
- Ctrl + w cerrará la pestaña actual y cambiará el enfoque a la última pestaña abierta (aunque tenga en cuenta que Ctrl + W, es decir, Ctrl + Shift + w cerrará TODAS las pestañas).
Selenium no tiene (actualmente) ningún concepto de pestañas dentro de una ventana del navegador, por lo que para abrir la pestaña y luego probarla, TIENE que usar la opción 3.
El siguiente código ejecutará la opción 3. y luego cerrará inmediatamente esa nueva pestaña. (C ª#)
new Actions(WebDriver)
.KeyDown(Keys.Control)
.KeyDown(Keys.Shift)
.Click(tab)
.KeyUp(Keys.Shift)
.KeyUp(Keys.Control)
.Perform();
new Actions(WebDriver)
.SendKeys(Keys.Control + "w")
.Perform();
También puedes usar:
.MoveToElement(tab)
.Click()
en medio de la primera opción, y
.KeyDown(Keys.Control)
.KeyDown("w")
.KeyUp("w")
.KeyUp(Keys.Control)
en el segundo.
/ * Abrir una nueva pestaña en el navegador * /
public void openNewTab()
{
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(0));
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)