如何解决如何在Protractor中跨浏览器并行测试中处理日志记录?
我正在使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。