【问题标题】:Handling Unknown Errors in protractor处理量角器中的未知错误
【发布时间】:2015-02-19 15:50:20
【问题描述】:

我有一个 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。

【问题讨论】:

    标签: javascript angularjs selenium exception-handling protractor


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      相关资源
      最近更新 更多