Docker 如何在停靠环境中使用WebDrivero测试节点应用程序(ERR_SSL_PROTOCOL_ERROR)

Docker 如何在停靠环境中使用WebDrivero测试节点应用程序(ERR_SSL_PROTOCOL_ERROR),docker,selenium-chromedriver,webdriver-io,wdio-v6,Docker,Selenium Chromedriver,Webdriver Io,Wdio V6,我希望有三个连接的docker容器(在构建服务器上运行): 我的应用程序(名称:app) 浏览器(在本例中为chrome;名称:selenium) My End2结束/UI测试(名称测试仪) 但是,测试没有运行。来自测试仪容器的当前错误消息是“由于未知错误,请求失败,状态为500:net::ERR\u SSL\u PROTOCOL\u error” 文件结构: dir test specs basic.js app.js docker-compose.yml

我希望有三个连接的docker容器(在构建服务器上运行):

  • 我的应用程序(名称:app)
  • 浏览器(在本例中为chrome;名称:selenium)
  • My End2结束/UI测试(名称测试仪)
  • 但是,测试没有运行。来自测试仪容器的当前错误消息是“由于未知错误,请求失败,状态为500:net::ERR\u SSL\u PROTOCOL\u error”

    文件结构:

    dir
      test
        specs
          basic.js
      app.js
      docker-compose.yml
      Dockerfile
      package.json
      wdio.conf.js
    
    这是我的档案: “docker compose.yml”:

    “Dockerfile”:

    “wdio.conf.js”:

    “test/spec/basic.js”:

    “app.js”:

    “日志中更大的片段”:

    tester_1|2020-09-28T07:55:11.844Z INFO@wdio/cli:launcher:runonprepare hook
    tester|u 1 | 2020-09-28T07:55:11.848Z INFO@wdio/cli:launcher:runonworkerstart hook
    tester|1 | 2020-09-28T07:55:11.850Z INFO@wdio/local runner:Start worker 0-0与arg:wdio.conf.js
    selenium|1 | 07:55:12.017信息[GridLauncherV3.lambda$buildLaunchers$3]-在端口4444上启动独立的selenium服务器
    selenium|2020-09-28 07:55:12.150:INFO::main:Logging在1038ms时初始化为org.seleniumhq.jetty9.util.log.StdErrLog
    tester|1 |[0-0]2020-09-28T07:55:12.634Z INFO@wdio/localrunner:Run worker命令:Run
    tester|1[0-0]2020-09-28T07:55:12.658Z信息网络驱动器:使用./protocol存根协议启动新会话
    selenium|1 | 07:55:12.862信息[WebDriverServlet.]-初始化WebDriverServlet
    测试仪|[0-0]运行在chrome-/test/specs/basic.js中
    tester_1|[0-0]2020-09-28T07:55:13.056Z信息网络驱动程序:使用网络驱动程序协议启动新会话
    测试仪[0-0]2020-09-28T07:55:13.060Z信息网络驱动程序:[发布]http://selenium:4444/wd/hub/session
    测试器|[0-0]2020-09-28T07:55:13.061Z信息网络驱动程序:数据{
    测试仪| 1 |功能:{
    tester_1| alwaysMatch:{browserName:'chrome',AcceptInsureCerts:true},
    测试器|1 |第一匹配:[{}]
    测试员| 1 |},
    tester_1| desiredCapabilities:{browserName:'chrome',AcceptInsureCerts:true}
    测试仪_1 |}
    selenium|1 | 07:55:13.122信息[SeleniumServer.boot]-selenium服务器已启动并在端口4444上运行
    selenium|1 | 07:55:13.331信息[ActiveSessionFactory.apply]-功能包括:{
    Seleniu|1 |“AcceptUnsecureCerts”:正确,
    Seleniu|1 |“浏览器名称”:“铬”
    硒| 1 |}
    selenium|1 | 07:55:13.335信息[ActiveSessionFactory.lambda$apply$11]-匹配的工厂org.openqa.selenium.grid.session.remote.ServicedSession$factory(提供程序:org.openqa.selenium.chrome.ChromeDriverService)
    端口24508上的Seleniu|1|启动铬驱动程序85.0.4183.83(94abc2237ae0c9a4cb5f035431c8adfb94324633参考/分支头/4183{1658})
    Seleniu|只允许本地连接。
    硒1 |请参见https://chromedriver.chromium.org/security-considerations 获取有关确保ChromeDriver安全的建议。
    已成功启动硒铬驱动程序。
    selenium|[1601279713.386][SEVERE]:bind()失败:无法分配请求的地址(99)
    selenium|1 | 07:55:14.377信息[ProtocolHandshake.createSession]-检测到的方言:W3C
    selenium|1 | 07:55:14.428信息[RemoteSession$Factory.lambda$performHandshake$0]-启动新会话82d59567606b7f101da8650600e7dd00(org.openqa.selenium.chrome.ChromeDriverService)
    测试器|[0-0]2020-09-28T07:55:14.607Z信息网络驱动程序:命令导航到http://app:3000/")
    tester_1|[0-0]2020-09-28T07:55:14.610Z信息网络驱动程序:[发布]http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester|1 |[0-0]2020-09-28T07:55:14.611Z信息网络驱动程序:数据{url:'http://app:3000/' }
    tester|1 |[0-0]2020-09-28T07:55:15.188Z警告webdriver:由于未知错误,请求失败,状态为500:net::ERR_SSL_PROTOCOL_error
    检测仪_1|(会话信息:chrome=85.0.4183.83)
    测试仪[0-0]2020-09-28T07:55:15.189Z信息网络驱动程序:重试1/3
    测试仪[0-0]2020-09-28T07:55:15.190Z信息网络驱动程序:[发布]http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester|1 |[0-0]2020-09-28T07:55:15.191Z信息网络驱动程序:数据{url:'http://app:3000/' }
    tester|1[0-0]2020-09-28T07:55:15.592Z警告webdriver:由于未知错误,请求失败,状态为500:net::ERR_SSL_PROTOCOL_error
    检测仪_1|(会话信息:chrome=85.0.4183.83)
    测试仪[0-0]2020-09-28T07:55:15.592Z信息网络驱动程序:重试2/3
    tester|1[0-0]2020-09-28T07:55:15.594Z信息网络驱动程序:[发布]http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester|1 |[0-0]2020-09-28T07:55:15.595Z信息网络驱动程序:数据{url:'http://app:3000/' }
    tester|1[0-0]2020-09-28T07:55:15.942Z警告webdriver:由于未知错误,请求失败,状态为500:net::ERR_SSL_PROTOCOL_error
    检测仪_1|(会话信息:chrome=85.0.4183.83)
    测试仪[0-0]2020-09-28T07:55:15.943Z信息网络驱动程序:重试3/3
    测试仪[0-0]2020-09-28T07:55:15.944Z信息网络驱动程序:[发布]http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester|1 |[0-0]2020-09-28T07:55:15.945Z信息网络驱动程序:数据{url:'http://app:3000/' }
    tester|1[0-0]2020-09-28T07:55:16.104Z错误webdriver:请求失败,状态为500,原因是未知错误:未知错误:net::ERR_SSL_协议错误
    检测仪_1|(会话信息:chrome=85.0.4183.83)
    tester|1 |[0-0]在“测试应用程序应具有正确的标题”中出错
    测试仪|1 |未知错误:未知错误:网络::错误| SSL |协议|错误
    检测仪_1|(会话信息:chrome=85.0.4183.83)
    测试器|[0-0]2020-09-28T07:55:16.118Z信息网络驱动程序:命令删除会话()
    测试器|[0-0]2020-09-28T07:55:16.119Z信息网络驱动程序:[删除]http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00
    selenium|1 | 07:55:16.196信息[ActiveSessions$1.onStop]-删除会话82d59567606b7f101da8650600e7dd00(org.openqa.selenium.chrome.ChromeDrive
    
    version: '3'
    
    services:
      tester:
        build:
          context: .
          target: e2e-tests
        command: npx wdio wdio.conf.js
        links:
          - selenium
    
      selenium:
        image: selenium/standalone-chrome
        expose:
          - "4444"
        links:
          - app
    
      app:
        build:
          context: .
          target: prod
        expose:
          - "3000"
        command: npm start
    
    FROM node:12 as base
    WORKDIR /usr/src/app
    COPY package*.json ./
    RUN npm install
    
    
    FROM base as prod
    COPY app.js ./
    EXPOSE 3000
    
    
    FROM base as e2e-tests
    COPY wdio.conf.js ./
    COPY test test
    
    exports.config = {
      hostname: 'selenium',
        path: '/wd/hub',
        specs: [
            './test/specs/**/*.js'
        ],
        exclude: [],
        maxInstances: 10,
        capabilities: [{
            maxInstances: 5,
            browserName: 'chrome',
            acceptInsecureCerts: true
        }],
        logLevel: 'info',
        bail: 0,
        baseUrl: 'http://localhost',
        waitforTimeout: 10000,
        connectionRetryTimeout: 120000,
        connectionRetryCount: 3,
        framework: 'jasmine',
        reporters: ['spec'],
        jasmineNodeOpts: {
            defaultTimeoutInterval: 60000,
            expectationResultHandler: function(passed, assertion) {}
        },
    }
    
    describe('test app', () => {
        it('should have the right title', () => {
            browser.url('http://app:3000')
            expect(browser).toHaveTextContaining('Hello');
        })
    })
    
    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => res.send('<html><head><title>Hello</title></head><body>Hello World!</body></html>'));
    
    const server = app.listen(3000, () => {
      const { port } = server.address();
      console.log(`Test app listening on port ${port}`);
    });
    
    {
      "name": "wdiodocker",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node app.js"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.17.1"
      },
      "devDependencies": {
        "@wdio/cli": "^6.5.2",
        "@wdio/jasmine-framework": "^6.5.0",
        "@wdio/local-runner": "^6.5.2",
        "@wdio/spec-reporter": "^6.4.7",
        "@wdio/sync": "^6.5.0",
        "wdio-docker-service": "^3.0.0"
      }
    }
    
    tester_1    | 2020-09-28T07:55:11.844Z INFO @wdio/cli:launcher: Run onPrepare hook
    tester_1    | 2020-09-28T07:55:11.848Z INFO @wdio/cli:launcher: Run onWorkerStart hook
    tester_1    | 2020-09-28T07:55:11.850Z INFO @wdio/local-runner: Start worker 0-0 with arg: wdio.conf.js
    selenium_1  | 07:55:12.017 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a standalone Selenium Server on port 4444
    selenium_1  | 2020-09-28 07:55:12.150:INFO::main: Logging initialized @1038ms to org.seleniumhq.jetty9.util.log.StdErrLog
    tester_1    | [0-0] 2020-09-28T07:55:12.634Z INFO @wdio/local-runner: Run worker command: run
    tester_1    | [0-0] 2020-09-28T07:55:12.658Z INFO webdriverio: Initiate new session using the ./protocol-stub protocol
    selenium_1  | 07:55:12.862 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
    tester_1    | [0-0] RUNNING in chrome - /test/specs/basic.js
    tester_1    | [0-0] 2020-09-28T07:55:13.056Z INFO webdriverio: Initiate new session using the webdriver protocol
    tester_1    | [0-0] 2020-09-28T07:55:13.060Z INFO webdriver: [POST] http://selenium:4444/wd/hub/session
    tester_1    | [0-0] 2020-09-28T07:55:13.061Z INFO webdriver: DATA {
    tester_1    |   capabilities: {
    tester_1    |     alwaysMatch: { browserName: 'chrome', acceptInsecureCerts: true },
    tester_1    |     firstMatch: [ {} ]
    tester_1    |   },
    tester_1    |   desiredCapabilities: { browserName: 'chrome', acceptInsecureCerts: true }
    tester_1    | }
    selenium_1  | 07:55:13.122 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
    selenium_1  | 07:55:13.331 INFO [ActiveSessionFactory.apply] - Capabilities are: {
    selenium_1  |   "acceptInsecureCerts": true,
    selenium_1  |   "browserName": "chrome"
    selenium_1  | }
    selenium_1  | 07:55:13.335 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
    selenium_1  | Starting ChromeDriver 85.0.4183.83 (94abc2237ae0c9a4cb5f035431c8adfb94324633-refs/branch-heads/4183@{#1658}) on port 24508
    selenium_1  | Only local connections are allowed.
    selenium_1  | Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
    selenium_1  | ChromeDriver was started successfully.
    selenium_1  | [1601279713.386][SEVERE]: bind() failed: Cannot assign requested address (99)
    selenium_1  | 07:55:14.377 INFO [ProtocolHandshake.createSession] - Detected dialect: W3C
    selenium_1  | 07:55:14.428 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 82d59567606b7f101da8650600e7dd00 (org.openqa.selenium.chrome.ChromeDriverService)
    tester_1    | [0-0] 2020-09-28T07:55:14.607Z INFO webdriver: COMMAND navigateTo("http://app:3000/")
    tester_1    | [0-0] 2020-09-28T07:55:14.610Z INFO webdriver: [POST] http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester_1    | [0-0] 2020-09-28T07:55:14.611Z INFO webdriver: DATA { url: 'http://app:3000/' }
    tester_1    | [0-0] 2020-09-28T07:55:15.188Z WARN webdriver: Request failed with status 500 due to unknown error: net::ERR_SSL_PROTOCOL_ERROR
    tester_1    |   (Session info: chrome=85.0.4183.83)
    tester_1    | [0-0] 2020-09-28T07:55:15.189Z INFO webdriver: Retrying 1/3
    tester_1    | [0-0] 2020-09-28T07:55:15.190Z INFO webdriver: [POST] http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester_1    | [0-0] 2020-09-28T07:55:15.191Z INFO webdriver: DATA { url: 'http://app:3000/' }
    tester_1    | [0-0] 2020-09-28T07:55:15.592Z WARN webdriver: Request failed with status 500 due to unknown error: net::ERR_SSL_PROTOCOL_ERROR
    tester_1    |   (Session info: chrome=85.0.4183.83)
    tester_1    | [0-0] 2020-09-28T07:55:15.592Z INFO webdriver: Retrying 2/3
    tester_1    | [0-0] 2020-09-28T07:55:15.594Z INFO webdriver: [POST] http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester_1    | [0-0] 2020-09-28T07:55:15.595Z INFO webdriver: DATA { url: 'http://app:3000/' }
    tester_1    | [0-0] 2020-09-28T07:55:15.942Z WARN webdriver: Request failed with status 500 due to unknown error: net::ERR_SSL_PROTOCOL_ERROR
    tester_1    |   (Session info: chrome=85.0.4183.83)
    tester_1    | [0-0] 2020-09-28T07:55:15.943Z INFO webdriver: Retrying 3/3
    tester_1    | [0-0] 2020-09-28T07:55:15.944Z INFO webdriver: [POST] http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00/url
    tester_1    | [0-0] 2020-09-28T07:55:15.945Z INFO webdriver: DATA { url: 'http://app:3000/' }
    tester_1    | [0-0] 2020-09-28T07:55:16.104Z ERROR webdriver: Request failed with status 500 due to unknown error: unknown error: net::ERR_SSL_PROTOCOL_ERROR
    tester_1    |   (Session info: chrome=85.0.4183.83)
    tester_1    | [0-0] Error in "test app should have the right title"
    tester_1    | unknown error: unknown error: net::ERR_SSL_PROTOCOL_ERROR
    tester_1    |   (Session info: chrome=85.0.4183.83)
    tester_1    | [0-0] 2020-09-28T07:55:16.118Z INFO webdriver: COMMAND deleteSession()
    tester_1    | [0-0] 2020-09-28T07:55:16.119Z INFO webdriver: [DELETE] http://selenium:4444/wd/hub/session/82d59567606b7f101da8650600e7dd00
    selenium_1  | 07:55:16.196 INFO [ActiveSessions$1.onStop] - Removing session 82d59567606b7f101da8650600e7dd00 (org.openqa.selenium.chrome.ChromeDriverService)
    tester_1    | [0-0] FAILED in chrome - /test/specs/basic.js
    tester_1    | 2020-09-28T07:55:16.299Z INFO @wdio/cli:launcher: Run onComplete hook
    tester_1    |
    tester_1    |  "spec" Reporter:
    tester_1    | ------------------------------------------------------------------
    tester_1    | [chrome 85.0.4183.83 linux #0-0] Spec: /usr/src/app/test/specs/basic.js
    tester_1    | [chrome 85.0.4183.83 linux #0-0] Running: chrome (v85.0.4183.83) on linux
    tester_1    | [chrome 85.0.4183.83 linux #0-0] Session ID: 82d59567606b7f101da8650600e7dd00
    tester_1    | [chrome 85.0.4183.83 linux #0-0]
    tester_1    | [chrome 85.0.4183.83 linux #0-0] test app
    tester_1    | [chrome 85.0.4183.83 linux #0-0]    ✖ should have the right title
    tester_1    | [chrome 85.0.4183.83 linux #0-0]
    tester_1    | [chrome 85.0.4183.83 linux #0-0] 1 failing (1.6s)
    tester_1    | [chrome 85.0.4183.83 linux #0-0]
    tester_1    | [chrome 85.0.4183.83 linux #0-0] 1) test app should have the right title
    tester_1    | [chrome 85.0.4183.83 linux #0-0] unknown error: unknown error: net::ERR_SSL_PROTOCOL_ERROR
    tester_1    |   (Session info: chrome=85.0.4183.83)
    tester_1    | [chrome 85.0.4183.83 linux #0-0]     at <Jasmine>
    tester_1    | [chrome 85.0.4183.83 linux #0-0]     at processTicksAndRejections (internal/process/task_queues.js:97:5)
    tester_1    | [chrome 85.0.4183.83 linux #0-0]     at UserContext.<anonymous> (/usr/src/app/test/specs/basic.js:3:17)