我目前正在运行Chrome 74,并试图使用Cypress测试我的应用程序中的一个风格指南。当我加载Cypress时,它抛出了以下错误:
安全性错误:已阻止源为“http://localhost:3000”的帧访问跨源帧。
请让我知道是否有解决办法!
我曾试图跟随这一点:https://github.com/cypress-io/cypress/issues/1951
英译汉但是什么都没有改变/对我来说什么都没有起作用
我的代码如下所示:cypress/plugins/index.js
module.exports = (on, config) => {
on('before:browser:launch', (browser = {}, args) => {
// browser will look something like this
// {
// name: 'chrome',
// displayName: 'Chrome',
// version: '63.0.3239.108',
// path: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
// majorVersion: '63'
// }
if (browser.name === 'chrome') {
args.push('--disable-site-isolation-trials');
return args
}
if (browser.name === 'electron') {
args['fullscreen'] = true
// whatever you return here becomes the new args
return args
}
})
}
在我的cypress/support/index.js
中
这将在我运行每个测试之前加载站点,以保存在每个测试中编写cy.visit。
beforeEach(() =>{
cy.visit('http://localhost:3000/style-guide')
})
7条答案
按热度按时间nbewdwxp1#
我昨天遇到了同样的问题,你在问题中提到的cypress issue #1951中的 @jsjoeio 的答案实际上帮助了我。
所以我做的唯一一件事就是修改我的
cypress.json
并添加以下值:2q5ifsrm2#
您可以禁用安全性来解决此问题。
1.转到
cypress.json
文件。1.写入
{ "chromeWebSecurity": false }
并保存。1.再次运行测试。
ktca8awb3#
我遇到了完全相同的问题,我建议你按照DurkoMatko的建议去做。文档chromeWebSecurity
但是我在iframe中遇到了另一个指向localhost的链接的问题。如果你想在iframe中使用一个链接,我建议这样做:
zengzsys4#
所以,至少对我来说,我的进一步问题是一个内部的令牌,登录等,但是!
我在插件文件夹中发布的代码是如何正确地绕过chrome问题的。2这就是你想要修复它的方法!
yshpjwxd5#
我也面临过这个问题。我的应用程序使用的是服务工作者。在访问页面时禁用服务工作者解决了这个问题。
参考:https://glebbahmutov.com/blog/cypress-tips-and-tricks/#disable-serviceworker
c9x0cxw06#
1.后藤cypress.json文件。
1.将chrome Web安全设置为false
xtfmy6hx7#
为了绕过这些限制,Cypress实现了一些策略,包括JavaScript代码、浏览器的内部API和网络代理,以遵循同源策略的规则。
1.访问项目
1.在文件“cypress.json”中插入
参考:Cypress文档