微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Protractor中跨浏览器并行测试中处理日志记录?

如何解决如何在Protractor中跨浏览器并行测试中处理日志记录?

我正在使用javascript(VanillaJS),茉莉花和量角器构建自动化框架。我选择了log4js和log4js-protractor-appender进行日志记录。但是,当我尝试登录并行和跨浏览器测试时,我陷入了困境。我想在safari和chrome上运行规格,然后期望每个浏览器有2个不同的日志文件

这是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',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.tsbeforeLaunch每次执行被调用一次(对于所有浏览器一次),而onPrepare被每个浏览器实例调用,并且应用于配置记录器。因此,与记录器有关的所有内容都应转到onPrepare

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。