【问题标题】:protractor is unable to open a new tab量角器无法打开新标签
【发布时间】:2016-11-25 22:39:33
【问题描述】:

您能否建议我做错了什么,我得到了这个非常奇怪的异常:

失败:未知错误:“名称”必须是字符串(会话信息:chrome=53.0.2785.101)(驱动程序信息:chromedriver=2.25.426924 (649f9b868f6783ec9de71c123212b908bf3b232e),平台=Linux 3.13.0-100-通用 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、protractor 4.0.11、chrome 53 和驱动程序 2.25 上

【问题讨论】:

  • 您确定tabthisBrowser.switchTo().window(tab) 中的字符串吗?似乎这将是问题所在?堆栈跟踪告诉您错误发生在哪里?
  • 这就是问题所在,我不是提供tab 的代码的所有者。所以我的问题是为什么我没有得到处理程序?
  • 更多,当我在步骤之间添加一些睡眠命令时,现在我可以打开选项卡,但我得到“[ng:test] no injector found for element argument :( 任何帮助都会很棒

标签: selenium-webdriver protractor selenium-chromedriver


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 2015-12-19
    • 2020-04-11
    • 1970-01-01
    • 2012-11-18
    • 2015-10-17
    • 1970-01-01
    • 2022-11-18
    • 2017-11-06
    相关资源
    最近更新 更多