You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright Python:新标签页视频录制失效问题求助

解决Playwright Python中同窗口新标签页无法录制视频的问题

问题根源

你的示例代码存在逻辑错误:创建new_page后重新初始化了context和page,导致原new_page所属的旧上下文被覆盖且未正确处理;同时你误解了Playwright的视频录制规则——视频录制是绑定在浏览器上下文(context)上的,同一个上下文内的所有页面(标签页)都会自动被录制,无需单独配置。

修正方案

1. 主动创建新标签页的场景

只需保证所有标签页都在同一个开启了视频录制的上下文内创建,即可自动录制所有页面操作:

def test_perform_actions_and_record():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        # 仅创建一个带视频录制配置的上下文
        context = browser.new_context(record_video_dir="videos/")
        
        # 第一个标签页
        page = context.new_page()
        page.goto("https://example.com")

        # 同一上下文内创建新标签页,自动继承录制配置
        new_page = context.new_page()
        new_page.goto("https://example2.com")

        # 新标签页操作会被正常录制
        new_page.fill("#username", "example_user")
        new_page.fill("#password", "example_password")
        new_page.click("#login_button")

        # 按顺序关闭资源
        page.close()
        new_page.close()
        context.close()
        browser.close()

2. 点击链接触发新标签页的实际场景

通过监听上下文的page事件捕获自动打开的新标签页,基于同一上下文实现录制:

def test_record_new_tab_from_click():
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context(record_video_dir="videos/")
        page = context.new_page()
        page.goto("https://example.com")

        # 监听上下文的page事件,等待新标签页打开
        new_page_promise = context.wait_for_event("page")
        # 模拟点击打开新标签页的链接(替换为你实际的选择器)
        page.click("a[target='_blank']")
        new_page = new_page_promise.result()

        # 等待新标签页加载完成
        new_page.wait_for_load_state()

        # 新标签页的操作会被录制
        new_page.fill("#username", "example_user")
        new_page.fill("#password", "example_password")
        new_page.click("#login_button")

        # 清理资源
        page.close()
        new_page.close()
        context.close()
        browser.close()

注意事项

  • 每个页面的视频文件会以页面唯一ID命名,保存在record_video_dir指定目录下
  • 必须调用context.close()才能确保视频文件完整保存,直接关闭浏览器可能导致视频损坏
  • 若需自定义视频文件名,可在页面关闭后通过page.video.path()获取路径,自行重命名

内容的提问来源于stack exchange,提问作者Subasri sridhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:53:13