Получить ReadTimeout с помощью веб-драйверов селена на Heroku - PullRequest
3 голосов
/ 13 января 2020

Я получаю следующую ошибку при использовании селеновых веб-драйверов на heroku. (rspe c -> капибара-> селен)

Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

У меня есть heroku-buildpack-google-chrome buildpack, с webdrivers-gem.

и следующий блок в spe c настройка:

chrome_shim = ENV.fetch("GOOGLE_CHROME_SHIM", nil)

Selenium::WebDriver::Chrome.path = chrome_shim

chrome_opts = { "chromeOptions" => { "binary" => chrome_shim } }

Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(
      app,
      browser: :chrome,
      desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(chrome_opts)
    )
end

Capybara.javascript_driver = :headless_chrome

Webdrivers.logger.level = :DEBUG выход здесь https://gist.github.com/IanVaughan/3e0c50d2fa4a60e672b96f6726fbbb8c

capybara (3.30.0)
webdrivers (4.2.0)
selenium-webdriver (3.142.7)

Полная трассировка стека: https://gist.github.com/IanVaughan/09b31613833d965ee4f3b7d1e48fd1e2

Спектр c Я бегу:

RSpec.feature 'User signup flow', :js do
  scenario 'Visits home page to signup' do
    visit root_path
    new_window = window_opened_by { click_link 'Sign Up', match: :first }
    within_window new_window do
      expect(page).to have_text('New Enquiry', wait: 5)
    end
  end

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Возможно, файлы cookie очищаются после 30 se c в режиме без головы

Добавьте это в chrome и попробуйте, если оно работает:)

--enable-features=NetworkService,NetworkServiceInProcess
0 голосов
/ 16 января 2020

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

Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(
      ...
      timeout: 60 # defaults to 30 IIRC
    )
end
...