Selenium: сессия externalKey недоступна - PullRequest
0 голосов
/ 23 декабря 2018

Selenium Grid Hub, который я запускаю, отображает это сообщение об ошибке всякий раз, когда тест автоматизации Robot Framework (запускаемый заданием Jenkins) запрашивает браузер Chrome из концентратора:

Session [(null externalkey))] недоступен и не входит в число последних 1000 завершенных сеансов.

Я часами искал и пробовал предлагаемые решения без удачи.

Запуск сервера Linux в качестве SeleniumGrid Hub и сервер Windows как узел сети Selenium.Пробовал каждый узел с версиями 3.0.1, 3.5.3, 3.13.0 и 3.141.59 из файлов selenium-server-standalone-<version>.jar.Третий сервер работает под управлением Jenkins.

Похоже, что концентратор настроен должным образом, поскольку он работает нормально:

http://10.1.10.231:4444/grid/console

Я также запустил файлы jar по адресукомандная строка с -debug в конце, но дополнительная информация не отображается.Также пробовали -Dselenium.LOGGER.level=WARNING на «стороне java» командной строки, не отображая никакой дополнительной информации, кроме как с помощью -debug.

У нас есть другой набор серверов с такой же конфигурацией, который работает просто отлично.

Кто-нибудь имеет представление о том, что указывает это сообщение?


Далее следует Nitty-gritty.

Hrid Hub:

java -jar -Xms1024m -Xmx2048m selenium-server-standalone-3.141.59.jar -role hub -hubConfig ./hub-config.json

hub-config.json:

{
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "cleanUpCycle": 5000,
  "role": "hub",
  "debug": false,
  "browserTimeout": 360,
  "timeout": 1800
}

Узел сетки:

SET CHROMEDRIVER=.\bin\chromedriver_win32-v2.37\chromedriver.exe
SET IEDRIVER=.\bin\IEDriverServer.exe
SET FFDRIVER=.\bin\geckodriver-v0.11.1-win32\geckodriver.exe

START "SeleniumNode" java -Xms1024m -Xmx2048m ^
    -Dwebdriver.gecko.driver=%FFDRIVER% ^
    -Dwebdriver.ie.driver=%IEDRIVER% ^
    -Dwebdriver.chrome.driver=%CHROMEDRIVER% -Dwebdriver.chrome.args="--disable-extensions" ^
    -jar .\bin\selenium-server-standalone-3.141.59.jar -role node -nodeConfig .\node-config.json

node-config.json:

{
  "capabilities":
  [
    {
      "browserName": "firefox",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "internet explorer",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": 5555,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://10.1.10.231:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "browserTimeout": 0,
  "timeout": 1800,
  "cleanUpCycle": 2000
}

1 Ответ

0 голосов
/ 27 декабря 2018

понял это!Надеемся, что это поможет другим, которые сообщили об этом сообщении об ошибке и не получили решения.

Как чаще всего бывает с такой проблемой, особенно когда рядом с неработающим экземпляром есть известная рабочая установка, онабыла (смущающе) глупая проблема конфигурации.Тесты роботов указывали на этот URL, чтобы получить браузер:

http://10.1.10.75:4444/wd/hub/static/resource/hub.html

, и он должен был указывать на этот путь:

http://10.1.10.75:4444/wd/hub

По крайней мере, это было легко исправить.

...