当我使用 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