Aar*_*ron 31 selenium selenium-webdriver protractor
有没有办法通过Protractor或WebDriver关闭标签?
我问,因为虽然我知道如何以编程方式切换标签,但它没有将活动标签置于前台.我无法总是告诉我在SauceLabs上运行的E2E测试中发生了什么,因为当我查看屏幕投射时,它显示的是我导航离开的标签,而不是活动标签.
我错了吗?
it('should do something in the previous tab', function(done) {
browser.getAllWindowHandles().then(function (handles) {
browser.switchTo().window(handles[0]);
// do something
expect(something).toEqual(thisThing);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
Sak*_*gla 59
您可以尝试以下方法:
切换到新打开的选项卡.关闭当前窗口(在本例中为新选项卡).切换回第一个窗口.
browser.getAllWindowHandles().then(function (handles) {
browser.driver.switchTo().window(handles[1]);
browser.driver.close();
browser.driver.switchTo().window(handles[0]);
});
Run Code Online (Sandbox Code Playgroud)
ale*_*cxe 12
首先,selenium不提供可靠的跨浏览器API来使用浏览器选项卡.打开或关闭选项卡的常用方法(虽然不太可靠)是为Chrome调用浏览器快捷方式:
CTRL/ COMMAND+TCTRL/ 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"))
Run Code Online (Sandbox Code Playgroud)
或者,使用browser.actions():
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('t').perform();
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('w').perform();
Run Code Online (Sandbox Code Playgroud)
此外,要打开一个新的选项卡,有一个有趣的黑客(这里介绍),它基本上向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)
};
Run Code Online (Sandbox Code Playgroud)
还有window.close()功能,但如果没有通过window.open()(参考)打开它,它将不会关闭标签.换句话说,如果这是您手动打开的选项卡,那么您可以window.open() -> window.close()在帮助下使用方法browser.executeScript().
C#版本的Sakshi的答案:
var tabs = driver.WindowHandles;
if (tabs.Count > 1)
{
driver.SwitchTo().Window(tabs[1]);
driver.Close();
driver.SwitchTo().Window(tabs[0]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72373 次 |
| 最近记录: |