Chromedriver版本错误。Protractor需要2.31版本。

3
我认为Protractor正在寻找最新版本的chromedriver,即2.31。该版本于2017年7月22日发布,即两天前。我无法使用此版本,因为它与我的CentOS版本(GLIBC_2.18)不兼容。
然而,Chrome网站显示最新版本是chromedriver 2.30。那么为什么Protractor会尝试使用2.31呢?并且这个版本也没有被安装。有没有一种强制使用特定版本的方法?
谢谢。
节点版本:v8.1.3 Protractor版本:版本5.1.2 Chrome版本:Google Chrome 59.0.3071.115 Angular版本:1.5.9 浏览器:Chrome 操作系统和版本: 发行版ID:CentOS 描述:CentOS Linux发布7.3.1611(核心) 发布:7.3.1611 代号:Core Protractor配置文件:
module.exports = {
    // This will automatically use jasmine latest
    framework: 'jasmine',
    seleniumAddress: 'http://localhost:4444/wd/hub',
    getPageTimeout: 20000,
    allScriptsTimeout: 22000,
    jasmineNodeOpts: {
        showColors: true,
        realtimeFailure: true,
        includeStackTrace: true,
        isVerbose: true,
    },
    capabilities: {
        browserName: 'chrome',
        chromeOptions: {
            args: ['--no-sandbox'],
        },
        loggingPrefs: {driver: 'ALL', server: 'ALL', browser: 'ALL'},
    },
    ...
};

Protractor状态:

[root@protractor]# webdriver-manager status
[14:21:22] I/status - selenium standalone版本可用:3.4.0 [last]
[14:21:22] I/status - chromedriver版本可用:2.30 [last]
[14:21:22] I/status - geckodriver版本可用:v0.18.0 [last]
[14:21:22] I/status - android-sdk不存在
[14:21:22] I/status - appium不存在

错误:

[14:19:22] I/launcher - Running 1 instances of WebDriver
[14:19:22] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
[14:19:22] E/launcher - The driver executable does not exist: /root/.npm-global/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.31
[14:19:22] E/launcher - WebDriverError: The driver executable does not exist: /root/.npm-global/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.31
    at Object.checkLegacyResponse (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:505:15)
    at parseHttpResponse (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
    at doSend.then.response (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:440:13)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:169:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:777:24)
    at Function.createSession (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/chrome.js:709:29)
    at createDriver (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/index.js:167:33)
    at Builder.build (/root/.npm-global/lib/node_modules/protractor/node_modules/selenium-webdriver/index.js:623:16)
    at Hosted.getNewDriver (/root/.npm-global/lib/node_modules/protractor/built/driverProviders/driverProvider.js:53:33)
    at Runner.createBrowser (/root/.npm-global/lib/node_modules/protractor/built/runner.js:195:43)
    at q.then.then (/root/.npm-global/lib/node_modules/protractor/built/runner.js:339:29)
    at _fulfilled (/root/.npm-global/lib/node_modules/protractor/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/root/.npm-global/lib/node_modules/protractor/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/root/.npm-global/lib/node_modules/protractor/node_modules/q/q.js:796:13)
[14:19:22] E/launcher - Process exited with error code 199

你好,
4个回答

2

更新:ng e2e和protractor现在可以正常工作了!

今天早上我也遇到了同样的问题。我的解决方案是:

rm -rf ./node_modules/protractor/node_modules/webdriver-manager/selenium/* #Manually clean
./node_modules/protractor/bin/webdriver-manager clean #webdriver clean
mkdir ./node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver #Fix a silly issue with webdriver trying to move this folder when it doesn't exist
./node_modules/protractor/bin/webdriver-manager update --versions.chrome=2.30 #Get the specific version
ng e2e --webdriver-update false #run npm without updating chromedriver

因此,我的package.json文件如下所示:
"pree2e": "rm -rf ./node_modules/protractor/node_modules/webdriver-manager/selenium/* && ./node_modules/protractor/bin/webdriver-manager clean && mkdir ./node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver && node ./node_modules/protractor/bin/webdriver-manager update --versions.chrome=2.30",
"e2e": "ng e2e -e mock --webdriver-update false --progres false --watch false",

嗨,泰勒,我已经尝试过了,但是我仍然遇到相同的错误。我使用 npm install 安装了 protractor,然后使用 webdriver-manage cleanwebdriver-manager update --versions.chrome=2.30 命令。但是我仍然收到一个指向 chromedriver_2.31The driver executable does not exist 错误信息。这很奇怪。 - user2382684
我也遇到了同样的问题,直到我执行了webdriver-manager clean命令。我会继续调查。 - Taylor

2

好的,我按照以下步骤操作,它能够正常工作。

webdriver-manager update
webdriver-manager clean
webdriver-manager update --versions.chrome=2.30

然后我使用 force versions.chrome 启动 selenium 服务器。如果我不指定这个选项,webdriver-manager 仍然会使用 chromedriver_2.31。

webdriver-manager start --versions.chrome=2.30

ng e2e怎么样?ng e2e会如何尝试重新启动Chrome驱动程序?您需要执行webdriver-manager stop吗? - Taylor
1
我不使用 ng e2e 来启动测试。实际上,我不必执行 webdriver-manager stop,因为它是从 Docker 容器中启动的。我只需更改 Dockerfile 中的先前命令,并启动一个新容器。但你的答案也可以做到同样的事情! - user2382684

0
今天早上我也遇到了同样的问题,我使用 webdriver-manager update 命令更新了 Selenium 驱动程序,然后输入 webdriver-manager start 命令启动驱动程序,问题得到了解决。你可以试一下,看看结果如何。

webdriver-manager update 抓取了错误的 chromedriver(2.31)。为了解决这个问题,我们需要 chromedriver_2.30。 - Taylor

0

当 Chrome 版本和 WebDriver 版本不匹配时,可以通过选择确切的 webdriver-manager 版本来解决此问题。例如:

webdriver-manager clean && webdriver-manager update --versions.chrome=2.42

现在错误信息得到了很大的改进。

[11:42:19] I/direct - Using ChromeDriver directly...
[11:42:19] E/launcher - session not created: Chrome version must be between 70 and 73
  (Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.4.0-141-generic x86_64)
[11:42:19] E/launcher - SessionNotCreatedError: session not created: Chrome version must be between 70 and 73
  (Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.4.0-141-generic x86_64)
    at Object.checkLegacyResponse (/home/xyzzy/proj/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:546:15)
    at parseHttpResponse (/home/xyzzy/proj/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13)
    at doSend.then.response (/home/xyzzy/proj/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:441:30)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/home/xyzzy/proj/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:769:24)
    at Function.createSession (/home/xyzzy/proj/node_modules/protractor/node_modules/selenium-webdriver/chrome.js:761:15)
    at Direct.getNewDriver (/home/xyzzy/proj/node_modules/protractor/built/driverProviders/direct.js:77:33)
    at Runner.createBrowser (/home/xyzzy/proj/node_modules/protractor/built/runner.js:195:43)
    at q.then.then (/home/xyzzy/proj/node_modules/protractor/built/runner.js:339:29)
    at _fulfilled (/home/xyzzy/proj/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/home/xyzzy/proj/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/home/xyzzy/proj/node_modules/q/q.js:796:13)
    at /home/xyzzy/proj/node_modules/q/q.js:556:49
    at runSingle (/home/xyzzy/proj/node_modules/q/q.js:137:13)
    at flush (/home/xyzzy/proj/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickCallback (internal/process/next_tick.js:181:9)
    at Function.Module.runMain (module.js:696:11)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
[11:42:19] E/launcher - Process exited with error code 199

请查看此博客-protractor-error-resolution - Khyati Sehgal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接