如何在Protractor中指定ChromeDriver版本下载解决版本不兼容问题
解决Protractor中ChromeDriver版本不匹配问题
问题场景
当前Chrome浏览器版本为109.0.5414.119,但Protractor自动下载的ChromeDriver版本为100.0.4896.60,导致版本不兼容报错:
session not created: This version of ChromeDriver only supports Chrome version 100 Current browser version is 109.0.5414.119 with binary path /usr/bin/google-chrome
解决方法
方法1:通过webdriver-manager命令行指定版本下载
直接执行以下命令,下载与Chrome109匹配的ChromeDriver版本(对应版本号为109.0.5414.74):
webdriver-manager update --versions.chrome 109.0.5414.74
执行完成后重新运行Protractor测试即可。
方法2:在Protractor配置文件中指定版本
修改你的Protractor配置文件,通过以下两种方式指定对应版本的ChromeDriver:
方式A:直接指定已下载的ChromeDriver路径
如果已通过命令行或手动下载好对应版本的ChromeDriver,在配置文件中添加路径参数:
exports.config = { allScriptsTimeout: 11000, specs: [ './src/**/*.e2e-spec.ts' ], capabilities: { 'browserName': 'chrome', chromeOptions: { args: ["--headless", "--disable-gpu", "--window-size=800x600", "--no-sandbox", "--disable-dev-shm-usage", "--disable-extensions"] } }, directConnect: true, chromeDriver: './node_modules/webdriver-manager/selenium/chromedriver_109.0.5414.74', // 添加此行指定路径 baseUrl: 'http://localhost:4200/', framework: 'jasmine', jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000, print: function() {} }, onPrepare() { require('ts-node').register({ project: require('path').join(__dirname, './tsconfig.e2e.json') }); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); } };
方式B:配置自动下载指定版本
在配置文件中添加webdriverVersions字段,指定ChromeDriver版本:
exports.config = { allScriptsTimeout: 11000, specs: [ './src/**/*.e2e-spec.ts' ], capabilities: { 'browserName': 'chrome', chromeOptions: { args: ["--headless", "--disable-gpu", "--window-size=800x600", "--no-sandbox", "--disable-dev-shm-usage", "--disable-extensions"] } }, directConnect: true, webdriverVersions: { chrome: '109.0.5414.74' }, // 添加此行指定版本 baseUrl: 'http://localhost:4200/', framework: 'jasmine', jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000, print: function() {} }, onPrepare() { require('ts-node').register({ project: require('path').join(__dirname, './tsconfig.e2e.json') }); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); } };
运行Protractor时,webdriver-manager会自动下载指定版本的ChromeDriver。
方法3:通过环境变量指定版本
在运行Protractor前,设置环境变量指定ChromeDriver版本:
export CHROMEDRIVER_VERSION=109.0.5414.74
之后执行Protractor测试命令,webdriver-manager会根据该环境变量下载对应版本的驱动。
内容的提问来源于stack exchange,提问作者Thi Hien Pham
相关产品推荐
相关产品推荐

