Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
¿Cómo puedo hacer que el dramaturgo escuche los eventos del mensaje?

Tengo un sitio web que se comunica a través de comandos postMessage

 window.parent.postMessage(communication, this.origin);

Cuando uso dramaturgo, estoy tratando de hacer un controlador "en mensaje"

 function eventListener(returnEvent: any): any { window.addEventListener('message', function(event: MessageEvent) { console.log('Im here'); if (event.data.messageId === 'payment-method') { console.log('setting return event', event); returnEvent = event; return returnEvent; } }); } ... let returnEvent: any = {}; await page.evaluate(eventListener, returnEvent); await creditCardDetailsPage.fillFormValid(); await page.waitForTimeout(5000); //give time for message event to fire console.log('event was', returnEvent); await expect(returnEvent).toEqual(<MY DATA OBJECT HERE>)

salida de la consola

 Im here setting return event MessageEvent event was {}

No puedo poner mis expectativas en el código page.evaluate() , porque entonces se está ejecutando dentro del contexto de la etiqueta javascript que está inyectando, y no dentro del contexto de la especificación.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

async def print_args(msg): values = [] for arg in msg.args: values.append(await arg.json_value()) print(values) page.on("console", print_args) await page.evaluate("console.log('hello', 5, {foo: 'bar'})")
about 4 years ago · Juan Pablo Isaza Report

0

Eventualmente quería llegar a una expect , más bien una evaluate o una waitForEvent por evento.

Lamentablemente, no pude encontrar nada para escuchar un evento de mensaje. En su lugar, simplemente vamos a console.info .

Esta solución envuelve page.on('console', ...) en una función asíncrona que simplemente podemos usar como un interruptor de 'resolver si tiene éxito, colgar si falla'

 // Return true if the page emits 'Hello, World!' to the console info level async function waitForMessageAsync(): Promise<boolean> { return new Promise(function (resolve) { page.on('console', (msg) => { if (msg.type() === 'log' && msg.text() === 'Hello, World!') { resolve(true); } }); }); } await expect(await waitForMessageAsync).toBeTruthy();

De esta manera, expect fallará la prueba si se agota el tiempo de espera de nuestro 'Hello, World!' ¡mensaje! 🥳

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!