testing - 当单击 iframe 中的提交链接 <a tag> 然后重定向到 OAUTH 流时,TestCafe 始终失败

标签 testing iframe oauth automated-tests testcafe

我们网站的主页有一个 iframe,允许用户输入他们的用户名、密码,然后提交该信息以登录患者门户。我使用 TestCafe 创建了一个测试,它输入凭据并提交凭据,然后只检查患者门户登录页面上的标题,例如 Homepage/iframe creds -> Patient Portal Title . (参见下面的示例代码)。

import { Selector } from 'testcafe';
    fixture `jmh login - Logout tests`
        .page `<the test home page url>`;

    test('JMH Home login simple testcafe', async t => {
        await t
            .switchToIframe('.login-frame')
            .typeText(Selector('#username'), "<someusername>")
            .typeText(Selector('#password'), "<somepassword>")
            .click(Selector('#submitButton'))
            .wait(2000)
            .debug()
            .switchToMainWindow()
            .navigateTo('<the test home page>') // Force to re-log

            // mychart
            .expect(Selector("title").innerText).eql('MyChart - Home')
            .expect(Selector(".acctname").innerText).eql("<name>" + " " + "<lastname>")

            // logouts
            .click(Selector('.menuicon .menuname')) // click logout
            .expect(Selector("title").innerText).eql('Sign On');
    });

每次运行测试时,都会输入用户凭据,然后选择“登录”按钮,但是当发出请求时,主窗口会重定向到 Oauth,而 TestCafe 永远不会进入登录页面,但我看到了以下错误...

✖ JMH Home login simple testcafe

1) AssertionError: expected 'Sign On' to deeply equal 'MyChart - Home'

  Browser: Chrome 78.0.3904 / Mac OS X 10.15.1

     15 |        //.navigateTo('<test home page>') // Force to re-log
     16 |        //.click(Selector('#dTlogin')) //mychart login on home
     17 |        .navigateTo('<test landing page url>') // Force to re-log
     18 |
     19 |        // mychart
   > 20 |        .expect(Selector("title").innerText).eql('MyChart - Home')
     21 |        .expect(Selector(".acctname").innerText).eql("<name>" + " " + "<lastname>")
     22 |
     23 |        // logouts
     24 |        .click(Selector('.menuicon .menuname')) // click logout
     25 |        .expect(Selector("title").innerText).eql('Sign On');

     at eql (/Users/me/ebiz_code/qa/portal-automation-tests/test-cafe/tests/jmh-login.js:20:46)
     at test (/Users/me/ebiz_code/qa/portal-automation-tests/test-cafe/tests/jmh-login.js:6:1)
     at <anonymous> (/usr/local/lib/node_modules/testcafe/src/api/wrap-test-function.js:17:28)
     at TestRun._executeTestFn (/usr/local/lib/node_modules/testcafe/src/test-run/index.js:263:19)
     at TestRun.start (/usr/local/lib/node_modules/testcafe/src/test-run/index.js:312:24)

1/1 failed (24s)

似乎 TestCafe 阻止重定向到达着陆页,或者无法跟踪主窗口,因为着陆页从未在测试运行中显示,但每次手动运行测试时都会显示。如果我使用 TestCafe 从 Oauth Pingfederate 登录页面(不是 iframe 凭据)登录,我会看到正确的登录页面,并且我可以在 TestCafe 中的登录页面上执行断言。 关于为什么这个基于 iframe 的登录不起作用的任何想法?

最佳答案

我使用此信息重现了该问题。我们需要一些时间来研究它。能否请您尝试其他登录方式?查看此测试代码:

   await t
       .maximizeWindow()
       .click(Selector('#dTlogin')) // go to the login page
       .typeText(Selector('#username'), "<someusername>")
       .typeText(Selector('#password'), "<somepassword>")
       .click(Selector('#submitButton'))
       .wait(2000)
       .navigateTo('https://your-page/') // navigate back to your page

您还可以使用 Role在您的场景中。

请告诉我您是否可以使用上述登录代码继续测试。

关于testing - 当单击 iframe 中的提交链接 <a tag> 然后重定向到 OAUTH 流时,TestCafe 始终失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58961001/

相关文章:

javascript - Angular Directive(指令) : It's possible testing that certain characters are rejected in a keypress event?

ios - iframe 在 ios 上滚动固定 div 不起作用

javascript - 为什么要为动态内容使用 iframe

authentication - 使用 OAuth 进行服务器到服务器身份验证?

C# Windows 窗体本地化测试

ruby-on-rails - 使用 Capybara(Rails、RSpec、Devise)测试注册和登录

java - 相当于 conserve String 的环境变量

javascript - jQuery jScrollPane 仅适用于文本

oauth - 保持 Twitter OAuth session

oauth - Twitter 和 Oauth 导致 401 错误