问题描述
我正在使用javascript(VanillaJS),茉莉花和量角器构建自动化框架。我选择了log4js和log4js-protractor-appender进行日志记录。但是,当我尝试登录并行和跨浏览器测试时,我陷入了困境。我想在safari和chrome上运行规格,然后期望每个浏览器有2个不同的日志文件。
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',default: { type: 'dateFile',filename: 'logs/default',alwaysIncludePattern:true}
},categories: {
default: { appenders: ['out','default'],level: 'info' },result: { appenders: ['result'],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' },filename: 'logs/default_'+ browser.browserName,"pattern":".log",alwaysIncludePattern:true}
},categories: {
default: { appenders: ['out',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