赛普拉斯-如何等待XHR请求

dns_nx

我是的新手cypress,所以请耐心等待。;-)我确定这是一个简单的问题,并且我已经阅读了的文档cypress,但是在cypress测试中似乎还是有问题xhr当我单击要测试的页面的另一种语言时,我想等待请求完成。当我使用时wait(5000)它可以工作,但是我认为,有xhr5个等待修复请求的更好的方法来等待请求完成。这是我的代码。任何帮助或提示,不胜感激:

describe('test',() => {
    it('should open homepage, page "history", click on English language, click on German language',() => {
        cy.server();
        cy.route('POST','/ajax.php').as('request');
        cy.visit('http://localhost:1234/history');
        cy.wait('@request');
        cy.get('div[class="cursorPointer flagSelect flag-icon-gb"]').click({force:true});
        cy.route('POST','/ajax.php').as('request');
        cy.wait(['@request']);
        //cy.wait(5000); // <- this works, but seems to be not the best way
        cy.get('h2').should(($res) => {
            expect($res).to.contain('History');
        })
        cy.get('.dataContainer').find('.container').should('have.length', 8);
    });
});

最后检查

cy.get('.dataContainer').find('.container').should('have.length', 8);

不成功,因为xhr请求尚未完成。xhr单击图标完成后,将触发请求:

cy.get('div[class="cursorPointer flagSelect flag-icon-gb"]').click({force:true});

这里的xhr请求图像,如果这有助于发现错误:

在此处输入图片说明

谢谢你的帮助。

博伊德·K。

您确定这行是正确的吗?否则,cy.wait将无法正常运行。

cy.route('POST','/ajax.php').as('request');

我希望有类似的东西

cy.route('GET','/endpoint').as('request');

您可以通过开发人员工具(Chrome中的F12)查找路线。打开页面时,请转至网络以监视加载哪种XHR。

找出请求网址和方法-bing.com示例

另外:我更喜欢在beforeEach中包含cy.server()和cy.route()命令。然后,您仅需要测试本身中的cy.wait()。有关更多信息,请参见https://docs.cypress.io/guides/references/best-practices.html#2-Run-shared-code-before-each-test

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章