相关疑难解决方法(0)

避免使用 cy.wait() 等待页面加载由于中止获取请求 cypress

我正在运行一个 cypress 测试,该测试需要在单击元素并登录之前加载页面,但由于某种原因,失败(并中止)的 GET 请求导致页面永远加载并最终超时,除非我添加cy.click() 调用之前的 cy.wait(6000)。我需要以某种方式等待页面加载而不使用 cy.wait()。鉴于我无法修复中止的 GET 请求,我该怎么做?

在此处输入图片说明

  cy.visit(loginUrl)
  cy.url().should('contain', '#/loginPortal')
  cy.wait(6000) //Allows page to load before trying to log in, needs to be removed
  cy.contains('ButtonText').click()
Run Code Online (Sandbox Code Playgroud)

timeout node.js cypress

7
推荐指数
1
解决办法
1万
查看次数

Cypress - 如何不等待页面加载事件?

相反,我如何不等待页面load事件。我遇到的情况是,单击生成表单提交并开始下载。然后 Cypress 等待load从未发生的页面事件。

我试过了:

setTimeout(
  cy.window().then(win => {
    win.dispatchEvent(new Event('load'))
  }), 5000);
cy.get('#btn').click();
//and also tried:
cy.get('form.excel-data').submit() //redirect to server
//and:
cy.on('window:before:load', (win) => {
  win.removeEventListener('load');
})
cy.get('#btn').click();
Run Code Online (Sandbox Code Playgroud)

** 我知道最佳实践以及我不应该下载测试href等...但我的问题仍然存在。

javascript automated-tests cypress

6
推荐指数
1
解决办法
7950
查看次数

Cypress 与 SystemJS

我正在尝试创建一些基本测试来尝试新的Cypress库。在我的测试中,我正在cy.visit('http://mywebsite.com');加载一个使用 SystemJS 的 AngularJS 应用程序。

如果我正确理解 Cypress,我不需要做任何其他事情,它会确保在运行其他任何操作之前加载页面。然而,这似乎不起作用,因为页面已加载,但 SystemJS 仍在加载模块。

在不使用 的情况下,如何让 Cypress 等待所有 SystemJS 模块加载,然后再运行更多测试cy.wait(5000)

编辑

感谢 Dwelle,这是适合我的解决方案。我将初始的 System.import 包装在一个承诺中,一旦 AngularJS 应用程序启动,该承诺就会得到解决。

window.APP_READY = new Promise(function(resolve, reject) {
    System.import('app').then(function(app) {
        angular.element(document).ready(function() {
            angular.bootstrap(document, ['app']);
            resolve();
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

然后在测试中

cy.visit('http://mywebsite.com').its('APP_READY');
Run Code Online (Sandbox Code Playgroud)

javascript testing systemjs es6-modules cypress

5
推荐指数
1
解决办法
2597
查看次数