python - Pyppeteer 没有正确提取 javascript 覆盖率
问题描述
当我使用 pyppeteer 提取 js 覆盖率时,缺少 javascript 代码的某些部分。
我正在做的是以下内容:
import asyncio
import json
import os
from pyppeteer import launch
def process_coverage(coverage):
resources = []
for entry in coverage:
url = entry['url']
text = entry['text']
used_resource = ''
for interval in entry['ranges']:
start = interval['start']
end = interval['end']
used_resource = used_resource + text[start:end]
resources.append(used_resource)
return resources
def save_to_new_file(path, content):
file = open(path, 'w')
file.write(content)
file.close()
async def main():
browser = await launch()
page = await browser.newPage()
await page.coverage.startJSCoverage()
await page.goto('http://127.0.0.1:8000/', option={'waitUntil': 'load'})
await page.setViewport({ 'width': 500, 'height': 500 })
await page.setViewport({ 'width': 1920, 'height': 1080 })
js_coverage = await page.coverage.stopJSCoverage()
js_resources = process_coverage(js_coverage)
for idx, resource in enumerate(js_resources):
save_to_new_file(f'{idx}.txt', resource)
await page.close()
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
例如,这里留下了一些屏幕截图(使用 pyppeteer 代码提取的内容与我在 chrome 浏览器上运行的覆盖率报告):
另一个例子:
如屏幕截图所示,缺少一些代码,并且在 chrome 覆盖率报告中显示使用了该代码。有谁知道我错过了什么?我错过了一些配置吗?
编辑:我还找到了一个链接,其中他们有同样的问题。问题是我不明白他们为解决问题所采取的方法:https ://github.com/puppeteer/puppeteer/issues/1054
解决方案
推荐阅读
- c# - 使用 Castle.Windsor 从 web.config 注入值
- django - df.to_html() 方法在网页上显示实际的 html,而不是它应该显示的表示(Django 网站)
- java - 即使条件为假也执行 if 语句
- python - 受约束的 TypeVar 和 Union 有什么区别?
- mysql - 错误代码:1241。操作数应在 INSERT 中包含 1 列
- android - 如何修复 Android Bitmap 中已弃用的问题?
- c - 使用 C 中的递归显示正整数个位数的所有唯一数字组合,其总和等于另一个正整数
- reactjs - TypeError:无法读取未定义反应错误的属性“地图”
- javascript - 如何使用 TypeScript 进行“映射”?
- python - 返回所有列的特定范围内的值的数据框