cypress.io-等待延迟加载的js文件

时间:2019-01-23 15:48:35

标签: cypress

我们想测试单击按钮后执行ajax请求的网页。

我们可以通过定义cy.route()来等待此ajax请求的响应

cy.server()
cy.route("POST", '/exampleAjax').as('exampleAjax')
cy.get('.button').click()
cy.wait('@exampleAjax')

在ajax-Response的onComplete-Block中,我们创建一个script-Tag并将其插入:

new Ajax.Request( "exampleAjax", {
    method: "post",
    parameters: {'data-id': dataID},
    onComplete: function(transport) {
        var snode = document.createElement('script');  
        snode.setAttribute('type','text/javascript');                  
        snode.setAttribute('src','/some.js');
        document.getElementsByTagName('head')[0].appendChild(snode); 
    }
});

现在我们要等待some.js加载并尝试

cy.route("GET", '/some.js').as('some_js')
cy.wait('@some_js')

但这不起作用。我们如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

当前无法使用cypress。赛普拉斯团队正在研究网络存根。看看this issue

答案 1 :(得分:0)

我们仍在等待Art713链接的功能请求时,为我们找到了一个解决方法

我们让cypress检查在延迟加载的js文件中定义的全局var /函数:

cy.window().its('<any global var / function>')

在我们的案例中,我们还增加了cypress.json中的defaultCommandTimeout,以避免4秒后超时

{
  "defaultCommandTimeout": 10000
}