@@ -160,6 +160,73 @@ module.exports = {
160160 log ( `[assignWindows] Page ${ i } : Error getting URL - ${ error . message } ` ) ;
161161 }
162162 }
163+
164+ // 检查是否有MetaMask扩展页面
165+ const hasMetamaskPage = pages . some ( page => {
166+ try {
167+ return page . url ( ) . includes ( `chrome-extension://${ metamaskExtensionId } ` ) ;
168+ } catch ( e ) {
169+ return false ;
170+ }
171+ } ) ;
172+
173+ if ( ! hasMetamaskPage ) {
174+ log ( '[assignWindows] No MetaMask pages found, attempting to open MetaMask extension...' ) ;
175+ try {
176+ // 尝试打开MetaMask扩展页面
177+ const metamaskPage = await browser . contexts ( ) [ 0 ] . newPage ( ) ;
178+ await metamaskPage . goto ( `chrome-extension://${ metamaskExtensionId } /home.html` ) ;
179+ log ( '[assignWindows] MetaMask extension page opened successfully' ) ;
180+
181+ // 重新获取页面列表
182+ pages = await browser . contexts ( ) [ 0 ] . pages ( ) ;
183+ log ( `[assignWindows] After opening MetaMask, found ${ pages . length } pages in browser context` ) ;
184+
185+ // 重新记录所有页面URL
186+ for ( let i = 0 ; i < pages . length ; i ++ ) {
187+ try {
188+ const url = pages [ i ] . url ( ) ;
189+ log ( `[assignWindows] New Page ${ i } : ${ url } ` ) ;
190+ } catch ( error ) {
191+ log ( `[assignWindows] New Page ${ i } : Error getting URL - ${ error . message } ` ) ;
192+ }
193+ }
194+ } catch ( error ) {
195+ log ( `[assignWindows] Failed to open MetaMask extension: ${ error . message } ` ) ;
196+
197+ // 备选方案:尝试通过chrome://extensions/页面访问MetaMask
198+ try {
199+ log ( '[assignWindows] Trying alternative approach via chrome://extensions/...' ) ;
200+ const extensionsPage = await browser . contexts ( ) [ 0 ] . newPage ( ) ;
201+ await extensionsPage . goto ( 'chrome://extensions/' ) ;
202+ log ( '[assignWindows] Opened chrome://extensions/ page' ) ;
203+
204+ // 等待一下让页面加载
205+ await new Promise ( resolve => setTimeout ( resolve , 2000 ) ) ;
206+
207+ // 重新获取页面列表
208+ pages = await browser . contexts ( ) [ 0 ] . pages ( ) ;
209+ log ( `[assignWindows] After opening extensions page, found ${ pages . length } pages in browser context` ) ;
210+
211+ // 再次检查是否有MetaMask页面
212+ const hasMetamaskPageAfterExtensions = pages . some ( page => {
213+ try {
214+ return page . url ( ) . includes ( `chrome-extension://${ metamaskExtensionId } ` ) ;
215+ } catch ( e ) {
216+ return false ;
217+ }
218+ } ) ;
219+
220+ if ( hasMetamaskPageAfterExtensions ) {
221+ log ( '[assignWindows] MetaMask pages found after opening extensions page' ) ;
222+ } else {
223+ log ( '[assignWindows] Still no MetaMask pages found after opening extensions page' ) ;
224+ }
225+ } catch ( extensionsError ) {
226+ log ( `[assignWindows] Failed to open chrome://extensions/: ${ extensionsError . message } ` ) ;
227+ }
228+ }
229+ }
163230
164231 let mainWindowAssigned = false ;
165232 let metamaskWindowAssigned = false ;
0 commit comments