Selenium Grid перезапускается каждый раз, когда узел убит - PullRequest
0 голосов
/ 17 мая 2018

TL; DR;если узел в Selenium Grid умирает, Selenium Hub перезапускается.Почему?

Я использую Selenium Grid в Kubernetes, используя файл из https://github.com/kubernetes/examples/tree/master/staging/selenium.

Я заметил, что каждый раз, когда узел Chrome или Firefox уничтожается, потому что он достигает ресурсаКроме того, концентратор также перезагружается, отключая все остальные узлы на пару минут.Зачем?Это ожидаемое поведение?Я ожидал, что только узел будет отключен, но все остальные узлы будут доступны.

Это не относится к Kubernetes, так как я воспроизвел проблему также в Docker Swarm.Кроме того, это не является специфическим для версии Selenium, я воспроизвел ее с 3.7, 3.11 и последней 3.12.

На самом деле, довольно легко воспроизвести, просто запустите Grid, ограничив узлы 500 МБ, запустите их на Youtube, и в конце концов произойдет сбой.Когда это произойдет, вы не сможете получить доступ даже к консоли Grid, потому что она тоже вылетела.

Я заметил, что проблема возникает только при сбое узла.Если вы просто убьете узел (например, docker rm -f selenium-node-firefox-x62gxj), все в порядке, и он снова присоединится к Grid без каких-либо сбоев.

Ниже приведен соответствующий код, хотя я думаю, что это проблема непосредственно с Grid.

def get_driver(browser, selenium_grid):
    if browser == 'CHROME':
        options = webdriver.ChromeOptions()
        options.add_argument('--ignore-certificate-errors')
        options.add_argument('--autoplay-policy=no-user-gesture-required')
        capabilities = options.to_capabilities()
    else:
        capabilities = getattr(DesiredCapabilities, browser)
    return webdriver.Remote(
        command_executor=selenium_grid,
        desired_capabilities=capabilities
    )



driver = get_driver(browser, selenium_grid)
driver.get(channel_url)

channel_url - это ссылка на видео на YouTube.selenium_grid URL-адрес сетки и browser строка «CHROME» или «FIREFOX».

1 Ответ

0 голосов
/ 17 мая 2018

Хорошо, я получил свой ответ на канале #selenium в IRC.

Причина в следующем:

когда узел умирает, концентратор удаляет его, запрашивая его несколько раз и после отсутствия ответа это удаляет его. Пока это происходит, если вы получаете сетку консоль, она становится медленной (некоторые внутренние способы управления списком узлов, мы должен улучшить это) и так как это становится медленным, я представляю, что Тайм-аут livenessProbe так что, возможно, что убивает концентратор и приносит новый один

Эффективно увеличивает проверку здоровья, решает проблему.

...