我们想测试单击按钮后执行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')
但这不起作用。我们如何实现这一目标?
答案 0 :(得分:1)
当前无法使用cypress。赛普拉斯团队正在研究网络存根。看看this issue。
答案 1 :(得分:0)
我们仍在等待Art713链接的功能请求时,为我们找到了一个解决方法:
我们让cypress检查在延迟加载的js文件中定义的全局var /函数:
cy.window().its('<any global var / function>')
在我们的案例中,我们还增加了cypress.json中的defaultCommandTimeout,以避免4秒后超时
{
"defaultCommandTimeout": 10000
}