2016-11-25 36 views
2

能否請你有什麼建議,我做錯了,我得到這個很奇怪的例外:量角器是無法打開一個新的標籤

失敗:未知的錯誤:「名稱」必須是一個字符串(會話信息:鉻= 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];

的問題,當然,只是有時會發生......

任何意見將非常歡迎:)出現在節點6,量角器4.0.11,鉻53和驅動2.25

這個問題,在Ubuntu 14

+0

您確定'tab'是'thisBrowser.switchTo()。window(tab)'中的字符串嗎?似乎這將是問題出在哪裏?堆棧跟蹤會告訴您發生錯誤的位置? – tehbeardedone

+0

這就是問題所在,我不是提供'tab'的代碼的所有者。所以我的問題是爲什麼我沒有得到處理程序? – Andrej

+0

當我在步驟之間添加一些睡眠命令現在我可以打開選項卡,但我得到「[ng:test]沒有找到元素參數注入:(任何幫助將很大 – Andrej

回答

2

你會看到有關name錯誤時browser.switchTo().window()接收到未定義/ null參數

可以再現通過直接調用browser.switchTo().window() null參數傳遞。您需要進一步調試您的代碼爲什麼窗口句柄 - var tab = tabs[index];正在發送null