我们网站的主页有一个 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/