class: Coverage
Coverage 收集有关页面使用的 JavaScript 和 CSS 部分的信息。
使用 JavaScript 和 CSS 覆盖率获取初始执行代码的百分比的示例:
// 启用 JavaScript 和 CSS 覆盖
await Promise.all([
page.coverage.startJSCoverage(),
page.coverage.startCSSCoverage()
]);
// 导航到页面
await page.goto('https://example.com');
// 禁用 JavaScript 和 CSS 覆盖
const [jsCoverage, cssCoverage] = await Promise.all([
page.coverage.stopJSCoverage(),
page.coverage.stopCSSCoverage(),
]);
let totalBytes = 0;
let usedBytes = 0;
const coverage = [...jsCoverage, ...cssCoverage];
for (const entry of coverage) {
totalBytes += entry.text.length;
for (const range of entry.ranges)
usedBytes += range.end - range.start - 1;
}
console.log(`Bytes used: ${usedBytes / totalBytes * 100}%`);
以 Istanbul 消耗的形式输出覆盖率。见 puppeteer-to-istanbul。
coverage.startCSSCoverage([options])
options
<[Object]> 覆盖范围的可配置选项集resetOnNavigation
<[boolean]> 是否在每个导航上重置 coverage。默认为true
。
- returns: <[Promise]>开始覆盖时解决的 Promise
coverage.startJSCoverage([options])
options
<[Object]> 覆盖范围的可配置选项集resetOnNavigation
<[boolean]> W是否在每个导航上重置 coverage。默认为true
。reportAnonymousScripts
<[boolean]> 是否应报告页面生成的匿名脚本。默认为false
。
- returns: <[Promise]> 开始覆盖时解决的Promise
注意 匿名脚本是没有关联 URL 的脚本。这些是使用
eval
或new Function
在页面上动态创建的脚本。如果reportAnonymousScripts
设置为true
,则匿名脚本的URL将具有__ puppeteer_evaluation_script __
。
coverage.stopCSSCoverage()
- returns: <[Promise]<[Array]<[Object]>>> Promise 解析为所有样式表的覆盖率报告数组
url
<[string]> 样式表 URLtext
<[string]> 样式表内容ranges
<[Array]<[Object]>> 所使用的样式表范围。范围已排序且不重叠。start
<[number]> 文本的起始偏移量(含)end
<[number]> 文本中的结束偏移量,不包括
注意 CSS Coverage 不包含没有 sourceURLs 的动态注入样式标签。
coverage.stopJSCoverage()
- returns: <[Promise]<[Array]<[Object]>>> Promise 解析为所有脚本的覆盖率报告数组
url
<[string]> 脚本网址text
<[string]> 脚本内容ranges
<[Array]<[Object]>> 已执行的脚本范围。范围已排序且不重叠。start
<[number]> 文本的起始偏移量(含)end
<[number]> 文本中的结束偏移量,不包括
注意 默认情况下,JavaScript 覆盖率不包括匿名脚本。但是,带有sourceURL的脚本是覆盖率报告。
以 Istanbul 消耗的形式输出覆盖率。见 puppeteer-to-istanbul。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。