Protractor: 在Chrome 74+上使用[email protected]的解决方法

创建于 2019-04-25  ·  55评论  ·  资料来源: angular/protractor

@cnishina是否存在解决方法? 还是可能会发布带有最新Webdriver修复/更新的次要量角器5?

原因:将大型量角器项目迁移到版本6.0.0是一项巨大的工作。 chrome自动更新时,您就是SOL。

问题说明
量角器错误

fixed bug

最有用的评论

@cnishina

我们有与@shihuawang@raymonsaadalla类似的问题。 我们公司拥有在Protractor上运行的整个自动化脚本代码库,现在Chrome自动更新到了74版,因此测试用例无法执行。

我们有以下版本的应用程序:

  • 铬是74.0.3729.131,
  • 量角器是5.4.2,
  • webdriver-manager是12.1.4,
  • 节点是v8.12.0,
  • chromedriver是74.0.3729.6。

我们还重新安装了webdriver-manager和Protractor(与上述版本相同)。
运行量角器脚本获得相同的结果,Chrome浏览器出现,但随后永久挂起。

不幸的是,将Chrome降级至版本73并非我们的选择。 有解决此问题的解决方法吗?

所有55条评论

目前有一个与webdriver-manager 13绑定的修复程序。

好消息是,当这些更改发生时,我正在修复webdriver-manager。 您可以将Protractor 5.4.2与webdriver-manager 13一起使用。https://github.com/angular/webdriver-manager/pull/372但是,如果有多个连接,我不确定直接连接和本地如何工作节点模块目录中的webdriver-manager版本。

我们可以用量角器5释放webdriver-manager 13吗? 有可能,但是由于我在版本13中删除了对webdriver-manager的移动支持,因此这可能被认为是一项重大更改。

设置Protractor 5 + webdriver-manager 13版本的讨论标签。

我真的很惊讶,这没有激起更多的谈话。 我可能错了,但我认为5.4.2上的其他公司会因此受到打击,并且也迫切需要找到一种解决方法,而不是升级到6.0.0。

有人能猜出创建另一个5.xx版本所需的工作吗?

@cnishina在您回复之前,我曾尝试破解以获取最新的webdriver-manager与5.4.2配合使用,但运气不佳。 我只是:

  1. 安装了npm 13
  2. webdriver-manager update下载chromedriver 74
  3. 复制了硒文件夹

    • node_modules\webdriver-manager\selenium

    • node_modules\protractor\node_modules\webdriver-manager\selenium

是的。 在查看驱动程序提供程序而不是5.4.2时,我正在查看master分支。 因此,要使13个工作起来,还有更多工作要做。 让我去更新我的公关。 我可能必须为webdriver-manager创建一个beta版本才能对此进行试验。

好的, https://github.com/angular/webdriver-manager/pull/372是我针对量角器5.4.2(带有测试!)的13的解决方法。

好吧,我现在很茫然。 今天突然之间,我不再收到昨天的错误,并且在chrome 74和chromedriver 2.46上的测试运行良好

因此,在73上运行测试之前,我故意将其更新为74,然后收到上述错误。 因此,我只是假设这是相关的,除非将chrome升级到74,否则任何人都不能再运行测试,除非他们在本地启动了一个硒网格中心/节点。

根据文档,Chromedriver 2.46不支持chrome 74,但是至少它允许我现在运行测试? 你知道还有什么可以改变的吗? 还是那个错误甚至相关?

铬74.0.3729.108
量角器5.4.2
webdriver-manager 12.1.2
chromedriver_2.46

没关系,我刚刚看到您的SO帖子,并且查看我们以前的构建日志,看起来好像正在下载webdriver:manager update

selenium-server-standalone-4.0.0-alpha-1.zip.jar
代替
selenium-server-standalone-3.141.59.jar

所以现在这是一个实际的问题。 Chrome 74出现了,而Protractor 5.4.2使用webdriver-manager 12.xx只能下载2.xx chromedrivers。 这是一个问题,我们很快将对此进行热修复。

因此,这是适用于Protractor 5.4.2的webdriver-manager 12的修复程序: https :

因此,现在已通过[email protected]发行版解决了此问题

如何获得?

  • 重新安装节点模块目录(删除node_modules文件夹并执行npm install
  • 强制安装npm install -f

有关StackOverflow帖子的更多信息,请访问: https ://stackoverflow.com/questions/55910242/when-using-protractor-5-4-2-webdriver-manager-downloads-2-46-which-is-not-compa/55911176

我遇到的问题是Protractor仍会安装驱动程序2.46,并且当我尝试自行安装webdriver-manager并将其添加到我的依赖项时,Protractor无法找到已安装的chromedriver

"C:\Program` Files\nodejs\node.exe" C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\bin\protractor "C:\Users\Kurt\WebStorm 2019.1.1\plugins\JavaScriptLanguage\helpers\protractor-intellij\lib\protractor-intellij-config.js" --intellijOriginalConfigFile=C:\Users\Kurt\WebstormProjects\hcp\e2e\protractor.conf.js --disableChecks --specs C:\Users\Kurt\WebstormProjects\hcp\e2e\src\settings\homepage.e2e-spec.ts "--grep=^core "
[02:18:10] I/launcher - Running 1 instances of WebDriver
[02:18:10] I/direct - Using ChromeDriver directly...
[02:18:10] E/direct - Error code: 135
[02:18:10] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[02:18:10] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
    at Direct.getNewDriver (C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\built\driverProviders\direct.js:63:31)
    at Runner.createBrowser (C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\built\runner.js:195:43)
    at C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\built\runner.js:339:29
    at _fulfilled (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:834:54)
    at C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:863:30
    at Promise.promise.promiseDispatch (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:796:13)
    at C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:556:49
    at runSingle (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:137:13)
    at flush (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:125:13)
    at processTicksAndRejections (internal/process/task_queues.js:81:9)
[02:18:10] E/launcher - Process exited with error code 135

Process finished with exit code 135

这是配置文件

const {SpecReporter} = require('jasmine-spec-reporter');

exports.config = {
  SELENIUM_PROMISE_MANAGER: false,
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    random: true,
    showColors: true,
    defaultTimeoutInterval: 30000
  },
  random: false,
  onPrepare: async () => {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
    await browser.driver.manage().window().maximize();
  }
};

当我运行webdriver-manager更新时

webdriver-manager: using local installed version 12.1.3
[02:33:40] I/update - chromedriver: file exists C:\Users\Kurt\WebstormProjects\hcp\node_modules\webdriver-manager\selenium\chromedriver_75.0.3770.8.zip
[02:33:40] I/update - chromedriver: unzipping chromedriver_75.0.3770.8.zip
[02:33:40] I/update - chromedriver: chromedriver_75.0.3770.8.exe up to date
[02:33:41] I/update - selenium standalone: file exists C:\Users\Kurt\WebstormProjects\hcp\node_modules\webdriver-manager\selenium\selenium-server-standalone-3.141.59.jar
[02:33:41] I/update - selenium standalone: selenium-server-standalone-3.141.59.jar up to date
[02:33:41] I/update - geckodriver: file exists C:\Users\Kurt\WebstormProjects\hcp\node_modules\webdriver-manager\selenium\geckodriver-v0.24.0.zip
[02:33:41] I/update - geckodriver: unzipping geckodriver-v0.24.0.zip
[02:33:41] I/update - geckodriver: geckodriver-v0.24.0.exe up to date


当我从package.json中删除webdriver-manager时,删除node_modules并运行npm inpm i-fwebdriver-manager update

C:\Users\Kurt\WebstormProjects\hcp>webdriver-manager update
[02:38:17] I/file_manager - creating folder C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium
[02:38:17] I/config_source - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium\standalone-response.xml https://selenium-release.storage.googleapis.com/
[02:38:17] I/config_source - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium\chrome-response.xml https://chromedriver.storage.googleapis.com/
[02:38:17] I/config_source - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium\gecko-response.json https://api.github.com/repos/mozilla/geckodriver/releases
[02:38:17] I/downloader - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium/chromedriver_2.46.zip https://chromedriver.storage.googleapis.com/2.46/chromedriver_win32.zip
[02:38:18] I/downloader - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium/selenium-server-standalone-3.141.59.jar https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
[02:38:18] I/update - chromedriver: unzipping chromedriver_2.46.zip
[02:38:19] I/downloader - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium/geckodriver-v0.24.0.zip https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win64.zip
[02:38:20] I/update - geckodriver: unzipping geckodriver-v0.24.0.zip

C:\Users\Kurt\WebstormProjects\hcp>

@ Kurt29很奇怪,您可以使用node_modules / protractor / node_modules / webdriver-manager / package.json检查版本。 您是否正在使用全局安装?

建议的修复程序,用于下载特定版本,启动特定版本,状态以及阻止下载75。

https://github.com/angular/webdriver-manager/issues/376

我刚刚发布了带有修复的12.1.4: https : --versions.chrome 74.0.3729.6 。 这在12.1.3中已被打破。

@ luker2您想和我一起验证一下并尝试12.1.4吗?

@cnishina在我的

我使用--versions.chrome标志指定了74和75,并下载了相应的驱动程序。 没有标志的情况下它下载了74.0.3729.6

谢谢!

这是与此相关的StackOverflow帖子: https :

我在本地node_modules中重新安装了量角器,但webdriver-manager版本保持不变:“ webdriver-manager”:“ ^ 12.0.6”。 还尝试将本地安装在新文件夹中,结果相同。 可能是npm问题...

注意,在webdriver-manager package.json中,webdriver-manager是正确的“版本”:“ 12.1.4”,但在量角器package.json依赖项中,webdriver-manager版本是“ webdriver-manager”:“ ^ 12.0.6”。 这让我感到困惑。 但是一切都很好。

是的,^ 12.0.6意味着获取最新的次要版本。 因此,在这种情况下,它将下载12.1.4。

即使看起来安装成功,但是我所有的量角器测试用例都失败了。 它在星期五(3天前)有效,但现在又失败了。
当google-chrome-stable升级到74.0.3729.131-1时,故障开始。 最初,我可以通过安装以前的google-chrome-stable版本来进行测试。 Friday与Protractor 5-4-2和Chrome 74一起使用。但是现在它不再起作用了,并且找不到任何解决方法。 请指教。

我在Ubuntu 16.04码头上。

@cnishina确保我完全忘记了“ ^” npm版本,谢谢您的解释和修复

由于#5230已关闭,因此我将注释移至此处:

因为新版本的[email protected]不起作用(仅在5月3日,星期五才起作用),所以我不得不尝试使用旧版本,但它也不起作用。

Chrome 73在5月3日(星期五)之前可以使用,但此后不再可用。 我们现在无法运行测试。 我们需要一个解决方案。 请指教。 提前致谢。

澄清:我之前安装的旧版本工作正常。 但是当我创建docker now时,使用当前版本或旧版本都不起作用。 因此,某些新版本中的内容似乎已损坏。

我已经解决了这个问题。 当Angular代码将按钮定义为以下情况时,会遇到失败:
<button type="submit" class="btn btn-info pull-right" ui-sref="xxx.xxx.xxx">Create New Element</button>
量角器测试脚本为:
browser.driver.findElements(by.xpath('//*[contains(text(), "' + arguments[0] + '")]'));
其中arguments [0] =“创建新元素”

目前,我有WebDriver Manager版本12.1.4和chromedriver 74.0.3729.6,因此一切正常,但是在chrome浏览器74.0.3729.131上运行时,我的测试失败了; 但是,如果我在以前的73版本上运行它,则可以正常工作。 有什么建议吗?
谢谢

它似乎与应用程序Web UI代码和测试脚本无关,并且我的解决方法再次失败。 看起来新版本无法处理良性异常或非阻塞错误返回。 因此,除非完全更改应用程序代码以使它不返回错误或引发异常,否则我真的无法解决。

仅当73发行时安装的系统有效。 但是,如果您将73安装到新服务器上,则也不起作用。

有什么方法可以使我使用任何版本(新安装)的产品吗?

星期五发生了什么事,星期五正在工作。

@cnishina

我们有与@shihuawang@raymonsaadalla类似的问题。 我们公司拥有在Protractor上运行的整个自动化脚本代码库,现在Chrome自动更新到了74版,因此测试用例无法执行。

我们有以下版本的应用程序:

  • 铬是74.0.3729.131,
  • 量角器是5.4.2,
  • webdriver-manager是12.1.4,
  • 节点是v8.12.0,
  • chromedriver是74.0.3729.6。

我们还重新安装了webdriver-manager和Protractor(与上述版本相同)。
运行量角器脚本获得相同的结果,Chrome浏览器出现,但随后永久挂起。

不幸的是,将Chrome降级至版本73并非我们的选择。 有解决此问题的解决方法吗?

我和@Priyankajoshipj在同一家公司。 (我所有的应用程序都与上面列出的版本相同。)当我们尝试运行Protractor脚本时,会发生附件的Google Chrome浏览器图像。 浏览器出现,然后永久挂起。 测试超时,浏览器仍然保持这种状态,直到我们手动将其关闭。

2019-05-10_Hanging Protractor

@Niyarlatotep我注意到与节点版本10.9.0关联的npm下载了webdriver-manager版本12.0.6。 当我尝试节点版本10.15.3时,量角器5.4.2包括webdriver-manager 12.1.4。 如果您仍然遇到此问题,我将调查npm的所有已知问题。

@shihuawang我做了一个示例测试。 我们有非常相似的chrome + chromedriver版本。 https://github.com/cnishina/protractor542-chrome74在此示例中,我包括了已下载的Chrome版本和ChromeDriver版本。 至少对于一个简单的例子,这对我有用。 再次面对上述问题,我将再次检查节点,npm和webdriver-manager版本。 如果您仍在使用Chrome 73,请参考版本73.0.3683.68。 这可以通过webdriver-manager update --versions.chrome 73.0.3683.68来完成。 如果您仍在使用webdriver-manager 12.0.x,它将下载chromedriver 2.46( webdriver-manager update --versions.chrome 2.46 ),该版本应适用于版本73。

@raymonsaadalla请参见上面有关版本73的注释。您可以使用Chromedriver 73.0.3683.68或2.46。

@ XL175816@Priyankajoshipj我可以通过一个简单的示例使用它: https :

请检查是否在全球范围内安装了量角器。 尝试删除node_modules文件夹,然后重试。 我使用async / await进行了测试,并且没有在webdriver-manager 12.1.4中遇到这些问题。 我的节点版本是10.15.3

您也可以尝试删除package.lock.json并重新安装npn

也尝试npm dedupe命令。 如果手动安装,它将使用webdriver-manager版本修复该错误。

我们尝试了几次@vsravuri的建议,以删除node_modules文件夹并重新安装Protractor和webdriver-manager。 我们还尝试删除package.lock.json并再次执行“ npm install”。

@cnishina我们的测试一直持续到星期一(5/6)下午。 他们整天工作,直到Google Chrome浏览器自动更新到版本74; 然后它们都失败了,包括我们几分钟前才成功运行的那些。 我们的脚本都没有async / await。 实际上,我们定向到的第一个网站是Angular页面。

您是否正在使用Node 10.15.3? 运行测试时会看到什么错误? webdriver-manager更新的输出是什么?

嗨,西尼西娜,
版本74 + webdriver-manager 12.1.4 + ChromeDriver 74 + nodejs 6.x + Protractor 5.4.2对我们不起作用。

chrome稳定版升级后,这种情况发生了几次,以后每次都修复。 但是这次还没有解决。 我之前说过一次修复,这是我的误解。 所以它永远不会固定74。

一次,我可以通过安装73使其工作,但现在不起作用。

我先前安装的73可以正常工作,但不适用于新安装。

失败的原因也不例外。 这可能与进程的超时有关,可能还有其他原因。

您好vsravuri,Protractor已在全球范围内安装,并且其他大多数情况也可行。 在升级到74之前,它仍然有效。 我以前安装的73仍然可以正常工作,但是我们需要在新的docker上安装才能进行正式的夜间测试。 由于这个问题,我们的项目都被延迟了。

嗨vsravuri,您好,我的错误无法创建一条新记录,该记录经历了一步的超时,但是仍然应该创建它。 直到74铬之前,它一直有效。一次,73铬不起作用,但后来修复了。 您能以同样的方式修复74吗?

在74之前,我们总是可以退回到较旧的版本以使其正常工作。 但是这次没有运气。

我发现清除浏览器缓存(手动)可以解决应用程序的超时问题,但是当我将其添加到量角器时,似乎无法清除缓存。 您能建议我如何清除量角器中的缓存。 我在网上找到的那个不适用于我。

您需要检查ChromeDriver 74和自动化脚本是否存在任何问题。 要清除浏览器缓存,您需要选择是否要删除Cookie,本地存储或会话存储。

尝试这个
browser.executeScript('window.sessionStorage.clear();');
browser.executeScript('window.localStorage.clear();');
browser.manage()。deleteCookie(“ test_cookie”);

嗨vsravuri,
后来我得到了明确的缓存工作,如下面的链接所建议的那样,它必须在函数中起作用:
https://stackoverflow.com/questions/45218022/how-to-clear-a-browser-cache-in-protractor?rq=1

因此,这是解决我的特定问题的方法。 但我确实希望有人能够像chrome浏览器一样修复它来处理这种情况,其行为与手动测试相同。 在最近的几个chrome版本中,这一直是一个问题,除了74之外,所有这些最终都得到了解决。

@Priyankajoshipj和我有以下版本的应用程序:

  • 铬是74.0.3729.131,
  • 量角器是5.4.2,
  • webdriver-manager是12.1.4,
  • 节点是v10.15.3,
  • chromedriver是74.0.3729.6。

运行我们的脚本仍然会产生与以前相同的错误,Chrome为空白。 (从上面重申一下自己,浏览器出现了,但还是空白,甚至无法访问我们应用程序所在的https:// localhost,并且永远都这样挂起。测试超时,浏览器仍然保持这种状态,直到我们因为它挂起了,所以cmd什么也没说(只是闪烁的光标),所以我们什至不知道错误是什么。

在运行脚本之前清除Chrome缓存对我们不起作用。 结果相同。 而且我们的测试无论如何都不应清除缓存。

我们确实找到了可以带头的东西。 我们能够运行上面提到的@cnishina的简单测试,并且经过生效的方法。 它需要使用async / await; 我们必须在每行前面添加“ await”…如果没有async / await,Chrome有时会到达https:// localhost,然后立即关闭并说“在等待量角器与页面同步时出错”,或者有时没有根本不会进入本地主机(我上面连接的永久悬挂的空白浏览器)。

但是,更改脚本中的所有代码将是一项非常艰巨的工作。 而且如前所述,不幸的是,将Chrome降级至73版不是我们的选择。 希望可以修复Chrome版本74。

@ XL175816今后,由于控制流弃用,我们需要使所有内容异步/等待。 如果异步/等待正在工作,那么最好立即开始进行工程设计以升级您的测试。

@shihuawang请打开一个新的错误并添加更多信息。 它怎么会失败? 你在做什么? 错误消息是什么? 您是否有示例代码集? 您在什么环境上运行测试? 从上面阅读这些消息,我不确定从哪里开始或如何获得帮助。

由于此问题已解决,因此我也将锁定此对话。 我将其保持打开状态,以防万一有人仍然遇到此问题。 如果您遇到了与Protractor有关的问题,而您认为是框架的问题,请随时提出新的问题。 如果您在寻求支持帮助,请在此处询问: https :

此页面是否有帮助?
0 / 5 - 0 等级