Селеновая сетка прослушивает порт узла вместо порта концентратора

Для моего теста я запускаю 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 баночка следующим образом:

  1. Начать Selenium Grid Hub (по умолчанию на порту 4444):

    java -jar selenium-server-standalone-3.6.0.jar -role hub
    
  2. Подтвердите 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
    
  3. Доступ к Selenium Grid Hub Console и обеспечить Selenium Grid Hub работает и работает:

    http://localhost:4444/grid/console
    
  4. Начать 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
    
  5. Подтвердите 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
    
  6. Выполнить с Testcase с DesiredCapabilities следующее:

    self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=caps)
    
  7. Наблюдайте журналы консоли, заканчивающиеся на следующем при успешном выполнении вашего 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 - все лучше.

Другие вопросы по тегам