Проблема связи между Botium Box и Selenium (Docker) - PullRequest
0 голосов
/ 04 февраля 2019

У нас есть работающая версия botium-box и selenium в отдельных док-контейнерах.Botium-box подключен к redis и prisma в облаке.Мы подключили Docker-контейнеры с помощью сети, выполнив следующие команды:

docker run --name botium -p 4000:4000 botiumbox
docker run --name selenium --hostname selenium -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome:3.141.59-europium
docker network create my-net
docker network connect my-net selenium
docker network connect my-net botium

У нас есть рабочий тестовый пример с нашим чат-ботом, использующим botium-cli, как описано в следующей статье: https://chatbotsmagazine.com/5-steps-automated-testing-of-chatbots-in-eclipse-ef4c3dcaf233

Когда мы пытаемся соединить нашего чат-бота с botium-box, мы получаем следующую ошибку:

2019-02-04T13:06:44.665Z botium-box-server-agents-testsession Test Session Job 247/cjrqcmo4j00yt0807mskvflq9 failed: Error: <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="/assets/displayhelpservlet.css" media="all"/>
  <link href="/assets/favicon.ico" rel="icon" type="image/x-icon" />
  <script src="/assets/jquery-3.1.1.min.js" type="text/javascript"></script>
  <script src="/assets/displayhelpservlet.js" type="text/javascript"></script>
  <script type="text/javascript">
    var json = Object.freeze('{"consoleLink": "\u002fwd\u002fhub","type": "Standalone","class": "org.openqa.grid.web.servlet.DisplayHelpHandler$DisplayHelpServletConfig","version": "3.141.59"}');
  </script>
</head>
<body>

<div id="content">
  <div id="help-heading">
    <h1><span id="logo"></span></h1>
    <h2>Selenium <span class="se-type"></span>&nbsp;v.<span class="se-version"></span></h2>
  </div>

  <div id="content-body">
    <p>
      Whoops! The URL specified routes to this help page.
    </p>
    <p>
      For more information about Selenium <span class="se-type"></span> please see the
      <a class="se-docs">docs</a> and/or visit the <a class="se-wiki">wiki</a>.
      <span id="console-item">
        Or perhaps you are looking for the Selenium <span class="se-type"></span> <a class="se-console">console</a>.
      </span>
    </p>
    <p>
      Happy Testing!
    </p>
  </div>

  <div>
    <footer id="help-footer">
      Selenium is made possible through the efforts of our open source community, contributions from
      these <a href="https://github.com/SeleniumHQ/selenium/blob/master/AUTHORS">people</a>, and our
      <a href="http://www.seleniumhq.org/sponsors/">sponsors</a>.
   </footer>
  </div>
 </div>

</body>
</html>
    at new RuntimeError (/app/agent/node_modules/webdriverio/build/lib/utils/ErrorHandler.js:143:12)
    at Request._callback (/app/agent/node_modules/webdriverio/build/lib/utils/RequestHandler.js:302:39)
    at Request.self.callback (/app/agent/node_modules/request/request.js:185:22)
    at Request.emit (events.js:188:13)
    at Request.EventEmitter.emit (domain.js:439:20)
    at Request.<anonymous> (/app/agent/node_modules/request/request.js:1161:10)
    at Request.emit (events.js:188:13)
    at Request.EventEmitter.emit (domain.js:439:20)
    at IncomingMessage.<anonymous> (/app/agent/node_modules/request/request.js:1083:12)
    at Object.onceWrapper (events.js:276:13).

Почему мы получаем это перенаправление?Какую конечную точку следует использовать для Selenium Endpoint (поставщики устройств)?

Как подключить Selenium и botium-box в Docker?

Большое спасибо!

Обновление:

Вот конфигурация нашего проекта тестирования Botium https://i.stack.imgur.com/1B5nP.jpg

https://i.stack.imgur.com/cnXLu.jpg

https://i.stack.imgur.com/8JtzM.jpg

Обновление 2: Что мы сделали до сих пор:

  1. мы обновили наш докер-контейнер botium до последней версии (1.3.1)
  2. мы настроили нового чат-ботазагрузив наш рабочий botium.json из нашего теста botium-cli -> хорошая функция:)

Теперь у нас все та же проблема, описанная выше.Мы обнаружили следующее поведение.Мы использовали возможности в конфигурации тестового проекта и определили возможности двумя способами:

  1. Мы использовали "WEBDRIVERIO_OPTIONS" в качестве Capability # 1, Тип: JSON Структура и Значение:
        {"desiredCapabilities": {
          "browserName": "chrome",
          "platformName": "Windows 10"     
        }
      }    
мы использовали «требуемые возможности» в качестве Capability # 1, Тип: JSON Структура и значение:
 {"browserName": "chrome", 
  "platformName": "Windows 10"      
 }

После выполнения теста мы получили ошибку, описанную выше, со следующими журналами:

  1. наш конфиг отсутствует
"botium":{  
     "Capabilities":{  
        "PROJECTNAME":"Conversation Sample",
        "SCRIPTING_FORMAT":"xlsx",
        "SCRIPTING_XLSX_STARTROW":2,
        "SCRIPTING_XLSX_STARTCOL":1,
        "CONTAINERMODE":"webdriverio",
        "WEBDRIVERIO_START_PHANTOMJS":false,
        "WEBDRIVERIO_URL":"url removed",
        "WEBDRIVERIO_INPUT_ELEMENT":"#bot-input",
        "WEBDRIVERIO_OUTPUT_ELEMENT":"//div[@class=\"messages__message messages__message--received\"]//span[@class=\"content__text\" and not(contains(.,\"...\"))]",
        "WEBDRIVERIO_OPTIONS":{  
           "desiredCapabilities":{  
              "name":"Test Project- Test Session"
           },
           "protocol":"http",
           "host":"172.21.0.2:4444",
           "port":"4444",
           "path":"/wd/hub"
        },
        "WEBDRIVERIO_IGNOREUPFRONTMESSAGES":true,
        "WEBDRIVERIO_OPENBOTPAUSE":4000,
        "WEBDRIVERIO_PROFILE":"",
        "WEBDRIVERIO_INPUT_ELEMENT_VISIBLE_TIMEOUT":10000,
        "WEBDRIVERIO_USERNAME":"",
        "WEBDRIVERIO_PASSWORD":"",
        "WEBDRIVERIO_SCREENSHOTS":"none",
        "FBPAGERECEIVER_REDISURL":{  
           "port":"6379",
           "host":"redis",
           "db":0,
           "options":{  

           }
        }
     },
     "Sources":{  

     },
     "Envs":{  

     }
  },
наш конфиг на неправильном уровне
"botium":{  
      "Capabilities":{  
         "PROJECTNAME":"Conversation Sample",
         "SCRIPTING_FORMAT":"xlsx",
         "SCRIPTING_XLSX_STARTROW":2,
         "SCRIPTING_XLSX_STARTCOL":1,
         "CONTAINERMODE":"webdriverio",
         "WEBDRIVERIO_START_PHANTOMJS":false,
         "WEBDRIVERIO_URL":"url removed",
         "WEBDRIVERIO_INPUT_ELEMENT":"#bot-input",
         "WEBDRIVERIO_OUTPUT_ELEMENT":"//div[@class=\"messages__message messages__message--received\"]//span[@class=\"content__text\" and not(contains(.,\"...\"))]",
         "WEBDRIVERIO_OPTIONS":{  
            "desiredCapabilities":{  
               "name":"Test Project - Test Session"
            },
            "protocol":"http",
            "host":"172.21.0.2:4444",
            "port":"4444",
            "path":"/wd/hub"
         },
         "WEBDRIVERIO_IGNOREUPFRONTMESSAGES":true,
         "WEBDRIVERIO_OPENBOTPAUSE":4000,
         "WEBDRIVERIO_PROFILE":"",
         "WEBDRIVERIO_INPUT_ELEMENT_VISIBLE_TIMEOUT":10000,
         "WEBDRIVERIO_USERNAME":"",
         "WEBDRIVERIO_PASSWORD":"",
         "WEBDRIVERIO_SCREENSHOTS":"none",
         "desiredCapabilities":"{\"browserName\": \"chrome\",\"platformName\": \"Windows 10\"}",
         "FBPAGERECEIVER_REDISURL":{  
            "port":"6379",
            "host":"redis",
            "db":0,
            "options":{  

            }
         }
      },
      "Sources":{  

      },
      "Envs":{  

      }
   },

Обновление 3:

version: '2'
services:
  web:
    image: botium/botium-box-ce:box-1.4.0
    ports:
     - "4000:4000"
    environment:
      PRISMA_ENDPOINT: http://prisma:4467/box/ce
      BOTIUMBOX_QUEUE_REDISURL: redis://redis:6379
      DEBUG: botium*
    depends_on:
      - redis
      - prisma
    volumes:
      - testsets:/app/server/testsets
      - botiumwork:/app/server/botiumwork
      - botiumwork:/app/agent/botiumwork
  prisma:
    image: prismagraphql/prisma:1.25.4
    depends_on:
      - mysql
    restart: always
    ports:
    - "4467:4467"
    environment:
      PRISMA_CONFIG: |
        port: 4467
        databases:
          default:
            connector: mysql
            host: mysql
            port: 3306
            user: root
            password: prisma
            migrations: true
  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: prisma
    volumes:
      - mysql:/var/lib/mysql
  redis:
    image: redis:alpine
    restart: always
    ports:
    - "6379:6379"
  selenium-hub:
    image: selenium/hub:3.141.59-mercury
    container_name: selenium-hub
    ports:
      - "4444:4444"
  chrome:
    image: selenium/node-chrome:3.141.59-mercury
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
  firefox:
    image: selenium/node-firefox:3.141.59-mercury
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
volumes:
  mysql:
  testsets:
  botiumwork:

1 Ответ

0 голосов
/ 29 марта 2019

Возможности Botium отличаются от возможностей Webdriver (хотя это та же концепция).Возможности, переданные Selenium, заключены в возможности Botium WEBDRIVERIO_OPTIONS - botium.json выглядит примерно так:

{
  "botium": {
    "Capabilities": {
      "PROJECTNAME": "WebdriverIO Plugin Sample",
      "CONTAINERMODE": "webdriverio",
      "WEBDRIVERIO_OPTIONS": {  
        "desiredCapabilities": {
          "browserName": "chrome"      
        }
      },
      ...
    }
  }
}

Подробнее о настройке коннектора Webdriver см. В репозитории Github: https://github.com/codeforequity-at/botium-connector-webdriverio

Конфигурация в Botium Box похожа, вы можете импортировать туда botium.json или просто настраивать возможности построчно.

Обновление 2019/05/18

Как оказалось, описанное поведение представляет собой ошибку в Botium Box, которая будет исправлена ​​в следующем выпуске.Мы проделали некоторую работу по документированию того, как подключиться к вашей собственной Selenium Grid:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...