我有一个通过 postMessage 命令进行通信的网站
window.parent.postMessage(communication, this.origin);
使用剧作家时,我正在尝试做一个“on message”处理程序
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>)
控制台输出
Im here
setting return event MessageEvent
event was {}
我不能把我的期望放在page.evaluate()
代码中,因为它是在它注入的 javascript 标记的上下文中执行的,而不是在规范的上下文中。