运行Protractor脚本控制台出现未调用的GraphQL CORS跨域报错问题
问题原因说明
- 该报错和你编写的Protractor脚本没有任何关系,日志输出的是你正在测试的前端Web应用的浏览器控制台内容,Protractor默认会将捕获到的浏览器所有级别的日志打印到运行终端,所以你才会在脚本执行时看到这些内容。
- 具体是被测页面
https://peregrine-webapp-dev-raven.ocp-nonprod.xxx.xxx.xxx/mailboxes加载后,自身代码主动向GraphQL网关发起跨域请求时,网关没有返回符合要求的Access-Control-Allow-Origin响应头,被浏览器同源策略拦截导致的报错,属于被测应用的服务端配置问题。 - 你的脚本可以正常执行通过,说明这个请求失败的GraphQL接口不影响你测试用例覆盖的核心页面功能,大概率是页面非关键逻辑的请求,比如数据埋点上报、非核心模块的异步数据拉取等。
可选处理方案
如果不想在Protractor运行日志中看到这类无效报错,可以通过调整配置实现:
- 修改
protractor.conf.js配置文件,调整浏览器日志捕获级别,过滤无关日志:
exports.config = { // 其余原有配置保持不变 capabilities: { browserName: 'chrome', loggingPrefs: { browser: 'SEVERE' // 仅捕获严重级别的浏览器错误,设置为OFF可完全关闭浏览器日志输出 }, // 若需要临时绕开被测应用的CORS限制,可添加以下Chrome启动参数,仅测试环境使用 'goog:chromeOptions': { args: ['--disable-web-security', '--allow-running-insecure-content'] } } }
- 如果需要修复该跨域问题,可联系被测应用的前后端开发人员,确认测试环境GraphQL网关的CORS规则是否添加了前端页面的域名白名单。
内容的提问来源于stack exchange,提问作者Vin
相关产品推荐
相关产品推荐

