Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

302
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda