离线机器上的量角器

时间:2017-06-20 19:36:26

标签: selenium protractor angular-cli

  • Angular 4 cli项目 我们有私人网络和私人npm存储库。 (没有连接到互联网)。 所以在下载完所有模块后,我想运行e2e测试。

量角器使用webdriver-manager下载最新的chrome驱动程序。 但是他无法下载驱动程序,所以我收到了这个错误:

etaddrinfo ENOTFOUND chromedriver.storage.googleapis.com chromedriver.storage.googleapis.com:443

我尝试手动下载驱动程序,并在protactor-config:

{
  chromeDriver: "../../chromedriver.exe", // I also tried with "./chromedriver_2.30.exe"

....       }

(我不知道chromedriver是protractor.config的相对路径还是protractor中的webdriver-manager模块)

但是我一直收到这个错误,如何在没有互联网连接的情况下处理这个错误?

顺便说一句,有些事情要考虑,我们在windows上开发,但是我们的ci / cd服务器(linux)如何才能获得适合linux的驱动程序?

4 个答案:

答案 0 :(得分:4)

我有类似的问题。在尝试手动复制驱动程序或更改量角器模块等不同方法后,我发现最佳解决方法是安装本地Web服务器并提供通过该本地服务器下载所需的驱动程序。此解决方案有效,也可用于提供其他文件(例如,在" npm install"期间直接下载的文件)。步骤如下:

  • 在离线系统或该离线系统可访问的任何其他系统上安装Apache。
  • 在在线系统上,从(https://chromedriver.storage.googleapis.com/ - 更新命令尝试访问的站点)下载驱动程序。在浏览器中访问此站点会显示一个文件(download.xml),该文件列出了不同平台的不同版本的Web驱动程序。您可以通过附加" Key"来下载所需的版本。在该文件中显示到URL的末尾,例如(https://chromedriver.storage.googleapis.com/2.33/chromedriver_win32.zip)下载适用于Windows的chrome驱动程序2.33版。我尝试了较新的版本,但发现2.33适用于Win 10(64位)/ Chrome 61.
  • 使用与密钥相同的路径将下载的zip文件手动复制到Apache htdocs文件夹中的离线系统。 (C:\\ htdocs中\ 2.33 \ chromedriver_win32.zip)
  • 制作类似于实际网站(https://chromedriver.storage.googleapis.com)上的download.xml文件,但只列出您需要的驱动程序版本的一个条目。
  • 修改您的Apache配置文件(conf \ httpd.conf),使download.xml成为DirectoryIndex文件
  • 运行Apache(bin \ httpd.exe)
  • 更改您的Windows主机文件,以添加要映射的条目(chromedriver.storage.googleapis.com)到运行Apache的系统的IP。
  • 运行" ng e2e"。 " webdriver-manager更新"将下载此本地驱动程序,测试将继续。

答案 1 :(得分:2)

我有一个类似的问题。通过谷歌搜索找到了这个答案,我尝试了一下。似乎可以工作。

随着量角器的最新变化,您可以使用:

ng e2e --webdriver-update=false

答案 2 :(得分:0)

我遇到了同样的问题,我的解决方案虽然不是最好的,但它可以工作。

本地:

    在我的示例中
  • 运行set TNS_ADMIN=c:\oracle\dperezd\virtual\product\12.2.0\dbhome_1\network\admin\ lsnrctl stop lsnrctl start ,我必须使用webdriver-manager update
  • 转到-ignore_ssl并将所有文件(\node_modules\protractor\node_modules\webdriver-manager\selenium\除外)复制到某个根文件夹
  • 提交并推送更改(我知道,我们正在将Web驱动程序推送到存储库中,但这不是最佳解决方案)

在脱机计算机上-以我为例,TFS

  • 运行npm install
  • 将网络驱动程序复制回文件夹update-config.json
  • 我使用Angular CLI,因此运行node_modules\protractor\node_modules\webdriver-manager\selenium\

答案 3 :(得分:0)

最好的方法是将其放入您的angular.json:

"e2e": {
  "builder": "@angular-devkit/build-angular:protractor",
  "options": {
    "webdriverUpdate": false,
    "protractorConfig": "e2e/protractor.conf.ts",
    "devServerTarget": "myproject:serve"
  },