2

webdriver-manager\selenium\update-config.json对于“最后一个”和“所有”JSON 参数,我有绝对路径。我如何设置它们的相对路径?

我尝试了“..\”和“.\”,但它不起作用。有任何想法吗?

4

2 回答 2

5

好的,这就是 的设计update-config.json,它的用途以及它存在的原因。

更新时写入 update-config.json

当用户调用webdriver-manager update时,会下载二进制文件并重命名以包含版本号。这允许用户在其输出目录中拥有多个版本的二进制文件。以前大约在 2015 年左右,该文件将被下载,ChromeDriver 名称的未压缩文件将只是chromedriver(或chromedriver.exe在 Windows 上)。现在,我们重命名以包含版本。因此,如果我们下载 2.28 版,未压缩的文件将是chromedriver_2.28

量角器如何使用它

以前(~2015 年),驱动程序提供程序localdirectConnect假设文件名。因此,对于我们之前的示例,它会假设该文件是chromedriver(或chromedriver.exe在 Windows 上)。

附加版本号有几个问题:

  1. 量角器不跟踪 webdriver-manager 下载的版本号
  2. 以前的假设是通过使用 config.json 作为版本号来实现的;但是,这不允许用户下载自定义版本。

因此,我们会跟踪下载的“最新”版本。webdriver-manager 下载的最后一个版本将被 Protractor 使用。“all”字段只是下载的版本列表。我相信当我们称其为“状态”时,会使用这些值。

显然,如果您删除了update-config.json但仍有二进制文件,Protractor 将找不到update-config.json. 因此它将无法运行local,或者directConnect会抱怨/要求运行webdriver-manager update

为什么这不应该存储在 git 中

先前的评论询问有关存储此值的问题。这里的想法是,就像二进制文件和缓存文件一样,这个文件是临时的,不应该存储在 git 中。我实际上不理解用户想要拥有相对路径的用例,update-config.json但如果您需要通过代码引用它,那么我会做类似lib/driverProviders/local.ts#L43的事情。

于 2017-03-22T22:53:32.467 回答
5

可以尝试这样更新,肯定会在node_modules/protractor中更新

$./node_modules/protractor/bin/webdriver-manager update
于 2018-07-18T13:36:40.800 回答