switch_to - timeout selenium ruby




Изменение размера окна браузера Capybara (4)

Итак, что касается тестирования интеграции с использованием Capybara и RSpec, я знаю, что могу это сделать:

page.driver.browser.manage.window.resize_to(x,y)

per. Как установить размер окна браузера в Rspec (Selenium) для конкретных тестов RSpec, но есть ли способ сделать это глобально, чтобы каждый тест, на который влияют медиа-запросы, не должен определять это?


@tirdadc, если вы используете Poltergeist, вы можете добавить что-то вроде этого в файл rails_helper.rb :

Capybara.register_driver :poltergeist do |app|
  options = {
    # js_errors: true,
    # cookies: true,
    window_size: [320, 568] # iphone 5
  }
  Capybara::Poltergeist::Driver.new(app, options)
end

Возможно, из-за недавнего изменения в Capybara, то, что сработало для меня, было:

before do
  Capybara.page.current_window.resize_to(x, y)
end

Для тестового исполнения в версии Capybara 2.2.4 вы можете добиться этого, выполнив

before do
  handle = Capybara.page.driver.current_window_handle
  Capybara.page.driver.resize_window_to(handle, height, width)
end

Или

before do   
  Capybara.page.current_window.resize_to(height, width)
end

Если вы получаете Capybara :: NotSupportedByDriverError: Capybara :: Driver :: Base # current_window_handle, ВЫ ДОЛЖНЫ ИЗМЕНИТЬ ВАШ ДРАЙВЕР ДЛЯ ПРИМЕРЫ ИСПОЛЬЗОВАТЬ JAVASCRIPT DRIVER !

before do   
  Capybara.page.current_window.resize_to(height, width)
end

scenario js: true do
  # your test here
end

Правильный способ сделать это для всех тестов js состоит в том, чтобы добавить следующий внутри RSpec.configure блок RSpec.configure

config.before(:each, js: true) do
  Capybara.page.driver.browser.manage.window.maximize
end

чтобы увеличить окно. Для изменения размера окна измените на resize_to(x,y) .

EDIT : Если вы используете Poltergeist, правильный способ сделать это

config.before(:each, js: true) do
  Capybara.page.driver.browser.resize(x,y)
end




capybara