你能否告诉我我做错了什么,我得到了这个非常奇怪的例外:
失败:未知错误:' 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上
答案 0 :(得分:2)
当name
收到未定义/ null参数时,您将看到与browser.switchTo().window()
相关的错误
您可以通过直接调用browser.switchTo().window()
传递null参数来重现。您需要进一步调试代码,为什么窗口句柄 - var tab = tabs[index];
被发送为空