5

Ich habe ein protractor Setup mit mehreren Browsern konfiguriert über multiCapabilities, Tests auf browserstack ausgeführt.Behandlung unbekannter Fehler im Winkelmesser

Einer meiner Schlüssel Winkelmesser specs/Tests enthalten folgende afterEach() Block:

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

, die überprüft, ob der Browser-Konsole leer ist (keine Fehler auf der Konsole).

Das Problem ist: wenn ich diese spec gegen Internet Explorer ausführen, erhalte ich eine UnknownError:

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

Nach einem schnellen Forschung haben heraus Ich fand, dass IE selenium webdriver noch Sitzung nicht unterstützt Protokolle:

Die Frage ist: Wie kann ich diese UnknownError fangen und lassen Sie die Spezifikation im Falle dieses spezifischen Fehlers passieren?

Oder, um es umzudrehen, ist es möglich, eine afterEach() Block-Fähigkeit/Browser-spezifisch zu haben, oder wissen, welche derzeit laufende Fähigkeit ist es?


Ich habe versucht, try/catch zu verwenden und versuchen, auf Ausnahme unter Berufung sender, aber console.log() nicht ausgeführt wird:

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

Als Abhilfe können, ich bin die gleiche Spezifikation duplizieren, aber ohne dass afterEach() versagt blockieren, speziell für den Internet Explorer.

Antwort

5

Gefunden eine Option - getCapabilities() mit dem aktuellen Browser-Namen abzurufen:

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); 
      }); 
     } 
    }); 
}); 

In diesem Fall sind Browser-Protokolle nicht, wenn läuft gegen den Internet Explorer überprüft werden.