Solución:
Puedes probar lo siguiente:
- Cambie a la nueva pestaña abierta.
- Cierre las ventanas actuales (en este caso, la nueva pestaña).
-
Regrese a la primera ventana.
browser.getAllWindowHandles().then(function (handles) { browser.driver.switchTo().window(handles[1]); browser.driver.close(); browser.driver.switchTo().window(handles[0]); });
En primer lugar, selenium no proporciona una API confiable entre navegadores para trabajar con pestañas del navegador. Un enfoque común para abrir o cerrar una pestaña (aunque no del todo confiable) es invocar accesos directos del navegador para Chrome:
- pestaña abierta:
CTRL
/COMMAND
+T
- cerrar pestaña:
CTRL
/COMMAND
+W
En transportador, encuentre el body
elemento y “enviar claves” a él:
var body = element(by.tagName("body"));
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "t"))
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "w"))
O usando browser.actions()
:
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('t').perform();
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('w').perform();
Además, para abrir una nueva pestaña, hay un truco interesante (presentado aquí), que básicamente inyecta un nuevo a
elemento en la página e invoca click
evento de mouse:
function openNewTab (url) {
return browser.driver.executeScript(function(url) {(
function(a, url){
document.body.appendChild(a);
a.setAttribute('href', url);
a.dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
return e;
}(document.createEvent('MouseEvents'))))
}(document.createElement('a'), url)
);
}, url)
};
También hay window.close()
función, pero no cerraría la pestaña si no se abriera a través de window.open()
(referencia). En otras palabras, si esta es una pestaña que abre manualmente, entonces puede usar window.open() -> window.close()
acercarse con la ayuda de browser.executeScript()
.
Versión C # de la respuesta de Sakshi:
var tabs = driver.WindowHandles;
if (tabs.Count > 1)
{
driver.SwitchTo().Window(tabs[1]);
driver.Close();
driver.SwitchTo().Window(tabs[0]);
}