Saltar al contenido

¿Hay alguna forma de cerrar una pestaña en WebDriver o Transportador?

Solución:

Puedes probar lo siguiente:

  1. Cambie a la nueva pestaña abierta.
  2. Cierre las ventanas actuales (en este caso, la nueva pestaña).
  3. 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]);
   }
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *