量角器无法打开新选项卡

时间:2016-11-25 22:39:34

标签: selenium-webdriver protractor selenium-chromedriver

你能否告诉我我做错了什么,我得到了这个非常奇怪的例外:

失败:未知错误:' name'必须是一个字符串(会话信息:chrome = 53.0.2785.101)(驱动程序信息:chromedriver = 2.25.426924(649f9b868f6783ec9de71c123212b908bf3b232e),platform = Linux 3.13.0-100-generic x86_64)

function ensureNumberOfTabs(numberOfTabs) {
  return this.browser.getAllWindowHandles()
    .then(function(handles) {
      return handles && handles.length >= numberOfTabs && handles[numberOfTabs];
    });
}

this.openTab = function(index, timeout) {
  timeout = timeout || DEFAULT_WAIT_FOR_TIMEOUT;
  var thisBrowser = this.browser;
  var deferred = protractor.promise.defer();

  function errHandler(err) {
    deferred.reject(err);
  }
  //wait to open the tab
  thisBrowser.wait(ensureNumberOfTabs(index), timeout, 'waiting for opening tab #' + index);
  //switch to the tab
  thisBrowser.getAllWindowHandles().then(function(tabs) {
    var tab = tabs[index]; // this is your new window
    thisBrowser.switchTo().window(tab).then(function() {
      deferred.fulfill();
    }, errHandler);
  }, errHandler);

  return deferred.promise;
};

据我了解,我实际上是在&& handles[numberOfTabs];

检查该名称

问题当然有时会发生......

任何建议都会受到欢迎:)

此问题出现在Ubuntu 14上的节点6,量角器4.0.11,chrome 53和驱动程序2.25上

1 个答案:

答案 0 :(得分:2)

name收到未定义/ null参数时,您将看到与browser.switchTo().window()相关的错误

您可以通过直接调用browser.switchTo().window()传递null参数来重现。您需要进一步调试代码,为什么窗口句柄 - var tab = tabs[index];被发送为空