1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00
teamcapybara--capybara/lib/capybara/selenium/driver_specializations/chrome_driver.rb
2018-08-21 10:21:24 -07:00

43 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require 'capybara/selenium/nodes/chrome_node'
module Capybara::Selenium::Driver::ChromeDriver
def fullscreen_window(handle)
within_given_window(handle) do
begin
super
rescue NoMethodError => err
raise unless err.message =~ /full_screen_window/
bridge = browser.send(:bridge)
result = bridge.http.call(:post, "session/#{bridge.session_id}/window/fullscreen", {})
result['value']
end
end
end
def resize_window_to(handle, width, height)
super
rescue Selenium::WebDriver::Error::UnknownError => err
raise unless err.message =~ /failed to change window state/
# Chromedriver doesn't wait long enough for state to change when coming out of fullscreen
# and raises unnecessary error. Wait a bit and try again.
sleep 0.5
super
end
def reset!
# Use instance variable directly so we avoid starting the browser just to reset the session
return unless @browser
switch_to_window(window_handles.first)
window_handles.slice(1..-1).each { |win| close_window(win) }
super
end
private
def build_node(native_node)
::Capybara::Selenium::ChromeNode.new(self, native_node)
end
end