Есть ли способ запросить мой сетевой концентратор (2.6.0), чтобы узнать, есть ли свободные слоты для конкретной желаемой возможности?
Пример:
Веб-страница Grid Hub по адресу
http://localhost:4444/grid/console
Правильно показывает, что 1 запрос должен ждать освобождения слота, чтобы тест мог продолжаться после завершения текущего:
Сетка Hub 2.6.0
Прослушивание WebDriverRemoteProxy на
http://192.168.3.15:5523/wd/hub
истечение времени сеанса тестирования через 300 с.
Поддерживает до 1 одновременных тестов
1 запрос, ожидающий освобождения слота.
- {платформа = ЛЮБАЯ, javascriptEnabled = истина, cssSelectorsEnabled = истина, browserName = firefox, nativeEvents = ложь, поворотный = ложь, принимаетScreenshot = истина, версия =}
просмотр конфигурации
Но концентратор вместо того, чтобы возвращать какое-то json-уведомление о том, что он должен удержаться и ждать, пока ничего не перенастраивается, и клиентское соединение может просто прерваться (в зависимости от используемой клиентской библиотеки http).
Я использую привязки ruby, но могу воспроизвести ошибку с помощью простого curl, выполнив следующие действия:
Шаг 1. Настройка концентратора и узла сервера:
Настройка My Hub (на сервере Ubuntu)
java -jar selenium-server-standalone.jar -role hub
Настройка My Node (на компьютере с Windows XP):
java -jar selenium-server-standalone.jar -role webdriver -hub $HUBURL -port 5522 -maxSession 1 -browser "maxInstances=1,browserName=firefox"
Обратите внимание, что maxSession и maxInstances специально установлены в 1, чтобы легко воспроизвести проблему.
Шаг 2. Запустите длительный тест, чтобы занять первый и единственный доступный слот
(ради примера)
Шаг 3. Эмулируйте выполнение другого теста с помощью этого запроса curl:
curl -L --max-redirs 20 -v -i -H "Accept: application/json" -X POST http://localhost:4444/wd/hub/session -d '{"desiredCapabilities":{"javascriptEnabled":false,"version":"","rotatable":false,"takesScreenshot":true,"cssSelectorsEnabled":true,"browserName":"firefox","nativeEvents":false,"platform":"ANY"}}'
Результат:
Соединение оставлено на удержании, серверное сообщение не указывает, что происходит, сообщение json, сообщающее, что вы ожидаете освобождения слота, должно это сделать.
В некоторых библиотеках http это просто время ожидания, как в настоящее время на ruby gem 'selenium-webdriver' <= 2.6.0 </strong>
Поэтому мне нужен способ запрашивать, есть ли свободные слоты (для конкретной желаемой возможности), чтобы избежать ошибки тайм-аута клиента.
Я проверил JsonWireProtocol, но не смог найти путь для запроса этой информации.
JsonWireProtocol