ale*_*cxe 5 javascript selenium exception-handling angularjs protractor
我有一个protractor配置了多个浏览器的设置,multiCapabilities在browserstack上运行测试.
我的一个关键量角器规格/测试包含以下afterEach()块:
afterEach(function() {
browser.manage().logs().get("browser").then(function (browserLog) {
expect(browserLog.length).toEqual(0);
});
});
Run Code Online (Sandbox Code Playgroud)
检查浏览器控制台是否为空(控制台上没有错误).
问题是:当我对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);
}
});
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,我正在复制相同的规范,但没有那个失败的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);
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果针对Internet Explorer运行,则不会检查浏览器日志.
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |