如何在Cypress.io中模拟窗口失去焦点

8

我正在使用Cypress.io编写网站的E2E测试。我希望测试的其中一个功能是检测网站正确地检测到焦点丢失并显示(angular material)对话框。我遇到的问题是,我无法找到一种可靠的方法来触发窗口焦点丢失事件以在测试环境中进行测试。我已查看了Cypress.io中各种焦点和模糊事件的文档,但没有找到解决方法。有人知道是否可以从Cypress.io中以编程方式触发窗口焦点丢失(模糊),如果可以,请提供文档或示例。

2个回答

7
这取决于您的页面如何监听此事件,因此有几种可能的解决方案:
尝试:
cy.window().trigger('blur')

如果那个方法不起作用,可以尝试以下方法:

cy.document().then((doc) => {
  cy.stub(doc, "hidden").value(true)
})
cy.document().trigger('visibilitychange')

在某些情况下

1
事实证明,我只需要 cy.window().trigger("blur");,但它确实帮助我找到了正确的方向。谢谢。 - davidk

0

我有同样的问题,但是批准的答案对我不起作用。但下面的代码可以正常工作

cy.document().then((doc) => {
  cy.stub(doc, "visibilityState").value("hidden") //or "visible" if you want focus
})
cy.document().trigger('visibilitychange')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接