使用Microsoft Playwright如何判断哪个浏览器标签页处于焦点状态?
在Microsoft Playwright中判断焦点标签页的方法
Playwright确实没有提供Context.Pages.Current或Context.CurrentPage这类直接获取焦点页面的属性,但可以通过以下两种实用方式判断:
直接查询页面焦点状态
借助浏览器原生APIdocument.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
相关产品推荐
相关产品推荐

