Innanzitutto, selenio non non fornisce un affidabile API cross-browser per funzionare con schede del browser. Un approccio comune per aprire o chiudere una scheda (sicuramente, non del tutto attendibile) è invocare scelte rapide del browser, per Chrome:
- aperta scheda:
CTRL
/COMMAND
+ T
- Chiudi scheda:
CTRL
/COMMAND
+ W
In goniometro, trovare l'elemento body
e "invia i tasti" ad esso:
var body = element(by.tagName("body"));
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "t"))
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "w"))
Oppure, utilizzando browser.actions()
:
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('t').perform();
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('w').perform();
Inoltre, per aprire una nuova scheda, c'è un trucco interessante (introdotto here), che inietta fondamentalmente una nuova a
elemento nella pagina e invoca click
del mouse evento:
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)
};
C'è anche window.close()
divertente ction, ma non chiuderà la scheda se non è stata aperta tramite window.open()
(reference). In altre parole, se questa è una scheda che si apre manualmente, è possibile utilizzare l'approccio window.open() -> window.close()
con l'aiuto di browser.executeScript()
.
'close()' ha chiuso la scheda per me quando ho aperto un'immagine. Tuttavia, non ancora sicuro! –
@alecxe funziona perfettamente per me. – Aaron
@Aaron buono a sapersi, funziona sia per Firefox che per Chrome? Grazie. – alecxe