Селеновая сетка прослушивает порт узла вместо порта концентратора
Для моего теста я запускаю grid и узел локально на разных портах.
java -jar /usr/bin/selenium-server.jar -port 4444 -role hub
java -jar /usr/bin/selenium-server.jar -role node -hub http://127.0.0.1:4444/grid/register -port 5556
Таким образом, сетка работает на 4444, а узел - на 5556.
В моем тесте, если я запускаю драйвер как
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=desired_capabilities)
тогда тест не пройден за исключением
response = {'status': 500, 'value': '{"status":13,"value":{"class":"java.lang.NullPointerException","stackTrace":[{"fileName":"Ha...n","lineNumber":590},{"fileName":"Thread.java","className":"java.lang.Thread","methodName":"run","lineNumber":745}]}}'}
Тест пройден, если я запускаю тест на порту узла 5555, а не на порту 4444 концентратора, как показано ниже
driver = webdriver.Remote(command_executor='http://127.0.0.1:5555/wd/hub', desired_capabilities=desired_capabilities)
Я придерживался мнения, что мы должны проводить тесты на порте концентратора, который в данном случае равен 4444, а не 5555.
Пожалуйста, поправьте меня, если я ошибаюсь.
3 ответа
Если вы собираетесь использовать Selenium
в Grid
конфигурация через Hub
а также Node
Конфигурация, я бы предложил вам использовать самые последние selenium-server-standalone-3.6.0
баночка следующим образом:
Начать
Selenium Grid Hub
(по умолчанию на порту 4444):java -jar selenium-server-standalone-3.6.0.jar -role hub
Подтвердите
Selenium Grid Hub
запускается:16:06:29.891 INFO - Nodes should register to http://192.168.1.48:4444/grid/register/ 16:06:29.891 INFO - Selenium Grid hub is up and running
Доступ к
Selenium Grid Hub Console
и обеспечитьSelenium Grid Hub
работает и работает:http://localhost:4444/grid/console
Начать
Selenium Grid Node
(по умолчанию на порту 5555) для Mozilla/GeckoDriver:java -Dwebdriver.gecko.driver=geckodriver.exe -jar selenium-server-standalone-3.6.0.jar -role node -hub http://localhost:4444/grid/register
Подтвердите
Selenium Grid Node
зарегистрирован и запущен:16:15:54.696 INFO - Selenium Grid node is up and ready to register to the hub 16:15:54.742 INFO - Starting auto registration thread. Will try to register every 5000 ms. 16:15:54.742 INFO - Registering the node to the hub: http://localhost:4444/grid/register 16:15:54.975 INFO - The node is registered to the hub and ready to use
Выполнить с
Testcase
сDesiredCapabilities
следующее:self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=caps)
Наблюдайте журналы консоли, заканчивающиеся на следующем при успешном выполнении вашего
Testcase
:16:23:50.590 INFO - Found handler: org.openqa.selenium.remote.server.ServicedSession@37ff9771 16:23:50.590 INFO - Handler thread for session 31a1dcb0-8bed-40fb-acdb-d5be19f03ba2 (firefox): Executing DELETE on /session/31a1dcb0-8bed-40fb-acdb-d5be19f03ba2 (handler: ServicedSession) 1506941630595 Marionette INFO New connections will no longer be accepted
Вы проходите desired_capabilities
который в основном является модулем для сервера, который не является правильным.
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=desired_capabilities)
Должно быть
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.FIREFOX)
Может быть шанс, что ваша предыдущая конфигурация Grid на порту 4444 не была закрыта должным образом. Вы просто если какой-либо процесс работает с портом 4444 и выключите его. Вы можете использовать приведенные ниже команды, чтобы узнать, какой процесс запущен, и чтобы остановить процесс.
C:\Users\username>netstat -o -n -a | findstr 0.0:4444
TCP 0.0.0.0:4444 0.0.0.0:0 LISTENING 3116
C:\Users\username>taskkill /F /PID 3116
Затем перенастроить Grid и запустить его может работать с портом 4444 - все лучше.