我们正在尝试测试一个页面,该页面有一次将执行重定向到另一个页面以获取登录凭据。此后,我们需要返回初始页面并从其停止的位置继续进行重定向。
我该如何实现?
我尝试过使用角色,但这不会将数据保留在初始页面上,而是重新加载了随后为空的页面。同样,对于角色,您总是返回到同一页面。
有什么建议吗?
答案 0 :(得分:2)
使用角色机制是保存和还原Cookie /存储的唯一内置方法。每个角色都有其带有初始化功能的角色构造函数。 Cookie和存储仅在角色初始化后才保存。这意味着您可以尝试在测试的第一部分使用一个角色并保存页面状态:
const role1 = Role(basePage, {
// do smth
});
const role2 = Role(loginPage, {
// login
});
test('test', async t => {
await t.useRole(role1); // state is saved
await t.useRole(role2); //
await t.useRole(role1); // state is restored
})
如果这种方法不能满足您的需求,则可以尝试编写一些自定义逻辑来保存/恢复状态。请点击此链接https://github.com/DevExpress/testcafe/issues/2142,以查看有关如何通过CustomFunctions保存/恢复localStorage的自定义解决方案的示例。
答案 1 :(得分:0)
在应用本身中可能有一些设计上的考虑值得考虑,也许是对本地或会话存储的一些使用。撇开测试,如果出于任何原因手动重新加载,用户也不会体验到这些消失的数据吗?
根据我对TestCafe的经验,在某些情况下,为了解决类似的问题,在每个测试中我需要做的事情比我关心的要多,包括我无法使用角色并简单地编写自己的可重用登录功能的时间。在这里和那里打电话。
这似乎是TestCafe与测试此类功能(SPA范例,也许就是这样)结合的局限性之一。它会重新加载页面,但是如果我没记错的话,他们的问题跟踪器中已经有关于它的讨论,因此如果您还没有浏览过它,那么也值得在那里浏览。