首先,selenium 不提供可靠的跨浏览器 API 来处理浏览器选项卡。打开或关闭标签的常用方法(虽然不太可靠)是调用 Chrome 的浏览器快捷方式:
- 打开标签:
CTRL/COMMAND + T
- 关闭标签:
CTRL/COMMAND + W
在量角器中,找到body 元素并向其“发送密钥”:
var body = element(by.tagName("body"));
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "t"))
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "w"))
或者,使用browser.actions():
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('t').perform();
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('w').perform();
另外,为了打开一个新标签,有一个有趣的技巧(引入here),它基本上将一个新的a 元素注入到页面中并调用click 鼠标事件:
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)
};
还有window.close()功能,但如果不是通过window.open()(reference)打开的标签页,它不会关闭标签页。换句话说,如果这是您手动打开的选项卡,那么您可以在browser.executeScript() 的帮助下使用window.open() -> window.close() 方法。