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

如何通过Playwright Python的page.on("response")获取返回值

解决Playwright Python捕获响应并传递结果的问题

原代码中,page.on("response")的回调函数返回值无法直接传递给run函数,因为事件回调是异步触发的。可以通过以下方式实现需求:

方法一:使用可变对象存储响应结果

利用列表(可变对象)在回调函数中存储符合条件的响应数据,后续在run函数中读取该数据:

from playwright.sync_api import Playwright, sync_playwright

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(channel="chrome", headless=False)
    context = browser.new_context()
    page = context.new_page()
    
    # 定义可变对象存储响应结果
    response_data = []
    
    def handle_response(response):
        if "api/list" in response.url and response.status == 200:
            # 将结果存入列表
            response_data.append(response.json())
    
    page.on("response", handle_response)
    page.goto("https://www.example.com/")
    
    # 等待页面操作完成,确保响应已被捕获(可根据实际场景调整等待逻辑)
    page.wait_for_load_state("networkidle")
    
    # 使用捕获到的响应数据进行后续操作
    if response_data:
        print("捕获到的响应数据:", response_data[0])
        # 这里添加你的业务逻辑
    
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

方法二:使用page.wait_for_response更精准捕获

如果明确要等待某个特定响应,推荐使用page.wait_for_response,它会直接返回匹配的响应对象,无需额外回调:

from playwright.sync_api import Playwright, sync_playwright

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(channel="chrome", headless=False)
    context = browser.new_context()
    page = context.new_page()
    
    # 启动页面操作的同时等待响应
    with page.expect_response(lambda response: "api/list" in response.url and response.status == 200) as response_info:
        page.goto("https://www.example.com/")
    
    # 获取响应数据
    response = response_info.value
    data = response.json()
    
    # 使用响应数据进行后续操作
    print("捕获到的响应数据:", data)
    # 这里添加你的业务逻辑
    
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

关键说明

  • 方法一适合需要监听多个响应的场景,通过回调收集所有符合条件的结果。
  • 方法二更高效,直接等待目标响应,避免不必要的监听,适合明确目标响应的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:44:59