在我的React应用程序中,当用户登录时,他们被重定向到仪表板。然后,应用程序向“ / files”端点发送请求,端点将返回静态文件的路径,然后应通过EventHubConsumerAsyncClient consumer = new EventHubClientBuilder()
.connectionString("<< CONNECTION STRING FOR SPECIFIC EVENT HUB INSTANCE >>")
.consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME)
.buildAsyncConsumerClient();
// Receive newly added events from partition with id "0". EventPosition specifies the position
// within the Event Hub partition to begin consuming events.
consumer.receiveFromPartition("0", EventPosition.latest()).subscribe(event -> {
// Process each event as it arrives.
});
之类的单独请求来逐个读取静态文件的路径。
问题是,这个数字永远不会相同。有时是10,有时是16,等等。直到这些资源提取完成,应用程序才会显示加载屏幕。如何让赛普拉斯等到所有响应完成?我尝试了EventData event = partitionEvent.getData();
,但它仅等待该类型的第一个请求。我不能创建多个GET https://api_address/static_file/xxx
,因为正如我所说,我不知道请求的数量。我考虑过尝试cy.wait()
仪表板div(仅在获取完成后才显示仪表板)并将重试超时设置为一个非常大的数字,但这会使我的测试不必要地变慢-正如我所说,请求数是随机的,甚至可以是1个请求。
有什么方法可以让柏树等待,直到没有特定类型的活动请求?或者,也许您知道另一种解决此问题的方法?
答案 0 :(得分:1)
最快的方法是等待加载指示器消失。
cy.get('.static-files-loading-indicator', {timeout:30000}).should('not.exist');
此声明将重试最多30秒。请参阅此处的文档:
?如果cy.get()命令后的断言失败,则cy.get()命令将再次重新查询应用程序的DOM。然后,赛普拉斯将尝试对cy.get()产生的元素进行断言。如果断言仍然失败,则cy.get()将尝试再次重新查询DOM,依此类推,直到达到cy.get()命令超时为止。
如果这太难了,您可以拦截来自/files
请求的响应,并检查响应以获取将要请求的static_files
的数量。您可以为每个文件设置cy.wait()
。