【问题标题】:Cypress how to close window print dialog赛普拉斯如何关闭窗口打印对话框
【发布时间】:2021-10-04 17:15:54
【问题描述】:

我希望使用 cypress 在打印窗口上执行操作。

当我手动点击打印按钮时,我会得到如图 1 所示的打印窗口。 但是,当我在 cypress 测试运行程序中运行相同的脚本时,我会得到如图 2 所示的打印窗口。

我知道可以使用存根对此类窗口执行操作。但我什至无法检查我进入测试运行器的打印窗口,即图 2。那么取消按钮的定位器应该是什么??

let printStub
          cy.window().then(win => {
                printStub = cy.stub(win, 'print')
                cy.get(HOW DO I GET THE LOCATOR).click().then(()=>{
                    expect(win.print).to.be.called
                })
            })

图片 1:

图 2:

【问题讨论】:

    标签: javascript windows printing cypress


    【解决方案1】:

    我不确定是什么导致了两个打印窗口的差异,但从技术上讲,您不需要测试实际打印的部分,只需调用 window.print

    如果您同意,请按照此示例Replace a method with a function,将一个虚拟函数作为第三个参数添加到存根。

    let printCalled = false
    cy.stub(cy.state('window'), 'print', () => {
      printCalled = true
    })
    
    cy.get('the-print-button-selector').click()  // app calls window.print
      .should(() => expect(printCalled).to.eq(true))
    

    或者只是断言通话发生

    const stub = cy.stub(cy.state('window'), 'print', () => {})  // replace print with do-nothing fn
    
    cy.get('the-print-button-selector').click()  // app calls window.print
      .should(() => expect(stub).to.be.called)
    

    【讨论】:

    • 我理解了这个方法,但是点击函数会打开“图像 2”中显示的窗口,并且存根返回 false,表示没有调用名为“print”的窗口。请帮忙!!
    • 它对我来说没问题,所以我能想到的唯一解释是该应用程序没有调用window.print,而是调用了其他东西。可以签入源代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2022-06-10
    • 1970-01-01
    • 2023-01-19
    • 2020-09-12
    相关资源
    最近更新 更多