如何解决一个 url 上的 Testcafe 测试脚本,然后在另一个 url 上使用 setNativeDialogHandler/navigateTo
所以我的特定测试脚本,我需要在 2 个不同的 url 上运行测试,一个,然后一个。原始/夹具 url 上的第 1 部分效果很好,但在第 2 部分中我有这 3 个测试。
test('Button Time (based on the cue point) From Brightcove',async t => { //Critical
const dataVideoIdValue = await Selector('video-js').getAttribute('data-video-id')
await t
.setNativeDialogHandler(() => true)
.navigateto('https://signin.brightcove.com/?redirect=https%3A%2F%2Fstudio.brightcove.com%2Fproducts%2Fvideocloud%2Fmedia%2Fvideos%2F' + dataVideoIdValue)
.typeText('#email','******')
.typeText('#password','******')
.click('#signinButton')
const brightcoveButtonTimeValue = Selector('.cue-point').withAttribute('data-time').getAttribute('data-time')
const cuepoint = JSON.stringify(await brightcoveButtonTimeValue);
const cuepoint2 = cuepoint.match(/\d+/g)
const cuepoint3 = parseInt(cuepoint2)
var timestamp = cuepoint3;
var minutes = Math.floor(timestamp / 60);
var seconds = timestamp % 60;
var formatted = minutes.toString().padStart(2,'0') + ':' + seconds.toString().padStart(2,'0');
console.log('\"brightcoveButtonTimeValue\":"' + formatted + '<br><br><button class=\\"accordion\\">Full Results</button><div class=\\"panel\\"><p><g class=\\"cue-point\\" data-time=\\"' + await brightcoveButtonTimeValue + '\\"></p></div>",')
const brightcoveButtonTime = Selector('.cue-point').withAttribute('data-time')
await t.expect(brightcoveButtonTime.exists).ok()
});
test('BC Thumbnail Image',async t => { //Major
const dataVideoIdValue = await Selector('video-js').getAttribute('data-video-id')
await t
.setNativeDialogHandler(() => true)
.navigateto('https://studio.brightcove.com/products/videocloud/media/videos/' + dataVideoIdValue)
const brightcoveThumbnailValue = Selector('img').withAttribute('alt','Thumbnail').getAttribute('src')
console.log('\"brightcoveButtonTime\":" ' + await brightcoveThumbnailValue + '<br><br><img width=\\"200\\" src=\\"' + await brightcoveThumbnailValue + '\\"/><br><br><button class=\\"accordion\\">Full Results</button><div class=\\"panel\\"><p><img src=\\"' + await brightcoveThumbnailValue + '\\"/></p></div>",')
const brightcoveThumbnail = Selector('img').withAttribute('alt','Thumbnail')
await t.expect(brightcoveThumbnail.exists).ok()
});
test('BC Name matches IRIS page name',async t => { //Minor
const promoVersionNameMatchCheck = (await Selector('script').withText('var promoCookie').innerText).replace(/\"/g,"").replace(/\;/g,"\;<br><br>").split('=').pop().split(';')[0].trim()
const promoVersionNameFull = (await Selector('script').withText('var promoCookie').innerText).replace(/\"/g,"").replace(/var/g,"<br>var").replace(/\;/g,"\;<br><br>")
const dataVideoIdValue = await Selector('video-js').getAttribute('data-video-id')
await t
.setNativeDialogHandler(() => true)
.navigateto('https://studio.brightcove.com/products/videocloud/media/videos/' + dataVideoIdValue)
const brightcoveTitleNameValue = Selector('.DeFinition-classic-1_11_1-1VYT-').withAttribute('data-test-name','video-name').child('.DeFinition-value-1_11_1-DlVkJ').innerText
console.log('\"brightcoveTitleNameValueText\":"BC Name: ' + await brightcoveTitleNameValue + '<br>IRIS page name: ' + await promoVersionNameMatchCheck + '<br><br><button class=\\"accordion\\">Full Results</button><div class=\\"panel\\"><p><div class=\\"DeFinition-value-1_11_1-DlVkJ\\">' + await brightcoveTitleNameValue + '</div><br><br><script><br>' + await promoVersionNameFull + '</script></p></div>"},')
const brightcoveTitleName = Selector('.DeFinition-classic-1_11_1-1VYT-').withAttribute('data-test-name','video-name').child('.DeFinition-value-1_11_1-DlVkJ')
await t.expect(brightcoveTitleName.exists).ok()
await t.expect(await promoVersionNameMatchCheck).eql(await brightcoveTitleNameValue)
});
因此,当我希望它留在 new/2nd/navigateto url 上时,这 3 个测试正在重新加载回主设备 URL。
我尝试过 Test.page 方法,但它似乎不起作用。 https://devexpress.github.io/testcafe/documentation/reference/test-api/test/page.html
知道为什么这不起作用或如何防止在 2 个 url 之间重新加载吗?我希望它在这三个测试中的第一个之后https://studio.brightcove.com/products/videocloud/media/videos/****。
解决方法
据我所知,您希望在第一次测试中登录,然后在第二次和第三次测试中继续使用您的帐户。
然而,TestCafe 从fixture/test 中定义的页面开始每个测试。这是预期的行为,因为 TestCafe 中的每个单独测试都独立于其他测试。测试不会在它们之间共享 cookie/localStorage/url。
在这种情况下,您需要查看Roles Mechanism。它将允许您在第一次测试中登录一次。之后,TestCafe 可以在第二次测试中恢复页面状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。