Hola, estoy tratando de iniciar sesión en algo como esto;
Los campos de entrada se pueden traducir a nombre de username y password y los botones son login y cancel .
Estoy tratando de escribir en estos campos y presionar el botón de inicio de login (azul)
Intenté await page.authenticate({ username: ... , password: ... })
También probé page.on('dialog', async (dialog) => .......) pero ninguno de los dos funciona, simplemente permanece así.
O cómo puedo seleccionar esos campos, no sé si es posible ya que su función está basada en javascript.

y aquí está mi código;
import express from 'express'; import puppeteer from 'puppeteer'; import userAgent from 'user-agents'; const app = express(); const screenshot = 'github3.png'; app.get('/', async (req, res) => { const browser = await puppeteer.launch({ headless: false, executablePath: `C:/Program Files (x86)/Google/Chrome/Application/chrome.exe`, defaultViewport: null, args: ['--start-maximized'], }); const page = await browser.newPage(); await page.setUserAgent(userAgent.toString()); page.setDefaultNavigationTimeout(0); await page.goto('myUrl...', { waitUntil: 'load', timeout: 0, }); await page.click('#krbSubmit'); // AFTER THIS CLICK THE PROMPT OPENS ON THE NEXT PAGE // await browser.close(); res.send('hi'); }); app.listen('5000', console.log('server listening'));He colocado la página de await page.authenticate({...}) en el lugar equivocado. Ahora, puede proceder.
Aquí está el código final;
import express from 'express'; import puppeteer from 'puppeteer'; import userAgent from 'user-agents'; const app = express(); const BLOCKLIST_URL = 'your_url'; const screenshot = 'github3.png'; app.get('/', async (req, res) => { const browser = await puppeteer.launch({ headless: false, executablePath: `C:/Program Files (x86)/Google/Chrome/Application/chrome.exe`, defaultViewport: null, args: ['--start-maximized'], }); const page = await browser.newPage(); await page.setUserAgent(userAgent.toString()); page.setDefaultNavigationTimeout(0); await page.authenticate({ username: 'username', password: 'password' }); await page.goto(BLOCKLIST_URL, { waitUntil: 'load', timeout: 0, }); await page.click('#krbSubmit'); // await browser.close(); res.send('hi'); }); app.listen('5000', console.log('server listening'));Puede usar la interceptación de solicitudes para inyectar las credenciales en la solicitud que hace el navegador después de hacer clic #krbSubmit , más precisamente la solicitud que muestra la ventana emergente de inicio de sesión de su captura de pantalla:
await page.setRequestInterception(true); page.on("request", (request) => { var url = request.url(); if (<url is a generated login URL>) request.continue({ url: url.replace("://", "://username:password@"), headers: { authorization: "Basic " + Buffer.from("username:password", "base64") } }); else request.continue(); }); await page.goto('myUrl...', { waitUntil: 'load', timeout: 0, }); await page.click('#krbSubmit'); Uno de los dos métodos de inyección (en la URL o en la Authorization: Basic ) debería ser suficiente.
Esto supone que puede detectar la URL de inicio de sesión generada por un determinado patrón. Si eso falla, podría considerar otros métodos de detección, como el conteo de solicitudes: el primero siempre va a una URL fija, el segundo a la URL de inicio de sesión.