javascript - 如何使用 Cypress 为 Bootstrap4 页面测试以编程方式选择的外部 URL
问题描述
我开始掌握赛普拉斯。然而,到目前为止,我一直很喜欢它,但我一直坚持以下几点。
我想测试当单击按钮时,用户被定向到正确的外部站点。使用以下代码可以正常工作(目前):
$("#my-button").click(function() {
var external_url = 'https://www.somesite.com/';
if($("#my-checkbox").prop("checked")) {
external_url += 'foo';
} else {
external_url += 'bar';
}
window.location.href = external_url;
return false;
});
在赛普拉斯规范中从小处着手:
it('Should direct to external site depending on checkbox state', () => {
cy.get('#my-button').click()
})
接收赛普拉斯错误:赛普拉斯检测到页面加载时发生了跨源错误:
阻止来源为“http://localhost:8888”的框架访问跨域框架。
这很公平,我明白为什么会出错。我不想禁用 Chrome 网络安全来绕过它。
有人可以告诉我应该如何测试这个用例吗?
我想我应该用cy.stub()
和/或来捕捉位置变化,cy.on()
但到目前为止我还没有成功:
it('Should direct to external site depending on checkbox state', () => {
cy.stub(Cypress.$("#my-button"), "click", () => {
console.log('stub')
})
cy.on("window.location.href", win => {
console.log('on')
})
cy.get('#my-button').click()
})
由于脚本仍尝试将位置设置为外部站点,因此单击按钮仍会导致引发错误。
解决方案
推荐阅读
- html - 为什么在这个特定示例中,子元素在 max-width: 100% 时会延伸到其父元素之外?
- sql - MS SQL FIFO 部分传输
- calendar - 将我系统中的事件同步到最广泛使用的日历中
- java - 为什么 Java 的 Stream.reduce 方法采用标识元素而不是默认结果?
- python - Jinja2 - 列表中对象中列表的总长度
- android - 重构时无法提取对封闭类方法的引用
- excel - 在列中查找日期并粘贴到多个相邻单元格
- python - 用 Python 编写个性化的错误消息
- javascript - 在页面加载时,如果选中复选框,则显示字段
- javascript - 0 数据的 D3 圆环图