javascript - Cypress.io - 使用 JavaScript window.prompt 保存价值
问题描述
我是赛普拉斯的新手,我有一个问题。
我的应用程序,我有一个“保存按钮”。单击按钮时,会触发 JS window.prompt()
。在提示中输入保存的名称(如“从 John 保存”)并单击“确定” - 在提示中。
我需要通过 Cypress.io 中的 E2E 测试来介绍这个用户故事。
问题是,当我单击“保存按钮”时,当显示提示时,cypress 在 Click() 事件中冻结。
it('Make a new save with JS prompt', () => {
cy.get('#save-changes-button')
.should('be.visible')
.click() //here the prompt is displayed, cypress stop and wait for click() event finish
})
我可以寻求帮助吗?我没有在 Cypress.io Docs 或其他地方找到合适的解决方案。
解决方案
好的,事实上,当前版本的 Cypress.io 不支持与window
事件的交互。如何欺骗它的方法就是cy.stub()
方法。
这是我的解决方案。场景:
- 单击 GUI 中的“保存按钮”。
window.prompt()
被打开。- 将保存名称(如“由 Thomas 保存”)写入提示。
- 在提示中单击“确定”并保存该值。
赛普拉斯中的代码:
it('Save the value inside Prompt', () => {
cy.window().then(win => {
cy.stub(win, 'prompt').returns('The value you write inside prompt')
cy.get('#save-changes-in-gui-button').click();
//... Saved value assert
})
})
赛普拉斯默认window.pompt()
通过存根更改事件并模拟单击“确定”。这个解决方案现在对我有用。希望,它可以帮助别人:)
推荐阅读
- c# - 如何使翻转视图在 UWP 中自适应?
- android - 通过解除绑定所有有界活动来停止服务
- mysql - 无法使用 MySQL Workbench 连接到 RDS
- laravel - 使用 Twilio SDK,连续调用数组直到有人接听
- c++ - 使用隐式构造函数和重载运算符分析 C++ 代码
- javascript - 如何发送到 Javascript 表单元素值。不断发送一个值
- npm - 如何修复电子中的“spawn UNKNOWN”错误?
- asp.net - 在 Docker 中托管 Razor 组件的建议
- android - 订阅 RxJava 的 Flowable 数据的 Kotlin 扩展功能
- amazon-redshift - 为什么需要在 Redshift 的 COPY 命令中引用 IAM 角色?