使用量角器从chromedriver获取HTTP请求(性能日志)

mou*_*uad 6 javascript selenium-chromedriver protractor

我正在使用量角器进行带有角度的e2e测试,我正在拼命地获取带有标题和正文的HTTP请求日志.我已经配置了这样的量角器:

  {

    useAllAngular2AppRoots: true,
    ignoreUncaughtExceptions: true,

    maxSessions: 1,
    multiCapabilities: [
        {
            'name': 'desktop',
            'browserName': 'chrome',
            loggingPrefs: {"driver": "ALL", "browser": "ALL", 'performance': 'ALL'},
            chromeOptions: {
                binary: process.env.CHROME_BIN,
                args: ["--headless", "--disable-gpu", "--no-sandbox"],
                perfLoggingPrefs: {
                    'traceCategories': 'blink.console,disabled-by-default-devtools.timeline'
                }
            }
        }
    ],

    framework: "custom",
    frameworkPath: require.resolve("protractor-cucumber-framework"),

    //...
};
Run Code Online (Sandbox Code Playgroud)

在每个场景之后,我正在执行这个钩子:

browser.manage().logs().get("browser").then(logs => 
  //...
)
Run Code Online (Sandbox Code Playgroud)

但我得到的只是控制台日志,但没有http请求.有没有办法从量角器中获得chromedriver的那些?

以下是chromedriver doc提及性能日志的链接:https://sites.google.com/a/chromium.org/chromedriver/logging/performance-log

cni*_*ina 13

您需要添加以下chromeOptions内容perfLoggingPrefs,loggingPrefshttps://github.com/angular/protractor-cookbook/blob/master/protractor-javascript/example-network/conf.js所示.

capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
      'perfLoggingPrefs': {
        'enableNetwork': true,
        'enablePage': false,
        'enableTimeline': false
      }
    },
    loggingPrefs: {
      performance: 'ALL',
      browser: 'ALL'
    }
  },
Run Code Online (Sandbox Code Playgroud)

获取日志时,我编写的示例中记录了afterEach每次测试后输出的方法.

  afterEach(() => {
    browser.manage().logs().get('performance').then((browserLogs) => {
      browserLogs.forEach((browserLog) => {
        var message = JSON.parse(browserLog.message).message;
        if (message.method == 'Network.responseReceived') {
          console.log(message);
        }
      });
    });
  });
Run Code Online (Sandbox Code Playgroud)

从日志中,您应该能够看到加载javascript文件,资产等时发出的任何get请求.

更新的答案

更新每条评论的答案.如果使用'Network.requestWillBeSent',您可以查看POST.

  • 谢谢 !!此外,如果你想获得一个post请求的params,你可以通过方法过滤:'Network.requestWillBeSent',你可以在postData数组中获取它们:) (2认同)
  • 如何获取响应体? (2认同)