我需要在没有Internet访问权限的机器上安装和使用Protractor / Selenium。
为此,我尝试下载所有需要的文件并将它们复制到目标计算机。
在我的机器上(可以访问Internet)
我使用以下命令安装了Protractor和Selenium webdriver:
npm install -g protractor
webdriver-manager update
在目标计算机上(无法访问Internet)
我将npm config get prefix
返回的位置中的所有文件复制到没有Internet访问权限的计算机上。
然后我在没有Internet访问权限的机器上执行了以下命令:
npm --cache-min 9999999 install -g protractor
这似乎成功了。
但是,当我尝试执行webdriver-manager start
命令时,收到以下错误消息:
events.js:183 throw er; //未处理的'错误'事件^
错误:getaddrinfo ENOTFOUND chromedriver.storage.googleapis.com chromedriver.storage.googleapis.com:443在errnoException(dns.js:50:10)的GetAddrInfoReqWrap.onlookup [as oncomplete](dns.js:92:26)
执行webdriver-manager update
时我收到同样的错误(在这种情况下:webdriver-manager start: Error: connect ETIMEDOUT)
题
我究竟做错了什么?如何在没有Internet访问权限的情况下在机器上正确设置Protractor和webdriver?
因为webdriver-manager start
将通过互联网查找selenium-server.jar和webdriver二进制文件的最新版本号,无论它们是否已存在于本地。
但webdriver-manager
不提供cmd选项来禁用查找。
快速的方法是直接在webdriver-manager start
后面运行java cmd以跳过查找。
java -Dwebdriver.chrome.driver = C:\ Tools \ npm-global \ node_modules \ webdriver-manager \ selenium \ chromedriver_2.38.exe -Dwebdriver.gecko.driver = C:\ Tools \ npm-global \ node_modules \ webdriver- manager \ selenium \ geckodriver-v0.20.1.exe -jar C:\ Tools \ npm-global \ node_modules \ webdriver-manager \ selenium \ selenium-server-standalone-3.11.0.jar -port 4444
复杂的方法是更改webdriver-manager
代码或在本地设置镜像并使用cmd选项:--alternate_cdn
并将其指向您的本地镜像URL。 (我没有验证这可以工作,读完一些源代码后得到它)