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