Vanilla Script vs npm Run Script导致Webdriver问题

时间:2017-09-22 17:06:20

标签: node.js selenium selenium-webdriver protractor

我最近安装了protractor-flake软件包,以便通过Protractor重新运行失败的测试一段时间。

如果我通过命令行运行以下命令:

protractor-flake --parser standard --max-attempts=3 -- .\\protractor.conf.js

一切都按预期运作。为了使这个过程对其他开发人员来说更容易,我还想在我的package.json文件中添加一个脚本,如下所示:

"scripts": {
    "flake": "protractor-flake --parser standard  --max-attempts=3 -- .\\protractor.conf.js"
}

但是,当我运行npm run flake时,我开始收到有关webdriver的错误:

> cce@0.0.1 flake C:\..\..\Console
> protractor-flake --parser standard  --max-attempts=3 -- .\protractor.conf.js

[13:01:18] W/driverProviders - Using driver provider directConnect, but also found extra driver provider parameter(s): seleniumAddress
[13:01:18] I/launcher - Running 1 instances of WebDriver
[13:01:18] I/direct - Using ChromeDriver directly...
[13:01:18] E/direct - Error code: 135
[13:01:18] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[13:01:18] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
    at IError ...
[13:01:18] E/launcher - Process exited with error code 135

正在运行webdriver-manager update我收到以下内容:

(node:5432) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: EPERM: operation not permitted, rename 'C:\..\..\..\chromedriver.exe' -> 'C:\..\..\..\chromedriver_2.32.exe'

为什么通过npm运行相同的脚本会产生不同的结果?另外,是否有人知道如何使用EPERM来解决webdriver-manager update问题?

由于

1 个答案:

答案 0 :(得分:0)

多个驱动程序提供程序的警告:

您似乎已指定了两个驱动程序提供程序:directConnect和seleniumAddress。我相信directConnect优先于seleniumAddress。

如果您已经在运行selenium独立服务器,只需从Protractor配置文件中删除directConnect: true即可。接下来,我们将为directConnect下载这些二进制文件。

的webdriver的管理

**检查代理设置

我认为webdriver-manager因公司代理而无法下载文件。有一个代理选项(目前不适用于geckoDriver)。

检查selenium目录

在运行测试的项目目录中,检查node_modules/protractor/node_modules/webdriver-manager/selenium目录。发生的事情是webdriver-manager代表您下载文件并将它们保存到该目录。

在update-config.json中伪装

您是否需要此update-config.json来运行直接连接?是。此文件在selenium目录中生成,通常二进制文件也会下载到该目录。量角器使用下载的最后一个版本进行直接连接。您可以从https://chromedriver.storage.googleapis.com/index.html下载chromedriver二进制文件。如果需要,可以在update-config.json中伪装。 update-config看起来像:

{
  "chromedriver": {
    "last": "C:\path\to\chromedriver.exe",
    "all": ["C:\path\to\chromedriver.exe"]
  }
}