Skip to content

操作浏览器页面

中立 HTML rasterization 不表达导航、selector 或任意 Playwright 参数;这些操作由typed capability 暴露:

from entari_plugin_htmlrender.capabilities import PlaywrightCapability

async def capture(playwright: PlaywrightCapability, url: str) -> bytes:
    async with playwright.lease_page(viewport={"width": 1280, "height": 800}) as page:
        await page.goto(url, wait_until="networkidle", timeout=30_000)
        return await page.screenshot(full_page=True, type="png")

Entari handler 可把 service.capabilities.playwright 传给该函数。Page 只在lease_page() 上下文内有效;Browser 同理使用 lease_browser()。离开上下文、runtime cleanup 或插件热卸载后不得保存或继续使用原生对象。

原生 API 保留 Playwright 自身异常。需要跨 Provider 的 typed artifact 与稳定错误时,依赖 HtmlRenderer。导航 URL 必须由调用层建立 allowlist;资源 materialization policy 不提供导航 SSRF 防护。