处理量角器中的未知错误

2024-05-08

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

我的主要量角器规格/测试之一包含以下内容afterEach() block:

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

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

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

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

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

  • [IE] 添加对使用 webdriver.manage().logs() 机制获取日志的支持 https://code.google.com/p/selenium/issues/detail?id=4925

问题是:我怎样才能抓住这个UnknownError并在出现此特定错误时让规范通过?

或者,扭转局面,是否有可能afterEach()阻止功能/特定于浏览器,或者知道当前正在运行的功能是什么?


我尝试过使用try/catch并尝试依赖异常sender, but 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() http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.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 运行,则不会检查浏览器日志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理量角器中的未知错误 的相关文章

随机推荐