Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cypress runner在运行断言之前不等待页面加载_Javascript_Cypress_End To End - Fatal编程技术网

Javascript Cypress runner在运行断言之前不等待页面加载

Javascript Cypress runner在运行断言之前不等待页面加载,javascript,cypress,end-to-end,Javascript,Cypress,End To End,我使用cypress运行端到端测试,在场景中的某个时刻,我单击一个按钮,该按钮触发对后端API和条带API的多个请求。 一旦所有请求都成功,就会有一个重定向。我试图断言URL包含一个关键字,可以确认重定向成功 cy.get('[data-cy="payment-form-submit"]').click() cy.url().should('include', 'somekeyword') 不幸的是,Cypress在计算cy.url()之前并没有等待所有请求得到解决,因此尽

我使用cypress运行端到端测试,在场景中的某个时刻,我单击一个按钮,该按钮触发对后端API和条带API的多个请求。 一旦所有请求都成功,就会有一个重定向。我试图断言URL包含一个关键字,可以确认重定向成功

cy.get('[data-cy="payment-form-submit"]').click()
cy.url().should('include', 'somekeyword')
不幸的是,Cypress在计算
cy.url()
之前并没有等待所有请求得到解决,因此尽管重定向成功,断言始终失败

cy.get('[data-cy="payment-form-submit"]').click()
cy.url().should('include', 'somekeyword')
我在报纸上读到它应该等待,但无法在实践中验证它。我是不是遗漏了什么?我应该如何解决这个问题?

您可以尝试。然后()操作,它显式地等待操作完成

cy.get('[data-cy="payment-form-submit"]').click().then(()=>{
cy.url().should('include', 'somekeyword')
});

您可以尝试.then()操作,它显式地等待操作完成

cy.get('[data-cy="payment-form-submit"]').click().then(()=>{
cy.url().should('include', 'somekeyword')
});

您应该使用
cy.intercept
上的
as()
方法,以便正确等待所有请求完成,然后再继续验证URL是否已更改。

您应该使用
as()
cy.intercept
上的
方法,以便正确等待所有请求完成,然后再继续验证URL是否已更改。

使用
.should()
命令将重试前面的命令,您可以查看是否使用回调运行等效命令并记录每个调用

cy.url().should(url=>{
console.log(url)//4秒内有170多个日志
expect(url).to.include('somekeyword');
})
您可能需要更长的超时时间

cy.url({timeout:10000})。应该('include','somekeyword');
使用
.should()
命令将重试前面的命令,您可以查看是否使用回调运行等效命令并记录每个调用

cy.url().should(url=>{
console.log(url)//4秒内有170多个日志
expect(url).to.include('somekeyword');
})
您可能需要更长的超时时间

cy.url({timeout:10000})。应该('include','somekeyword');

按钮单击和重定向之间需要多长时间?按钮单击和重定向之间需要多长时间?