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

使用Microsoft Playwright如何判断哪个浏览器标签页处于焦点状态?

在Microsoft Playwright中判断焦点标签页的方法

Playwright确实没有提供Context.Pages.Current或Context.CurrentPage这类直接获取焦点页面的属性,但可以通过以下两种实用方式判断:

  • 直接查询页面焦点状态
    借助浏览器原生API document.hasFocus(),通过page.evaluate()在目标页面执行该方法,就能准确判断页面是否处于焦点状态。你可以遍历上下文的所有页面,筛选出返回true的那个:

    // JavaScript版本示例
    const focusedPage = (await context.pages()).find(async page => {
      return await page.evaluate(() => document.hasFocus());
    });
    

    如果用C#版本,逻辑类似:

    // C#版本示例
    var focusedPage = context.Pages.FirstOrDefault(async page => 
      await page.EvaluateAsync<bool>("() => document.hasFocus()")
    );
    
  • 跟踪页面激活事件
    可以监听页面的激活相关事件,维护一个变量记录当前处于焦点的页面。比如监听页面的focus事件,或者主框架导航事件:

    // JavaScript版本示例
    let currentFocusedPage;
    context.on('page', page => {
      // 监听页面获得焦点事件
      page.on('focus', () => {
        currentFocusedPage = page;
      });
      // 可选:监听主框架导航,通常导航后的页面会获得焦点
      page.on('framenavigated', frame => {
        if (frame === page.mainFrame()) {
          currentFocusedPage = page;
        }
      });
    });
    

两种方式里,document.hasFocus()是最可靠的,因为它直接查询浏览器的真实焦点状态,而事件跟踪的方式可能存在边界情况(比如页面被系统弹窗遮挡导致焦点丢失,但事件未触发)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:07:04