javascript - 如何在 Protractor 中处理跨浏览器测试的日志记录?
问题描述
我正在用 javascript(VanillaJS)、jasmine 和量角器构建一个自动化框架。我选择了带有 log4js-protractor-appender 的 log4js 进行日志记录。当我执行跨浏览器测试时,我尝试保存日志(按浏览器类型)。我想在 safari 和 chrome 上运行规范,然后期望每个浏览器有 2 个单独的日志文件。
问:如何使用前面提到的技术创建两个单独的日志文件,其中一个仅包含 chrome 的日志,第二个文件仅包含 safari 浏览器的日志?
这是 conf.js 文件中的 log4js 代码
beforeLaunch : function(){
log4js.configure({
appenders: {
out: { type: 'console' },
result: { type: 'dateFile', filename: 'logs/result',"pattern":"-dd.log", alwaysIncludePattern:true},
error: { type: 'dateFile', filename: 'logs/error', "pattern":"-dd.log", alwaysIncludePattern:true},
default: { type: 'dateFile', filename: 'logs/default', "pattern":"-dd.log", alwaysIncludePattern:true}
},
categories: {
default: { appenders: ['out','default'], level: 'info' },
result: { appenders: ['result'], level: 'info' },
error: { appenders: ['error'], level: 'error' }
}
});
},
onPrepare : function() {
browser.logger = log4js.getLogger('protractorLog4js');
}
预期的结果是有 2 个文件:default_chrome.log & default_safari.log
// obtain browser name
browser.getBrowserName = function() {
return browser.getCapabilities().then((caps) => {
browser.browserName = caps.get('browserName');
}
)}
// resolve the promised so the browser name is obtained.
browser.getBrowserName();
log4js.configure({
appenders: {
out: { type: 'console' },
default: { type: 'dateFile', filename: 'logs/default_'+ browser.browserName, "pattern":".log", alwaysIncludePattern:true}
},
categories: {
default: { appenders: ['out','default'], level: 'info' }
}
});
我也试过这个选项:
var browName = () => {return browser.getCapabilities().then((caps) => {caps.get('browserName');});}
解决方案
我无法提供现成的答案,因为它需要您在本地进行设置,但我可以为您提供查看方向...
根据https://github.com/angular/protractor/blob/master/lib/config.ts,beforeLaunch
每次执行调用一次(所有浏览器一次),而onPrepare
为每个浏览器实例调用一次,应该用于配置您的记录器。所以与记录器相关的一切都应该去onPrepare
推荐阅读
- java - AWS Java SDK 错误:请求签名“与提供的签名不匹配”检查您的密钥等。但凭证正确
- r - 从 R 中的 JSP 抓取网页
- python - Seaborn lmplot 多元回归问题
- python - 找到非常高的多峰元素,留下其余的低峰
- swift - UI 文本字段次要/可选约束
- python - 在给定索引间隔的列表中创建嵌套列表
- python - 将列表 (list[n:k]) 的内容与连续乘数相乘
- flutter - Flutter just_audio 循环模式不循环
- html - 如何使用 flexbox 使水平行中的列相等?
- javascript - this.props.children.map 不是 arrayOf PropTypes 上的函数 - react-responsive-accordion