【问题标题】:Testcafe-redirecting issueTestcafe 重定向问题
【发布时间】:2018-10-19 22:13:24
【问题描述】:

我们正在尝试测试一个页面,该页面在某一时刻将执行重定向到另一个页面以获取登录凭据。在此之后,我们需要返回初始页面并从重定向之前停止的位置继续。

我怎样才能做到这一点?

我尝试使用角色,但这不会将数据保留在初始页面上,而是重新加载页面,然后该页面为空。此外,对于角色,您总是会返回同一页面。

有什么建议吗?

【问题讨论】:

    标签: automated-tests roles credentials e2e-testing testcafe


    【解决方案1】:

    使用roles mechanism 是保存和恢复cookies/存储的唯一内置方法。每个角色都有其带有初始化函数的角色构造函数。 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 的自定义解决方案示例。

    【讨论】:

    • 嗨,Alex,我已经在一些通用网站(例如 www.google.com)上测试了这种方法,并且成功了。然而,在工作中,我们正在测试的网页需要登录。因此,当我们开始测试时,我们会在整个测试过程中使用特定的漂移用户。在我们开始使用 ROLES 之前,我们实际上手动运行了重定向到登录页面的步骤,并且效果也很好。 (所以我们使用 testcafe-live 开始测试,我们将它们运行到某个步骤,然后我们从发生重定向的步骤手动继续,它可以工作)。
    • 但是,当使用 ROLES 转到重定向页面时,我们会在实际重定向发生之前收到 LOGIN FAILED 消息。我们已经看到,角色描述中的最后一行代码由 TestCafe 执行,当它从该角色定义中跳出时,我们得到这个 LOGIN FAILED。那时我们甚至还没有点击将我们重定向到登录页面的按钮。
    • 您有什么解决办法吗?我想在重定向到另一个(登录页面)时继续在默认页面上登录,然后当我回到默认页面时,我想从我停止的地方继续。正如我所说,通过在没有登录的情况下在一般页面上使用 ROLES,我发现它可以工作,但是当我们登录时,事情就开始失败了。不是测试本身,而是页面显示 LOGIN FAILED,因为它以某种方式检测到我们正在从 ROLE 定义中移出。
    • 我可以提一下,我在调用第一个角色“await t.setNativeDialogHandler(() => {})”之前添加了这一行,这是因为否则我会在控制台中收到错误消息“角色切换后恢复配置时出错。在页面上调用了本机 beforeunload 对话框...”使用 NativeDialogHandler 函数为本机对话框引入处理函数
    • 如果没有测试代码和示例项目,很难确定这种行为的原因。如果您使用以下链接在 GitHub 上创建一个单独的问题,我将不胜感激:github.com/DevExpress/testcafe/issues/… 请附上演示该问题的测试代码和示例项目(或 url)。
    【解决方案2】:

    在应用程序本身中可能有一些值得考虑的设计因素,也许是为了使用本地或会话存储。抛开测试不谈,无论出于何种原因,如果用户手动重新加载,用户是否也会遇到这种消失的数据?

    根据我使用 TestCafe 的经验,在某些情况下,为了解决类似问题,我必须在每次测试中做更多的事情,包括有时我无法使用角色并简单地编写了我自己的可重用登录功能,我在这里和那里调用。

    这似乎是 TestCafe 与测试此类功能(SPA 范式,也许就是这样)相结合的限制之一。它将重新加载页面,但如果我没记错的话,在他们的问题跟踪器中对此进行了讨论,因此如果您还没有浏览过,也可能值得在那里浏览。

    【讨论】:

    • 感谢您的回复。不幸的是,该页面已经在使用中,因此目前无法进行一些设计更改。
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 2019-07-31
    • 2011-02-04
    • 2021-03-30
    • 2021-03-28
    • 2011-11-18
    • 2016-05-21
    相关资源
    最近更新 更多