Я обновил свой драйвер и гемы для 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