繁体   English   中英

如何在初始页面加载之前在 Cypress 中连续填充多个提示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM