5

我有一個protractor設置與多個瀏覽器配置通過multiCapabilities,在瀏覽器上運行測試。處理量角器中的未知錯誤

我的一個關鍵量角器規格的/測試包含以下afterEach()塊:

afterEach(function() { 
    browser.manage().logs().get("browser").then(function (browserLog) { 
     expect(browserLog.length).toEqual(0); 
    }); 
}); 

,檢查瀏覽器控制檯是空的(在控制檯上沒有錯誤)。

問題是:當我運行鍼對Internet Explorer,這天賦,我發現了一個UnknownError

UnknownError: Command not found: POST /session/6b838fe8-f4a6-4b31-b245-f4bf8f37537c/log

快速研究後,我發現,IE selenium webdriver尚不支持會話日誌:

現在的問題是:我該如何捕獲這個UnknownError並讓規範在這種特定錯誤的情況下通過?

或者,爲了解決這個問題,是否有可能具有塊功能/瀏覽器特定功能,或者知道哪些功能是當前運行的?


我試着使用try/catch並試圖依靠例外sender,但console.log()不執行:

afterEach(function() { 
    try { 
     browser.manage().logs().get("browser").then(function (browserLog) { 
      expect(browserLog.length).toEqual(0); 
     }); 
    } 
    catch (e) { 
     console.log(e.sender); 
    } 
}); 

作爲一種變通方法,我重複相同的規範,但沒有不及格的afterEach()塊,專門用於Internet Explorer。

回答

5

找到一個選擇 - 使用getCapabilities()檢索當前瀏覽器的名稱:

afterEach(function() { 
    browser.driver.getCapabilities().then(function(caps) { 
     var browserName = caps.caps_.browserName; 

     if (browserName !== "internet explorer") { 
      browser.manage().logs().get("browser").then(function (browserLog) { 
       expect(browserLog.length).toEqual(0); 
      }); 
     } 
    }); 
}); 

在這種情況下,瀏覽器記錄也不會反對,如果Internet Explorer中運行進行檢查。