Network.emulateNetworkConditions 不适用于 chrome 59 --headless
Network.emulateNetworkConditions doesn't work in chrome 59 --headless
我正在尝试使用 chrome-remote-interface
with this example 作为起点
在 chrome --headless
(chrome 版本 59)中模拟常规 3G 连接
const CDP = require('chrome-remote-interface');
const fs = require('fs');
CDP(async (client) => {
try {
const {Page, Tracing, Network} = client;
Network.emulateNetworkConditions({
offline: false,
latency: 100,
downloadThroughput: 750 * 1024 / 8,
uploadThroughput: 250 * 1024 / 8
});
await Promise.all([Network.enable(), Page.enable()]);
const { result } = await Network.canEmulateNetworkConditions();
console.log(result); // always false
// trace a page load
const events = [];
Tracing.dataCollected(({value}) => {
events.push(...value);
});
await Tracing.start();
await Page.navigate({url: 'https://github.com'});
await Page.loadEventFired();
await Tracing.end();
await Tracing.tracingComplete();
// save the tracing data
fs.writeFileSync('./timeline.json', JSON.stringify(events));
} catch (err) {
console.error(err);
} finally {
await client.close();
}
}).on('error', (err) => {
console.error(err);
});
但是Network.emulateNetworkConditions
seems to not be working. To prove that Network.canEmulateNetworkConditions()
总是returnfalse
。没有 --headless
标志 Network.canEmulateNetworkConditions()
returns true
.
chrome-canary --headless
(版本 61)给出相同的结果。
是我的例子有错误还是chrome59目前缺少这个功能?
在版本 64 以下的 headless Chrome 中缺少 feature。目前 Network.emulateNetworkConditions
在 Chromium 和 Chrome Canary (64) headless 模式下工作正常。
我正在尝试使用 chrome-remote-interface
with this example 作为起点
chrome --headless
(chrome 版本 59)中模拟常规 3G 连接
const CDP = require('chrome-remote-interface');
const fs = require('fs');
CDP(async (client) => {
try {
const {Page, Tracing, Network} = client;
Network.emulateNetworkConditions({
offline: false,
latency: 100,
downloadThroughput: 750 * 1024 / 8,
uploadThroughput: 250 * 1024 / 8
});
await Promise.all([Network.enable(), Page.enable()]);
const { result } = await Network.canEmulateNetworkConditions();
console.log(result); // always false
// trace a page load
const events = [];
Tracing.dataCollected(({value}) => {
events.push(...value);
});
await Tracing.start();
await Page.navigate({url: 'https://github.com'});
await Page.loadEventFired();
await Tracing.end();
await Tracing.tracingComplete();
// save the tracing data
fs.writeFileSync('./timeline.json', JSON.stringify(events));
} catch (err) {
console.error(err);
} finally {
await client.close();
}
}).on('error', (err) => {
console.error(err);
});
但是Network.emulateNetworkConditions
seems to not be working. To prove that Network.canEmulateNetworkConditions()
总是returnfalse
。没有 --headless
标志 Network.canEmulateNetworkConditions()
returns true
.
chrome-canary --headless
(版本 61)给出相同的结果。
是我的例子有错误还是chrome59目前缺少这个功能?
在版本 64 以下的 headless Chrome 中缺少 feature。目前 Network.emulateNetworkConditions
在 Chromium 和 Chrome Canary (64) headless 模式下工作正常。