javascript - 如何使用 Protractor 和 Chrome 浏览器打开新标签页

标签 javascript selenium-webdriver protractor

这是一段代码(新标签不会打开):

//open new tab in Chrome

browser.actions().sendKeys(protractor.Key.CONTROL +'t').perform();

如果我们使用带有 'a' 的代码 - 一切都很好:

//select all on the page

browser.actions().sendKeys(protractor.Key.CONTROL +'a').perform();

Protractor v.1.3.1

Chrome v.37

ChromeDriver v.2.10

WebDriver v.2.43

最佳答案

如果你真的不想向你的 DOM 添加一个元素,那么你可以试试这个:

let url = https://google.com;
return browser.executeScript("return window.open(arguments[0], '_blank')", url);
//opens google.com in a new tab (works fine with Chrome. P.S. have only tested
// Chrome with Protractor).

我已经用 browser.wait() 尝试了上面的语句,看看你是否真的需要等待,因为 browser.executeScript() 返回一个 promise 本身,可以只需利用 promise 的成功。

另外,我观察到,虽然浏览器的焦点似乎已经转移到新打开的选项卡上,但我无法访问新选项卡的元素。为此:

browser.getAllWindowHandles().then((handles) => {
    browser.switchTo().window(handles[1]);    // pass the index, here assuming that
                                              // there are only two tabs in the browser
})

要了解有关window.open()的更多信息,您可以访问this.

关于javascript - 如何使用 Protractor 和 Chrome 浏览器打开新标签页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26098593/

相关文章:

testing - E2E 测试 Jasmine /Protractor 中的 Ionic 3 无限滚动模拟

javascript - Bootstrap 模式似乎在 iOS 设备上被禁用

javascript - 什么时候不要在 Web 应用程序开发中使用 AJAX?

javascript - 为运行时插入的 Modal 加载 Javascript

ruby - 使用 watir webdriver 以 headless 模式驱动浏览器时无法清除多选列表中的选定选项

python - 打开更多 session 时 Selenium 滞后

javascript - 将播放器对象移向 Canvas 中的光标方向(slither.io 样式)

html - Selenium capybara 检查另一个 div 中一个 div 的背景颜色

jasmine - Protractor 代码在多个测试套件之间共享

javascript - 如何在 Angular 2 中使用 Protractor ?