我有一个protractor
设置,通过multiCapabilities
配置多个浏览器,在browserstack上运行测试。
我的一个关键量角器规格/测试包含以下afterEach()
块:
afterEach(function() {
browser.manage().logs().get("browser").then(function (browserLog) {
expect(browserLog.length).toEqual(0);
});
});
检查浏览器控制台是否为空(控制台上没有错误)。
问题:当我针对Internet Explorer运行此规范时,我收到了UnknownError
:
UnknownError:找不到命令:POST / 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。
答案 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运行,则不会检查浏览器日志。