Rails: увеличить Selenium:: WebDriver timeout до более чем 45 секунд, скажем, 150 секунд?

Введите описание изображения здесьЯ использую WebDriver gems в моем приложении Rils:

gem 'selenium-webdriver', '~> 2.46.2'
gem 'watir-webdriver', '~> 0.6.11'
gem 'watir-webdriver-performance', "~> 0.2.4"

Примерно раз или два в день я получаю следующую ошибку в производстве, я понимаю, что это связано с тем, ‘WebDriver использует порт 7054 («locking port») в качестве мьютекса, чтобы гарантировать, что мы не запускаем два экземпляра Firefox одновременно’.

Selenium::WebDriver::Error::WebDriverError: unable to bind to locking port 7054 within 45 seconds

Есть ли способ увеличить время ожидания webdriver, чтобы сказать 150 секунд? Или любой другой обходной путь?

спасибо,
Грэг

1 ответ

  1. 45 секунд определяется в константе Selenium::WebDriver::Firefox::Launcherкласса. Ruby давайте вы переопределите константы, так что вы можете изменить значение с помощью const_set:

    Selenium::WebDriver::Firefox::Launcher.const_set('SOCKET_LOCK_TIMEOUT', 150)
    

    Обратите внимание, что это даст вам предупреждение о переопределении константы. Если вы хотите избежать предупреждения, сначала необходимо удалить константу:

    Selenium::WebDriver::Firefox::Launcher.send(:remove_const, 'SOCKET_LOCK_TIMEOUT')
    Selenium::WebDriver::Firefox::Launcher.const_set('SOCKET_LOCK_TIMEOUT', 150)
    

    (Хотя это позволит вам изменить тайм-аут, я не уверен, что это решит вашу фактическую проблему.)