我最近安装了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
问题?
由于
答案 0 :(得分:0)
您似乎已指定了两个驱动程序提供程序:directConnect和seleniumAddress。我相信directConnect优先于seleniumAddress。
如果您已经在运行selenium独立服务器,只需从Protractor配置文件中删除directConnect: true
即可。接下来,我们将为directConnect下载这些二进制文件。
**检查代理设置
我认为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"]
}
}