2

网络驱动程序管理器 12.1.5

量角器版本 5.4.2

Chrome 版本 75.0.3770.100

browser.manage().logs().get('performance');

在升级我的 webdriver-manager 和量角器版本之前,这曾经可以正常工作。

(node:27715) UnhandledPromiseRejectionWarning: WebDriverError: invalid argument: log type 'performance' not found
 (Session info: chrome=75.0.3770.100)
 Build info: version: '3.141.59', revision: 'e82be7d358', time:    '2018-11-14T08:25:53'
System info:, os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.4', java.version: '1.8.0_191'
 Driver info: driver.version: unknown
at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:546:15)

如果我评论 browser.manage().logs().get('performance'); 和其他与性能相关的代码,然后测试运行良好。

webdriver-manager 日志显示:

Starting ChromeDriver 75.0.3770.90  on port 12268
4

4 回答 4

4

我在这个 github 问题上遇到了一个潜在的解决方案thead 。显然最近 chromedriver 开始更严格地遵守 W3C 标准,这影响了 webdriver 激活日志的方式。

我们可以通过w3c: false像这样在 chromeoptions 中设置标志来解决这个问题。

capabilities: {
    browserName: 'chrome',
    loggingPrefs: {
        browser: 'ALL',
        driver: 'ALL',
        performance: 'ALL',
    },
    'goog:chromeOptions': {
        perfLoggingPrefs: {
            enableNetwork: true,
        },
        w3c: false,
    },
},
于 2019-07-09T08:50:39.267 回答
0

我用 chrome 75.* 和 protractor 5.4.2 版本尝试了同样的事情。以下是我的发现。

  1. loggingPrefs对象是 chromeOptions 等公认的功能之一。这个对象允许我们决定日志部分的偏好。有关功能的更多详细信息,请参阅链接

    在量角器上下文中,我们必须将 loggingPrefs 对象传递给功能以启用它。 在此处输入图像描述

    一旦我们通过它,我们就可以使用browser.manage().logs().get('performance'); 获取所有性能日志。

  2. 如果您想更改 perfLoggingPrefs 那么它是 chromeOptions 对象的一部分,并且必须在那里更新。如果我们想使用默认值,则无需提及。 在此处输入图像描述

于 2019-07-02T12:53:12.617 回答
0

新版本可能不支持性能日志类型。您始终可以使用getAvailableLogTypes函数来检查支持的日志类型。我尝试了以下代码

var supportedLogTypes = await browser.manage().logs().getAvailableLogTypes();

收到的输出:

在此处输入图像描述

这意味着您只能使用两种受支持的日志类型中的任何一种。

于 2019-07-01T13:05:07.183 回答
0

chrome 对 w3c 使用更严格的规则,当我测试 chrome 驱动程序 96 时,将 w3c 设置为 false,我可以获取网络日志,但 find_element 失败并返回不是 WebElement 的 dict 值

于 2021-11-29T13:03:46.880 回答