我正在创建 Cypress e2e 测试,但是我们的应用程序作为父页面顶部的模态 (iframe) 打开。由于 Cypress 不支持 iframe,我决定尝试“独立”运行应用程序。但是,在启动应用程序时,它会通过 window.postMessage
从父页面获取数据(有关流和 session 的信息)。是否可以通过 Cypress 将此数据传递给应用程序?
我试图通过 cy.request 获取我们从后端接收的数据,它解决了 session 数据的问题,但我仍然无法弄清楚如何传递有关流的信息。
最佳答案
您可以发送 window.postMessage()
在 Cypress 。由于 Cypress 在您的应用程序旁边的浏览器中运行,因此它可以访问所有 Web API。
为了获得对应用程序的window
对象的引用,您可以使用cy.window()
。
综合起来,这就是您向被测应用程序发送 postMessage
的方式:
cy.window() // get a reference to application's `window`
.then($window => {
const message = 'some data here'
$window.postMessage(message, '*')
})
关于browser - 是否可以使用 Cypress 将 `postMessage` 发送到应用程序?如何传递通过 `postMessage` 接收的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662776/