首页 > 解决方案 > 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

标签: pythonautomationpuppeteerchromiumpyppeteer

解决方案


推荐阅读