Найти и щелкнуть мышью с непоследовательной капибарой в безголовом / нормальном режиме после обновления - PullRequest
0 голосов
/ 09 апреля 2020

Я обновил свой драйвер и гемы для Capybara для полностью протестированного приложения.

Впоследствии я заметил, что некоторые спецификации функций не работают, кажется, потому что элемент не на экране (он виден, но отсутствует прокрутки) в то время, когда вызывается click?

Так что теперь это происходит не в половине случаев в режиме без заголовка. Это потому, что его нет на экране, и его нужно прокрутить до?

  find("#am_departure_review button").click

Но если я сделаю это, это сработает:

Это новая конфигурация? Расхождение между драйверами (я перешел с chromedriver-helper на webdrivers)? Что-то еще мне не хватает?

Полагаю, это также может быть расхождение высоты окна, связанное с высотой окна в обычном режиме. Высота, которую я пытаюсь дать окну, кажется, не принимает в режиме без головы:

Capybara.register_driver :my_selenium_chrome_headless do |app|
  Capybara::Selenium::Driver.load_selenium
  browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
    opts.args << '--headless'
    opts.args << '--window-size=1380,5000'
    opts.args << '--disable-notifications'
    opts.args << '--disable-gpu' if Gem.win_platform?
    opts.args << '--disable-site-isolation-trials'
  end
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
end

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.load_selenium
  browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
    opts.args << '--window-size=1380,5000'
    opts.args << '--disable-notifications'
    opts.args << '--disable-gpu' if Gem.win_platform?
    opts.args << '--disable-site-isolation-trials'
  end
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
end



Capybara.server_port      = 57124
Capybara.save_path        = capybara_save_path
Capybara.default_max_wait_time = 5 #default is 2
Capybara.raise_server_errors = false

if ENV['CAPYBARA_DRIVER'] == 'headless' # CAPYBARA_DRIVER=headless rspec
  Capybara.javascript_driver = :my_selenium_chrome_headless
  Capybara.current_driver    = :my_selenium_chrome_headless
  Capybara.default_driver    = :my_selenium_chrome_headless
else
  Capybara.javascript_driver     = :selenium_chrome
  Capybara.current_driver        = :selenium_chrome
  Capybara.default_driver        = :selenium_chrome
end

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...