[英]How to populate multiple prompts in a row in Cypress before initial page load
赛普拉斯新手在这里。 我正在尝试将数据填充到页面完全加载之前出现的 3 个不同提示中。 然后将这些值添加到 session 存储中。 据我了解,由于网站未完全加载,我无法关闭cy.visit()
所以我一直在使用onBeforeLoad
以便为这些提示填充数据:
before(function() {
cy.visit(base_url, {
onBeforeLoad(win) {
cy.stub(win, 'prompt').returns('someString').as('stub1')
cy.stub(win, 'prompt').returns('someOtherString').as('stub2')
cy.stub(win, 'prompt').returns('anotherString').as('stub3')
}
})
})
问题是,当我查看“Spies/Stubs”时,我只看到stub1
被使用了 3 次,而不是 3 个不同的 stubs 被使用了一次。
我还收到错误TypeError: Attempted to wrap prompt which is already wrapped
任何帮助将不胜感激。
谢谢大家。
编辑:
做类似的事情
before(function() {
cy.visit(base_url, {
onBeforeLoad(win) {
demo_site_info.forEach(element => {
cy.stub(win, 'prompt').callsFake(() => {
return element
})
});
}
})
})
产生 TypeError: Attempted to wrap prompt which is already wrapped
使用callsFake(fn)
允许多个假值。
it('fakes return values multiple times', () => {
const mod = {
doit: () => 'done'
}
let call = 0
const fakes = ['done1', 'done2', 'done3']
cy.stub(mod, 'doit').callsFake(() => {
return fakes[call++]
})
console.log(mod.doit()) // done1
console.log(mod.doit()) // done2
console.log(mod.doit()) // done3
console.log(mod.doit()) // undefiend
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.