运行Gulp启动Protractor遇代理配置错误(错误码199)求解决方案
首先,我们来拆解你遇到的核心错误:
E/launcher - unknown error: cannot parse capability: proxy from unknown error: proxyType is 'manual' but no manual proxy capabilities were found
这个错误的根源在于ChromeDriver无法识别你当前的代理配置格式,或者更准确地说,针对Chrome浏览器,代理配置的正确方式并不是直接在capabilities下声明proxy对象,而是需要适配Chrome的启动规则。
解决方案1:使用Chrome启动参数配置代理(推荐)
Chrome浏览器优先读取命令行启动参数来配置代理,这种方式兼容性更强,也更不容易出现解析错误。修改你的Protractor配置文件,把代理规则移到chromeOptions.args中:
exports.config = { directConnect: true, capabilities: { 'browserName': 'chrome', 'chromeOptions': { prefs: { 'credentials_enable_service': false, 'profile': { 'password_manager_enabled': false } }, args: [ // 配置HTTPS代理,格式为「协议://地址:端口」 '--proxy-server=https://localhost:3000', // 可选:排除本地地址代理,避免无法访问你的baseUrl(https://localhost:44300) '--no-proxy=localhost,127.0.0.1' ] } }, // 其他原有配置保持不变... };
解决方案2:修正capabilities.proxy的格式(备选)
如果你坚持要使用capabilities下的proxy字段,需要确保手动代理的所有必要参数都完整配置——ChromeDriver要求proxyType: 'manual'时,必须明确提供httpProxy/httpsProxy,必要时还要补充noProxy规则:
exports.config = { directConnect: true, capabilities: { 'browserName': 'chrome', 'chromeOptions': { prefs: { 'credentials_enable_service': false, 'profile': { 'password_manager_enabled': false } } }, 'proxy': { 'proxyType': 'manual', 'httpProxy': 'localhost:3000', 'httpsProxy': 'localhost:3000', 'sslProxy': 'localhost:3000', 'noProxy': 'localhost,127.0.0.1' // 排除本地地址,确保能访问你的测试服务 } }, // 其他原有配置保持不变... };
额外注意:ChromeDriver版本不一致问题
从错误信息可以看到,你在protractor-install任务中安装的是ChromeDriver 2.29,但实际运行时调用的是2.35版本。这可能是因为系统中存在其他版本的ChromeDriver被优先加载了。你可以在Protractor配置中强制指定ChromeDriver的路径,确保使用你安装的版本:
exports.config = { // 添加这一行,路径根据你的实际安装位置调整 chromeDriver: './node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.29.exe', // 其他原有配置保持不变... };
完成上述修改后,重新运行你的Gulp任务,代理配置错误应该就能解决了。
内容的提问来源于stack exchange,提问作者Tamer Hussien

