处理量角器中的未知错误

时间:2014-12-21 07:39:33

标签: javascript angularjs selenium exception-handling protractor

我有一个protractor设置,通过multiCapabilities配置多个浏览器,在browserstack上运行测试。

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

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

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

问题:当我针对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);
    }
});

作为一种解决方法,我重复相同的规范,但没有失败的afterEach()阻止,特别是对于Internet Explorer。

1 个答案:

答案 0 :(得分: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运行,则不会检查浏览器日志。