处理量角器中的未知错误

ale*_*cxe 5 javascript selenium exception-handling angularjs protractor

我有一个protractor配置了多个浏览器的设置,multiCapabilities在browserstack上运行测试.

我的一个关键量角器规格/测试包含以下afterEach()块:

afterEach(function() {
    browser.manage().logs().get("browser").then(function (browserLog) {
        expect(browserLog.length).toEqual(0);
    });
});
Run Code Online (Sandbox Code Playgroud)

检查浏览器控制台是否为空(控制台上没有错误).

问题是:当我对Internet Explorer运行此规范时,我得到一个UnknownError:

UnknownError:找不到命令:P​​OST/session/6b838fe8-f4a6-4b31-b245-f4bf8f37537c/log

经过快速研究,我发现IE selenium webdriver它还不支持会话日志:

问题是:我怎样才能抓住这个UnknownError并让规范在这个特定错误的情况下通过?

或者,为了扭转它,是否可以具有afterEach()块功能/特定于浏览器,或者知道当前正在运行的功能是什么?


我试过使用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);
    }
});
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我正在复制相同的规范,但没有那个失败的afterEach()块,特别是对于Internet Explorer.

ale*_*cxe 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);
            });
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果针对Internet Explorer运行,则不会检查浏览器日志.