【问题标题】:How to downgrade Chrome WebDriver in angular Protractor如何在角度量角器中降级 Chrome WebDriver
【发布时间】:2020-07-27 14:05:40
【问题描述】:

我正在尝试使用 chrome 作为浏览器在 Angular 7 上运行 ng e2e。我运行了命令npm install -g protractorwebdriver-manager update。它最终下载并运行 chromedriver=76.0.3809.12 但我无法在我的机器上更新 chrome 本身。我在 chrome 74 上。

我试过了 webdriver-manger update, webdriver-manager update --versions.chrome 2.46,和 webdriver-manager update --versions.chrome 74.0.3729.6 但即使我从node_modules\protractor\node_modules\webdriver-manager\selenium\ 中删除 chrome 76 文件,但每次我运行ng e2e 时它们总是重新安装

量角器.conf.js

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  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 } }));
  }
};

tsconfig.e2e.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "module": "commonjs",
    "target": "es5",
    "types": [
      "jasmine",
      "jasminewd2",
      "node"
    ]
  }
}

当我尝试运行 ng e2e 时会抛出此错误:

E/launcher - session not created: This version of ChromeDriver only supports Chrome version 76
  (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.16299 x86_64)
E/launcher - Process exited with error code 199
An unexpected error occurred: undefined

更新: 当我运行 webdriver-manager cleannode node_modules/protractor/bin/webdriver-manager update --standalone --versions.standalone=3.8.0 时,它仍然下载了 chrome 76 这里是第二个命令的输出和清理后的 ng e2e

node node_modules/protractor/bin/webdriver-manager update --standalone --

versions.standalone=3.8.0
[06:59:13] I/config_source - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium\standalone-response.xml https://selenium-release.storage.googleapis.com/
[06:59:13] I/config_source - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium\chrome-response.xml https://chromedriver.storage.googleapis.com/
[06:59:13] I/config_source - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium\gecko-response.json https://api.github.com/repos/mozilla/geckodriver/releases
[06:59:14] I/downloader - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium/selenium-server-standalone-3.8.0.jar https://selenium-release.storage.googleapis.com/3.8/selenium-server-standalone-3.8.0.jar
[06:59:14] I/update - chromedriver: file exists M:.\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_76.0.3809.12.zip
[06:59:14] I/update - chromedriver: unzipping chromedriver_76.0.3809.12.zip
[06:59:14] I/update - chromedriver: chromedriver_76.0.3809.12.exe up to date
[06:59:14] I/update - geckodriver: file exists M:.\node_modules\protractor\node_modules\webdriver-manager\selenium\geckodriver-v0.24.0.zip
[06:59:14] I/update - geckodriver: unzipping geckodriver-v0.24.0.zip
[06:59:15] I/update - geckodriver: geckodriver-v0.24.0.exe up to date

ng e2e

i 「wdm」: Compiled successfully.
[07:00:51] I/update - chromedriver: file exists M:.\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_76.0.3809.12.zip
[07:00:51] I/update - chromedriver: unzipping chromedriver_76.0.3809.12.zip
[07:00:52] I/update - chromedriver: chromedriver_76.0.3809.12.exe up to date
[07:00:54] I/launcher - Running 1 instances of WebDriver
[07:00:54] I/direct - Using ChromeDriver directly...
[9224:10012:0612/070058.684:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: EnableCommonNameFallbackForLocalAnchors
[9224:10012:0612/070058.869:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: EnableCommonNameFallbackForLocalAnchors

DevTools listening on ws://127.0.0.1:5007/devtools/browser/376b234b-f47d-4841-afdc-77719714db23
[07:01:05] E/launcher - session not created: This version of ChromeDriver only supports Chrome version 76
  (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.16299 x86_64)
[07:01:05] E/launcher - SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 76
  (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.16299 x86_64)

package.json

  "private": true,
  "dependencies": {
    "@angular/animations": "^7.2.14",
    "@angular/cdk": "^7.3.7",
    "@angular/common": "^7.2.14",
    "@angular/compiler": "^7.2.14",
    "@angular/core": "^7.2.14",
    "@angular/forms": "^7.2.14",
    "@angular/http": "^7.2.14",
    "@angular/material": "^7.3.7",
    "@angular/platform-browser": "^7.2.14",
    "@angular/platform-browser-dynamic": "^7.2.14",
    "@angular/platform-server": "^7.2.14",
    "@angular/router": "^7.2.14",
    "core-js": "^2.5.7",
    "rxjs": "^6.5.2",
    "rxjs-compat": "^6.5.1",
    "zone.js": "^0.8.29"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.13.8",
    "@angular/cli": "^7.3.8",
    "@angular/compiler-cli": "^7.2.14",
    "@angular/language-service": "^7.2.14",
    "@types/jasmine": "^3.3.12",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^11.13.8",
    "codelyzer": "^5.0.1",
    "jasmine-core": "^3.4.0",
    "jasmine-spec-reporter": "^4.2.1",
    "karma": "^4.1.0",
    "karma-chrome-launcher": "^2.2.0",
    "karma-cli": "^2.0.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "^2.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "protractor": "^5.4.2",
    "rxjs-tslint": "^0.1.7",
    "ts-node": "~5.0.1",
    "tslint": "^5.16.0",
    "typescript": "<3.3.0",
    "webpack": "^4.30.0"
  }

【问题讨论】:

  • 使用ng e2e --webdriverUpdate=false 禁用ng e2e 自动更新webdriver。这样,您可以在执行ng e2e ......之前使用webdriver-manager update --version.chrome=xxxx获取所需的版本@

标签: protractor angular7


【解决方案1】:

遇到这种情况并想使用 chrome 77 的人,步骤如下:

  • npm i protractor@^5.4.2
  • node node_modules/.bin/webdriver-manager update --versions.chrome=77.0.3865.75
  • 确保指定的版本与protractor.conf.jschromeDriver 键下的匹配。

这是我的量角器配置:

exports.config = {
  allScriptsTimeout: 11000,
  specs: ['./src/**/*.e2e-spec.ts'],
  capabilities: {
    browserName: 'chrome',
  },
  chromeDriver: '../node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_77.0.3865.75',
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {},
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.json'),
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  },
};

我还在package.json中添加了以下脚本:

 "postinstall": "node_modules/.bin/webdriver-manager update --versions.chrome=77.0.3865.75"

确保每次安装后都有正确的版本。


【讨论】:

  • 非常感谢!这最终对我有用。 =)
  • 我不需要量角器配置中的 chromeDriver-part,但是 postinstall-part 非常有用:)
【解决方案2】:

如果您使用 Angular 并且需要运行端到端测试,那么您可能需要一种不同的方法。

ChromeDriver的设置版本

  • cd &lt;project&gt;/node_modules/.bin/

  • node webdriver-manager update --versions.chrome 80.0.3987.106 --gecko false --standalone false

--gecko--standalone 设置为false 将阻止它们下载,只会下载chromedriver。

运行 e2e 测试

  • npx ng e2e --webdriverUpdate=false //in project folder

--webdriverUpdate=false不要尝试更新网络驱动程序

参考文献

webdriver manager docs

ngn e2e docs

【讨论】:

    【解决方案3】:

    试试下面的选项

    webdriver-manager clean // This will clean the existing webdrivers
    
    node node_modules/protractor/bin/webdriver-manager update --standalone --versions.standalone=3.8.0
    

    【讨论】:

    • @Mhyland 分享您的package.json。尝试删除您的 node_modules 文件夹并重新创建 npm install
    • 我删除了我的node_modules 并清理了缓存,然后运行了npm install。它确实将 chrome 安装包降到了 Chrome 75,但我在 chrome 74 需要它
    • 测试是否运行成功?
    • 将量角器锁定到特定版本。我在 5.4.2 上,当我运行 webdriver-manager update 时,它正在下载 chromedriver_2.46.exe。几天前,我尝试更新到 protractor@latest,但在 Chrome 75 上运行测试时遇到了重大问题。
    【解决方案4】:

    我也面临同样的问题。我使用的是 chrome 驱动程序版本 81.0.4044.122 但每当我运行 ng e2e 命令时,它会将 chrome 驱动程序更新为 83.0.4103.39 并且我有搜索了很多东西也实现了不同的东西来解决这个问题,最后按照步骤对我有用。

    步骤:

    1. 在您的 package.json 文件中添加“postinstall”:“node_modules/.bin/webdriver-manager update --versions.chrome=81.0.4044.122”。

    这是 package.json 的示例: `

    {   
        "name": "your-project-name",   
        "version": "1.30.0",   
        "scripts": {
            "ng": "ng",
            "start": "ng serve",
            "postinstall": "node_modules/.bin/webdriver-manager update --versions.chrome=81.0.4044.122 && ng build",
            "build-development": "ng build --configuration=development",
            "build-staging": "ng build --configuration=staging",
            "build-production": "ng build --configuration=production",
            "test": "ng test",
            "lint": "ng lint",
       } 
    }
    

    注意:在安装后,您可以使用“&&”指定多个命令

    例如 postinstall": "node_modules/.bin/webdriver-manager update --versions.chrome=81.0.4044.122 &amp;&amp; ng build"

    我使用的是 chrome 版本 81.0.4044.122,但您可以指定任何版本。

    1. 现在运行npm install,它将安装指定的chromedriver版本。
    2. 现在,如果您希望 ng e2e 不会更新您的 chromedriver 版本,请使用参数 --webdriver-update=false 运行它

    例如ng e2e --webdriver-update=false

    您还可以使用 ng e2e 指定特定环境和特定测试套件:

    例如ng e2e --webdriver-update=false --configuration=staging --suite=login

    【讨论】:

      【解决方案5】:

      转到“node_modules\protractor\node_modules\webdriver-manager\selenium”并删除所有 chrome 驱动程序文件和 selenium 文件。

      在cmd上运行“webdrvier-manager update”命令。

      【讨论】:

        猜你喜欢
        • 2023-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        • 2016-10-10
        • 2017-05-24
        • 1970-01-01
        相关资源
        最近更新 更多