我目前正在与Chrome 74一起运行,并尝试使用赛普拉斯在我的应用中测试样式指南。当我加载赛普拉斯时,它将引发以下错误:
SecurityError: Blocked a frame with origin "http://localhost:3000" from accessing a cross-origin frame.
请告诉我是否有解决方案!
我尝试遵循以下步骤: 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')
})
答案 0 :(得分:1)
我也遇到过这个问题。我的应用程序正在使用服务工作者。在访问页面时禁用 Service Worker 解决了该问题。
cy.visit('index.html', {
onBeforeLoad (win) {
delete win.navigator.__proto__.serviceWorker
}
})
参考:https://glebbahmutov.com/blog/cypress-tips-and-tricks/#disable-serviceworker
答案 1 :(得分:0)
因此,至少对我来说,我的进一步问题是内部存在令牌,登录名等问题。但是!
我发布的代码说明插件文件夹中的索引如何正确绕过chrome问题。这就是您要解决的方法!
答案 2 :(得分:0)
昨天我遇到了同样的问题,问题中所引用的柏树issue #1951中的 @jsjoeio 答案实际上对我有帮助。
因此,基本上我唯一要做的就是修改import re
li = ["00", "01", "01x", "XX", "YY"]
#Append single quotes around the items we want to, and search matching items via regex
li = ["'{}'".format(item) if item in re.findall('0*1*x*', item) else item for item in li ]
#["'00'", "'01'", "'01x'", 'XX', 'YY']
#Create the string
print(":".join('{}'.format(x) for x in li))
#'00':'01':'01x':XX:YY
并添加以下值:
cypress.json
值得一提的是,我是在远程服务器上运行测试,而不是在计算机上运行本地测试。
答案 3 :(得分:0)
我遇到了完全相同的问题,我建议您按照DurkoMatko的建议进行操作。 Documentation chromeWebSecurity
但是我在iframe中指向本地主机的链接遇到了另一个问题。 如果您要在iframe中使用链接,建议您这样做:
cy.get('iframe').then((iframe) => {
const body = iframe.contents().find('body');
cy.wrap(body).find('a').click();
});
答案 4 :(得分:0)
您可以禁用安全功能来解决此问题。
cypress.json
文件。{ "chromeWebSecurity": false }
并保存。