2015-09-10 105 views
2

我有一個非角度頁面,我需要點擊2個鏈接。點擊在新選項卡中自動打開的鏈接之一。現在我切換到新選項卡並設置browser.ignoreSynchronization = false,因爲新打開的選項卡是一個角度窗口;並打電話給我的一個測試。一旦被驗證。我想關閉當前選項卡並返回到無角度頁面以單擊鏈接#2,該鏈接將再次在新選項卡中打開。我試過window.close,但我得到的窗口是未定義的。我用browser.window,甚至沒有工作。請指教量角器關閉當前選項卡

element(by.id('trMyUrl')); 
    browser.getAllWindowHandles().then(function (handles) { 
      var secondWindowHandle = handles[1]; 
      var firstWindowHandle = handles[0]; 
    browser.switchTo().window(secondWindowHandle).then(function() { //the focus moves on new tab\ 
    browser.ignoreSynchronization = false;  
    empLogin.test(); 
    window(secondWindowHandle).close() 
    // window.close() 
    // browser.close() 
    // browser.window.close() 

    }) 
}); 

回答

4

關閉當前的重點,然後switchTo()一個選項卡首先要在其上執行操作的第二個窗口。以下是如何 -

browser.switchTo().window(secondWindowHandle) 
.then(function() { 
    browser.ignoreSynchronization = false;  
    empLogin.test(); 
}).then(function(){ 
    browser.close(); //close the current browser 
}).then(function(){ 
    browser.switchTo().window(firstWindowHandle) //Switch to previous tab 
    .then(function(){ 
     //Perform your operations on the first tab 
    }); 
}); 

希望它有幫助。

+0

您的代碼正在關閉當前選項卡,但它會關閉而不執行empLogin.test()的測試。當我註釋掉第一個句柄代碼並保持browser.close代碼不變,然後運行我的測試時,我沒有這樣的窗口退出,目標窗口已關閉消息。請指教。 – user2744620

+0

您正在解決這個問題,因爲即使在'empLogin.test()'完成之前'browser.close()'正在執行。爲了解決這個問題,可以嘗試從'empLogin.test()'返回一個承諾,然後使用該承諾來添加你的'browser.close()'函數。或者鏈接我在答案中更新的承諾。你也需要切換到firstWindowHandle作爲量角器不知道它應該在哪裏執行測試。謝謝 –

+0

非常感謝..它的工作。 :) – user2744620

相關問題