我正在测试一个使用iframe的应用程序,我想知道cypress是否可以等待iframe加载,因为我需要确保iframe已经完全加载才能执行测试。我尝试使用cy.wait(),它甚至可以工作,但是,在它上面设置时间会使我的测试非常慢,因为在这个iframe中有几个用例
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,则文档有点过时。
1条答案
按热度按时间b4lqfgs41#
包cypress-iframe有一些内置的例程来等待iframe加载。
从源,它等待URL、就绪状态和加载事件:
您可以直接使用该包,而无需实现自己的等待策略,但请注意,如果您使用的Cypress版本高于10,则文档有点过时。