1

我想切換到另一個選項卡和新的標籤上使用的控制,我得到這個錯誤:量角器 - 開關標籤錯誤

UnknownError: null value in entry: name=null

這是測試(重要部分):

element(by.repeater("project in projects").row(1).column("{{project.name}}")).click().then(function(){ 

     flow.timeout(5000); 
     $('.project-data a').click().then(function() { 
      browser.getAllWindowHandles().then(function (handles) { 

     flow.timeout(5000); 

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

      }); 

測試中還有其他部分,但它不相關,因爲我在這部分中得到了錯誤。 流量是這樣的: 點擊鏈接後,標籤打開,好像它切換到新標籤 - 然後失敗並關閉窗口。

+0

糾正我,如果我錯了,但不是browser.getAllWindowHandles()獲取打開瀏覽器的所有WINDOWS?你說它切換到選項卡,並失敗並關閉,對我來說,似乎鏈接只是打開一個選項卡和切換焦點,你沒有成功切換到該選項卡。 – vrachlin

+0

我也在想它,但它似乎像Windows和Tabs切換相同的方式.. – user2880391

+0

你可以打印'browser.getAllWindowHandles()'並看到你得到的價值?如果你得到2,那麼你做的是有效的,如果沒有,那麼你不應該改變窗口。當你在同一頁面切換標籤時,我不認爲窗戶把手是必需的。 –

回答

1

代替flow.timeout(5000)使用browser.wait像這樣:

browser.wait(function() { 
    return handles.length > 1 
}, 5000); 

代替作爲第二flow.timeout(5000)使用:

browser.wait(function() { 
    return browser.getCurrentUrl().then(function (url){ 
     return url = "url of the second tab"; 
    }); 
}, 5000); 

它看起來更乾淨,更好的處理,最重要的是,會做的工作