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

求助:Playwright控制浏览器标签页并发数,关闭标签后无法自动开新标签

解决Playwright批量打开页面时的标签页数量限制问题

问题核心在于Playwright与Selenium对页面/窗口的统计逻辑存在差异:

  • Selenium的window_handles仅返回当前活跃的窗口,关闭窗口后会自动从列表中移除
  • Playwright的context.pages()返回所有创建过的页面,包括已经关闭但未被回收的页面,直接取长度会导致统计错误

修正后的代码需要过滤掉已关闭的页面,只统计活跃页面数量:

for row in df.itertuples():
    # 实时统计当前活跃的页面数量
    while len([page for page in chrome.browser.contexts[0].pages if not page.is_closed()]) > abas:
        time.sleep(0.5)
    # 打开新页面并处理文件
    page = chrome.browser.contexts[0].new_page()
    # 此处添加你的文件处理逻辑
    # ...

如果需要更高效的判断(避免每次循环都生成列表),也可以拆分逻辑:

for row in df.itertuples():
    def get_active_page_count():
        return sum(1 for page in chrome.browser.contexts[0].pages if not page.is_closed())
    
    while get_active_page_count() > abas:
        time.sleep(0.5)
    # 后续页面操作
    page = chrome.browser.contexts[0].new_page()
    # ...

这样就能保证关闭标签页后,活跃页面数量降到限制值以下时,自动打开新的标签页,和Selenium中的逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:23:11