2016-04-07 26 views
2

我正在嘗試切換AngularJS應用程序的彈出窗口。以下是我的代碼:失敗:條目中的null值:name = null當切換彈出窗口時出錯

browser.ignoreSynchronization = true; 
    browser.getAllWindowHandles().then(function (handles) { 
     browser.switchTo().window(handles[1]); 

    }); 

獲得以下錯誤:

Failed: null value in entry: name=null 
Stack: 
UnknownError: null value in entry: name=null 
+0

當句柄[1]不存在時會發生這種情況。您可能試圖在加載之前切換到新選項卡。 – KCaradonna

+0

Chrome中可能會出現此問題。當你用Protractor啓動彈出窗口時,你需要相應地命名這些窗口,否則,他們會得到一個「null」的名稱,你將無法切換到該彈出窗口。 –

+0

嗨阿德里安:請你分享一下我們如何做到這一點。 –

回答

5

你可能會想它實際上是打開之前切換到一個新的標籤 - 等待窗口句柄數更比預期的計數有一個自定義的預期條件:

function windowCount(count) { 
    return function() { 
     return browser.getAllWindowHandles().then(function (handles) { 
      return handles.length >= count; 
     }); 
    }; 
}; 
browser.wait(windowCount(2), 10000); 

browser.getAllWindowHandles().then(function (handles) { 
    browser.switchTo().window(handles[1]); 
}); 
+0

不運氣alexce:我得到錯誤的等待超時 –

+0

@AbbasALI至少這給了我們一些更多的信息,一個新的窗口實際上並沒有打開..你能看到同樣的問題,在Firefox和鉻?謝謝。 – alecxe

+0

@alexce:我可以看到彈出窗口打開。我把browser.sleep檢查它,但沒有得到處理 –

0

在AngularJS應用程序中沒有處理彈出窗口,我們需要獲取mo刪除標識彈出,然後需要識別它的元素

例如。

變種alertPop =元件(by.id( 'popId'))

期望(alertPop.isDisplayed())toBeTruthy();

var element = alertPop.element(by.model('vm.message'));

相關問題