Estoy tratando de registrar las llamadas de red en el navegador. Para mi caso de uso, necesito que el navegador esté en un estado abierto y debe cerrarse solo con los scripts. Actualmente estoy usando la función page.pause() para evitar que el navegador se cierre automáticamente. ¿Hay alguna otra forma de evitar que el navegador se cierre automáticamente?
test('Verify home page Load event',async({page})=>{ //const browser = await chromium.launchPersistentContext("",{headless:false}); await page.goto("https://samplesite.com") await page.on('request',req=>{ const requestUrl = req.url(); if(requestUrl.indexOf("google-analytics.com/collect")>-1){ console.log("Intercepted:->"+requestUrl); }else{ req.continue } }) await page.pause();
})
Intenté consultar este [enlace] ( ¿Cómo mantener la apertura del navegador al final del código que se ejecuta con playwright-python? ) para python, pero no pude aplicarlo a JS.
De manera similar a lo que se describió en la respuesta a la pregunta de Python, debe mantener vivo su script de alguna manera. Esta respuesta describe un par de formas de hacerlo.
Sin embargo, page.pause()
es definitivamente el enfoque recomendado: existe precisamente para este tipo de situación en la que necesita inspeccionar el navegador mientras se ejecuta su secuencia de comandos. Su secuencia de comandos también tiene algunos problemas: tal como está, cuando encuentra su solicitud de destino, está registrando algo pero no está llamando a request.continue()
(tenga en cuenta que este es un método , no una propiedad). Eso hará que todas las solicitudes se cuelguen indefinidamente hasta que continúen o se cancelen.
Probablemente quieras hacer algo como esto:
await page.route('**/*', (route, request) => { const rurl = request.url(); if (rurl.includes('google-analytics.com/collect')) { console.log(`Intercepted request to ${rurl}`); // Do other stuff? } route.continue(); });
No está claro lo que está tratando de lograr con su fragmento: si solo necesita esperar a que se active una solicitud en particular, puede usar: page.waitForRequest o page.waitForResponse y despreocúpese de mantener el navegador abierto.
Puede intentar await Task.Delay(-1)