Selenium GRID — сеанс завершен из-за тайм-аута менее чем через 100 миллисекунд при вызове WebDriver.getCurrentUrl()

#selenium #selenium-webdriver #selenium-grid

#селен #selenium-webdriver #selenium-grid

Вопрос:

У меня есть набор параллельных тестов, у которых никогда не возникает этой проблемы, когда я запускаю их локально. Это происходит только в моей крошечной сетке с двумя узлами. Мои тесты довольно постоянно выходят из строя, когда я пытаюсь вызвать WebDriver.getCurrentUrl() . Сообщение об ошибке выглядит следующим образом:

 org.openqa.selenium.WebDriverException: Session [035e8f79-fdd7-4492-a565-f803df792d3c] was terminated due to TIMEOUT
Command duration or timeout: 90 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'bos-mpky6', ip: '172.30.31.59', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_102'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=46.0.1, platform=LINUX, nativeEvents=false, acceptSslCerts=true, webdriver.remote.sessionid=035e8f79-fdd7-4492-a565-f803df792d3c, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 035e8f79-fdd7-4492-a565-f803df792d3c

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:701)
    at org.openqa.selenium.remote.RemoteWebDriver.getCurrentUrl(RemoteWebDriver.java:326)
  

Сначала я подумал, что это проблема конфигурации, но я настроил свою установку так, чтобы время ожидания a было намного больше, чем несколько миллисекунд. Вот конфигурация, которую я использую для концентратора:

 {
  "host": null,
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "prioritizer": null,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,
  "cleanUpCycle": 5000,
  "timeout": 300000,
  "browserTimeout": 0,
  "jettyMaxThreads":-1
}
  

Вот конфигурация, которую я использую для обоих моих узлов:

 {
   "capabilities":
   [
      {
         "browserName": "firefox",
         "version": "46.0.1",
         "platform": "LINUX",
         "maxInstances": 5
      }
   ],
   "configuration":
   {
       "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
       "nodeTimeout":500000,
       "port":5555,
       "nodePolling":2000,
       "registerCycle":10000,
       "register":true,
       "cleanUpCycle":2000,
       "timeout":500000
   }
}
  

Я не использую Docker или что-то в этом роде. Я пробовал версии 2.53.1, 2.53.0, 2.52.0 и 2.51.0 сервера grid, и проблема продолжает беспокоить мои тесты. Могу ли я что-нибудь сделать, чтобы избавиться от этой проблемы? Я не могу найти параметр конфигурации, связанный с тайм-аутами, который, кажется, избавляет от этого.

Ответ №1:

У меня была такая же ошибка, когда я настраивал свойства timeout и browserTimeout . Мое решение состояло в том, чтобы вернуть конфигурацию концентратора к умолчанию. Но у вас уже есть то же самое, что и у меня сейчас.

НО я заметил небольшую разницу в конфигурации вашего узла. Я использую Windows 7 в качестве узла, и это моя конфигурация:

 {
  "capabilities": [
    {
      "browserName": "firefox",
      "maxInstances": 2,
      "takesScreenshot": true,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "internet explorer",
      "maxInstances": 1,
      "version": "11",
      "webdriver.ie.driver": "<MOUNT>SeleniumIEDriverServer_2.53.1_32bit",
      "takesScreenshot": true,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    }
  ],
  "configuration": {
    "_comment" : "Configuration for Node",
    "cleanUpCycle":5000,
    "timeout": 500,
    "port": 8088,
    "hubHost": V0001172,
    "register": true,
    "hubPort": 8089,
    "maxSession": 1
  }
}
  

Я добавил seleniumProtocol в конфигурацию моего узла. Я не могу вспомнить, где я это нашел, но в моей настройке это работает.

Комментарии:

1. Я добавил seleniumProtocol в свои конфигурации для своих узлов, и я больше не вижу этой проблемы, поэтому я принимаю это как ответ.