Error: Invalid or corrupt jarfile ./node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-4.0.0-alpha-1.zip.jar
Error: Invalid or corrupt jarfile ./node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-4.0.0-alpha-1.zip.jar
当 运行ning webdriver-manager update
时,它会下载带有 -alpha-1.zip.jar 的文件。这似乎不是正确的文件格式。下面的例子是只下载 selenium 独立 jar 文件:
> ./webdriver-manager update --standalone --chrome false --gecko false
webdriver-manager: using global installed version 12.1.1
[13:34:08] I/downloader - curl -o/path/to/selenium-server-standalone-4.0.0-alpha-1.zip.jar https://selenium-release.storage.googleapis.com/4.0/selenium-server-standalone-4.0.0-alpha-1.zip
尝试 运行 webdriver-manager start
时,这是一个无效文件。这是怎么回事,我们该如何解决?
对于上下文,12.1.1 中发生了什么?
我们从 https://selenium-release.storage.googleapis.com 下载 xml 文件。此 xml 文件以前没有 .zip 文件。所以 webdriver-manager update 会从这个列表中找到最新的。对于 3.141/selenium-server-standalone-3.141.59
xml 目录只有一个 jar 文件:
<Contents>
<Key>3.141/selenium-server-standalone-3.141.59.jar</Key>
<Generation>1542184006302312</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2018-11-14T08:26:46.300Z</LastModified>
<ETag>"947e57925b4185ae04d03ceec175a34a"</ETag>
<Size>10649948</Size>
</Contents>
发布 4.0.0-alpha.1 时,xml 文件同时具有 jar 和 zip 扩展名:
<Contents>
<Key>4.0/selenium-server-standalone-4.0.0-alpha-1.jar</Key>
<Generation>1556122620115927</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2019-04-24T16:17:00.115Z</LastModified>
<ETag>"ac553ec987d16d2af8c8e3ef9061772c"</ETag>
<Size>12564804</Size>
</Contents>
<Contents>
<Key>4.0/selenium-server-standalone-4.0.0-alpha-1.zip</Key>
<Generation>1556122620996687</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2019-04-24T16:17:00.996Z</LastModified>
<ETag>"1974b11f970bad6e15c84e3840ec3897"</ETag>
<Size>12342093</Size>
</Contents>
下载过程中,取第一个匹配最新版本的Contents Key。所以假设它是一个 jar 文件并且没有检查文件扩展名。作为重命名过程的一部分,它将生成文件名。这是用于 chromedriver 的模式,我们将版本添加到二进制文件中。因此 chromedriver 二进制文件将重命名为 chromedriver_2.44。这就是为什么我们有一个 .zip.jar
文件。
此外,我们没有下载 jar 文件的测试版。另一个问题是它正在下载 alpha 版本。
如何将您的 webdriver-manager 更新到 12.1.4?
万岁!昨天早上发布的 webdriver-manager@12.1.2 现在解决了这个问题。但是 12.1.4 有所有其他修复(更多信息在这里:)
修复了下载 .zip
文件并将其重命名为 .zip.jar
的问题。它只会下载 jar 文件。此外,我们不会下载 jar 的 alpha 和 beta 版本。我们应该使用稳定版本的 selenium 独立服务器。
如果您使用 Protractor,要更新到 12.1.4:
- 根据"webdriver-manager": "^12.0.6"获取最新版本的webdriver-manager。所以要得到这个,你需要强制安装你的节点模块(
npm install -f
)或清理你的工作区(删除你的节点模块并进行全新安装)。
如果您使用的是全局安装的 webdriver-manager:
npm install -g webdriver-manager@12.1.4
链接
在 Protractor 和 webdriver manager 中跟踪到的问题是:
- angular/protractor#5224
- angular/webdriver-manager#370
此问题的修复在拉取请求中:angular/webdriver-manager#371。
其他 post 用于 Whosebug 的其他修复:
当 运行ning webdriver-manager update
时,它会下载带有 -alpha-1.zip.jar 的文件。这似乎不是正确的文件格式。下面的例子是只下载 selenium 独立 jar 文件:
> ./webdriver-manager update --standalone --chrome false --gecko false
webdriver-manager: using global installed version 12.1.1
[13:34:08] I/downloader - curl -o/path/to/selenium-server-standalone-4.0.0-alpha-1.zip.jar https://selenium-release.storage.googleapis.com/4.0/selenium-server-standalone-4.0.0-alpha-1.zip
尝试 运行 webdriver-manager start
时,这是一个无效文件。这是怎么回事,我们该如何解决?
对于上下文,12.1.1 中发生了什么?
我们从 https://selenium-release.storage.googleapis.com 下载 xml 文件。此 xml 文件以前没有 .zip 文件。所以 webdriver-manager update 会从这个列表中找到最新的。对于 3.141/selenium-server-standalone-3.141.59
xml 目录只有一个 jar 文件:
<Contents>
<Key>3.141/selenium-server-standalone-3.141.59.jar</Key>
<Generation>1542184006302312</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2018-11-14T08:26:46.300Z</LastModified>
<ETag>"947e57925b4185ae04d03ceec175a34a"</ETag>
<Size>10649948</Size>
</Contents>
发布 4.0.0-alpha.1 时,xml 文件同时具有 jar 和 zip 扩展名:
<Contents>
<Key>4.0/selenium-server-standalone-4.0.0-alpha-1.jar</Key>
<Generation>1556122620115927</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2019-04-24T16:17:00.115Z</LastModified>
<ETag>"ac553ec987d16d2af8c8e3ef9061772c"</ETag>
<Size>12564804</Size>
</Contents>
<Contents>
<Key>4.0/selenium-server-standalone-4.0.0-alpha-1.zip</Key>
<Generation>1556122620996687</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2019-04-24T16:17:00.996Z</LastModified>
<ETag>"1974b11f970bad6e15c84e3840ec3897"</ETag>
<Size>12342093</Size>
</Contents>
下载过程中,取第一个匹配最新版本的Contents Key。所以假设它是一个 jar 文件并且没有检查文件扩展名。作为重命名过程的一部分,它将生成文件名。这是用于 chromedriver 的模式,我们将版本添加到二进制文件中。因此 chromedriver 二进制文件将重命名为 chromedriver_2.44。这就是为什么我们有一个 .zip.jar
文件。
此外,我们没有下载 jar 文件的测试版。另一个问题是它正在下载 alpha 版本。
如何将您的 webdriver-manager 更新到 12.1.4?
万岁!昨天早上发布的 webdriver-manager@12.1.2 现在解决了这个问题。但是 12.1.4 有所有其他修复(更多信息在这里:
修复了下载 .zip
文件并将其重命名为 .zip.jar
的问题。它只会下载 jar 文件。此外,我们不会下载 jar 的 alpha 和 beta 版本。我们应该使用稳定版本的 selenium 独立服务器。
如果您使用 Protractor,要更新到 12.1.4:
- 根据"webdriver-manager": "^12.0.6"获取最新版本的webdriver-manager。所以要得到这个,你需要强制安装你的节点模块(
npm install -f
)或清理你的工作区(删除你的节点模块并进行全新安装)。
如果您使用的是全局安装的 webdriver-manager:
npm install -g webdriver-manager@12.1.4
链接
在 Protractor 和 webdriver manager 中跟踪到的问题是: - angular/protractor#5224 - angular/webdriver-manager#370
此问题的修复在拉取请求中:angular/webdriver-manager#371。
其他 post 用于 Whosebug 的其他修复: