css 等待iframe加载cypress

ccgok5k5  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(176)

我正在测试一个使用iframe的应用程序,我想知道cypress是否可以等待iframe加载,因为我需要确保iframe已经完全加载才能执行测试。
我尝试使用cy.wait(),它甚至可以工作,但是,在它上面设置时间会使我的测试非常慢,因为在这个iframe中有几个用例

b4lqfgs4

b4lqfgs41#

cypress-iframe有一些内置的例程来等待iframe加载。
从源,它等待URL、就绪状态和加载事件:

const hasNavigated = fullOpts.url
  ? () => typeof fullOpts.url === 'string'
            ? contentWindow.location.toString().includes(fullOpts.url)
            : fullOpts.url?.test(contentWindow.location.toString())
  : () => contentWindow.location.toString() !== 'about:blank'

while (!hasNavigated()) {
  await sleep(100)
}

if (contentWindow.document.readyState === 'complete') {
  return $frame
}

await new Promise(resolve => {
  Cypress.$(contentWindow).on('load', resolve)
})

return $frame

您可以直接使用该包,而无需实现自己的等待策略,但请注意,如果您使用的Cypress版本高于10,则文档有点过时。

相关问题