He estado haciendo pruebas de Playwright durante algún tiempo en el sitio de mi empresa y, en general, ha ido bien. Pero nos suscribimos a Intercom, y parece aparecer casi al azar, oscureciendo cosas que quiero probar. He probado de varias formas y esta parece funcionar:
this.page.on('frameattached', async (frame) => { await new Promise((resolve) => setTimeout(resolve, 500)); try { const dismiss = await frame.waitForSelector('div[aria-label="Dismiss"]'); if (dismiss) { dismiss.click({ timeout: 2000 }); } } catch (_) { return Promise.resolve(); } return Promise.resolve(); });
Sin embargo, es bastante torpe. No me gusta usar localizadores cuando parece que ElementHandle sería el camino a seguir, pero no puedo descifrar la sintaxis para ello. Es bastante fácil obtener ElementHandle con frame.$()
, pero luego no puedo simplemente hacer un .click()
en el resultado.
¿Alguna pista sobre cómo hacer esto sin el tedioso tiempo de espera y el intento de captura?