微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 处理量角器中的未知错误

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

我的一个关键量角器规格/测试包含以下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还不支持会话日志:

> [IE] Add support for fetching logs using the webdriver.manage().logs() mechanism

问题是:如何捕获此UnkNownError并在发生此特定错误时让规范通过?

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

我试过使用try / catch并尝试依赖异常发送者,但是没有执行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.

解决方法:

找到一个选项 – 使用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运行,则不会检查浏览器日志.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐