Selenium webdriver 量角器无法打开新选项卡

Selenium webdriver 量角器无法打开新选项卡,selenium-webdriver,protractor,selenium-chromedriver,Selenium Webdriver,Protractor,Selenium Chromedriver,你能告诉我我做错了什么吗?我得到了一个非常奇怪的例外: 失败:未知错误:“名称”必须是字符串(会话信息:chrome=53.0.2785.101)(驱动程序信息:chromedriver=2.25.426924(649f9b868f6783ec9de71c123212b908bf3b232e),平台=Linux 3.13.0-100-generic x86_64) 据我所知,我实际上是通过&&handles[numberOfTabs]检查name是否有某些内容 当然,问题有时会发生 欢迎您提供任

你能告诉我我做错了什么吗?我得到了一个非常奇怪的例外:

失败:未知错误:“名称”必须是字符串(会话信息:chrome=53.0.2785.101)(驱动程序信息:chromedriver=2.25.426924(649f9b868f6783ec9de71c123212b908bf3b232e),平台=Linux 3.13.0-100-generic x86_64)

据我所知,我实际上是通过
&&handles[numberOfTabs]检查name是否有某些内容

当然,问题有时会发生

欢迎您提供任何建议:)


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

浏览器.switchTo().window()接收到未定义的/null参数时,您将看到与
名称
相关的错误


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

是否确定
选项卡
此浏览器中的字符串。切换到()。窗口(选项卡)
?似乎这就是问题所在?stacktrace告诉您错误发生的位置是什么?这就是问题所在,我不是提供
选项卡的代码的所有者。所以我的问题是为什么我没有得到这个处理程序?当我在两个步骤之间添加一些sleep命令时,我现在可以打开tab了,但是我得到了“[ng:test]没有为元素参数找到注入器:(任何帮助都会是greatCheck这个答案
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;
};