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

Playwright Python:如何检测浏览器窗口被手动关闭?

如何检测Playwright中手动关闭的浏览器窗口?

当用户手动关闭Chromium窗口时,page.is_closed()和browser.is_connected()无法准确触发的原因在于:

  • page.is_closed()仅对通过Playwright API(如page.close())主动关闭的页面生效,用户手动操作不会更新这个状态。
  • browser.is_connected()的进程状态检查存在延迟,且窗口关闭后进程可能未立即终止,导致循环无法退出。

正确解决方案

利用Playwright的事件监听机制,等待浏览器的disconnected事件——用户手动关闭窗口会直接终止浏览器进程,触发该事件,脚本会自动暂停直到事件发生。

修改后的代码如下:

import time
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()

    page.goto("https://example.com/login")
    print("请登录,然后关闭窗口")

    # 等待浏览器断开连接(用户手动关闭窗口)
    browser.wait_for_event("disconnected")

    # 提取登录后的Cookie
    cookies = context.cookies()
    print("Cookies:", cookies)

    # 确保浏览器资源被释放
    if browser.is_connected():
        browser.close()

补充说明

如果你的需求是允许用户关闭单个页面而非整个浏览器窗口,可以将browser.wait_for_event("disconnected")替换为page.wait_for_event("close"),这样脚本会在单个页面关闭时继续执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:28:22