Skip to content

Commit

Permalink
[rb] initialize all of the drivers in superclass
Browse files Browse the repository at this point in the history
  • Loading branch information
titusfortner committed Jul 18, 2019
1 parent b31f2e0 commit ccd7460
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 120 deletions.
16 changes: 0 additions & 16 deletions rb/lib/selenium/webdriver/chrome/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,6 @@ class Driver < WebDriver::Driver
include DriverExtensions::TakesScreenshot
include DriverExtensions::DownloadsFiles

def initialize(opts = {})
opts[:desired_capabilities] ||= Remote::Capabilities.send(browser)

opts[:url] ||= service_url(opts)

listener = opts.delete(:listener)
desired_capabilities = opts.delete(:desired_capabilities)
options = opts.delete(:options)

@bridge = Remote::Bridge.new(opts)
@bridge.extend Bridge
@bridge.create_session(desired_capabilities, options)

super(@bridge, listener: listener)
end

def browser
:chrome
end
Expand Down
32 changes: 29 additions & 3 deletions rb/lib/selenium/webdriver/common/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,10 @@ def for(browser, opts = {})
# @api private
#

def initialize(bridge, listener: nil)
def initialize(bridge: nil, listener: nil, **opts)
@service = nil
@bridge = bridge
@bridge = Support::EventFiringBridge.new(bridge, listener) if listener
bridge ||= create_bridge(opts)
@bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge
end

def inspect
Expand Down Expand Up @@ -294,6 +294,32 @@ def ref; end

attr_reader :bridge

def create_bridge(**opts)
opts[:url] ||= service_url(opts)

default_caps = @bridge&.browser || :new
desired_capabilities = opts.delete(:desired_capabilities) || Remote::Capabilities.send(default_caps)
if desired_capabilities.is_a?(Symbol)
unless Remote::Capabilities.respond_to?(desired_capabilities)
raise Error::WebDriverError, "invalid desired capability: #{desired_capabilities.inspect}"
end

desired_capabilities = Remote::Capabilities.__send__(desired_capabilities)
end

options = opts.delete(:options)

bridge = Remote::Bridge.new(opts)
namespacing = self.class.to_s.split('::')

if Object.const_defined?("#{namespacing[0..-2].join('::')}::Bridge") && !namespacing.include?('Remote')
bridge.extend Object.const_get("#{namespacing[0, namespacing.length - 1].join('::')}::Bridge")
end

bridge.create_session(desired_capabilities, options)
bridge
end

def service_url(opts)
@service = opts.delete(:service)
%i[driver_opts driver_path port].each do |key|
Expand Down
14 changes: 0 additions & 14 deletions rb/lib/selenium/webdriver/edge_html/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,6 @@ class Driver < WebDriver::Driver
include DriverExtensions::HasWebStorage
include DriverExtensions::TakesScreenshot

def initialize(opts = {})
opts[:desired_capabilities] ||= Remote::Capabilities.edge

opts[:url] ||= service_url(opts)

listener = opts.delete(:listener)
desired_capabilities = opts.delete(:desired_capabilities)

@bridge = Remote::Bridge.new(opts)
@bridge.create_session(desired_capabilities)

super(@bridge, listener: listener)
end

def browser
:edge
end
Expand Down
16 changes: 0 additions & 16 deletions rb/lib/selenium/webdriver/firefox/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,22 +31,6 @@ class Driver < WebDriver::Driver
include DriverExtensions::HasWebStorage
include DriverExtensions::TakesScreenshot

def initialize(opts = {})
opts[:desired_capabilities] ||= Remote::Capabilities.firefox

opts[:url] ||= service_url(opts)

listener = opts.delete(:listener)
desired_capabilities = opts.delete(:desired_capabilities)
options = opts.delete(:options)

@bridge = Remote::Bridge.new(opts)
@bridge.extend Bridge
@bridge.create_session(desired_capabilities, options)

super(@bridge, listener: listener)
end

def browser
:firefox
end
Expand Down
15 changes: 0 additions & 15 deletions rb/lib/selenium/webdriver/ie/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,6 @@ class Driver < WebDriver::Driver
include DriverExtensions::HasWebStorage
include DriverExtensions::TakesScreenshot

def initialize(opts = {})
opts[:desired_capabilities] ||= Remote::Capabilities.internet_explorer

opts[:url] ||= service_url(opts)

listener = opts.delete(:listener)
desired_capabilities = opts.delete(:desired_capabilities)
options = opts.delete(:options)

@bridge = Remote::Bridge.new(opts)
@bridge.create_session(desired_capabilities, options)

super(@bridge, listener: listener)
end

def browser
:internet_explorer
end
Expand Down
25 changes: 6 additions & 19 deletions rb/lib/selenium/webdriver/remote/bridge.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,30 +30,17 @@ class Bridge

#
# Initializes the bridge with the given server URL
# @param [Hash] opts options for the driver
# @option opts [String] :url url for the remote server
# @option opts [Object] :http_client an HTTP client instance that implements the same protocol as Http::Default
# @option opts [Capabilities] :desired_capabilities an instance of Remote::Capabilities describing the capabilities you want
# @param [String, URI] :url url for the remote server
# @param [Object] :http_client an HTTP client instance that implements the same protocol as Http::Default
# @api private
#

def initialize(opts = {})
opts = opts.dup

http_client = opts.delete(:http_client) { Http::Default.new }
url = opts.delete(:url) { "http://#{Platform.localhost}:#{PORT}/wd/hub" }
opts.delete(:options)

unless opts.empty?
raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}"
end

uri = url.is_a?(URI) ? url : URI.parse(url)
def initialize(http_client: nil, url: nil)
uri = url.is_a?(URI) ? url : URI.parse(url || "http://#{Platform.localhost}:#{PORT}/wd/hub")
uri.path += '/' unless %r{\/$}.match?(uri.path)

http_client.server_url = uri

@http = http_client
@http = http_client || Http::Default.new
@http.server_url = uri
@file_detector = nil
end

Expand Down
19 changes: 0 additions & 19 deletions rb/lib/selenium/webdriver/remote/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,6 @@ class Driver < WebDriver::Driver
include DriverExtensions::Rotatable
include DriverExtensions::HasRemoteStatus
include DriverExtensions::HasWebStorage

def initialize(opts = {})
listener = opts.delete(:listener)
desired_capabilities = opts.delete(:desired_capabilities) { Capabilities.new }

if desired_capabilities.is_a?(Symbol)
unless Capabilities.respond_to?(desired_capabilities)
raise Error::WebDriverError, "invalid desired capability: #{desired_capabilities.inspect}"
end

desired_capabilities = Capabilities.__send__(desired_capabilities)
end

@bridge = Bridge.new(opts)
@bridge.create_session(desired_capabilities, opts.delete(:options))

super(@bridge, listener: listener)
end

end # Driver
end # Remote
end # WebDriver
Expand Down
16 changes: 0 additions & 16 deletions rb/lib/selenium/webdriver/safari/driver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,6 @@ class Driver < WebDriver::Driver
include DriverExtensions::HasWebStorage
include DriverExtensions::TakesScreenshot

def initialize(opts = {})
opts[:desired_capabilities] ||= Remote::Capabilities.safari

opts[:url] ||= service_url(opts)

listener = opts.delete(:listener)
desired_capabilities = opts.delete(:desired_capabilities)
options = opts.delete(:options)

@bridge = Remote::Bridge.new(opts)
@bridge.extend Bridge
@bridge.create_session(desired_capabilities, options)

super(@bridge, listener: listener)
end

def browser
:safari
end
Expand Down
2 changes: 1 addition & 1 deletion rb/lib/selenium/webdriver/support/event_firing_bridge.rb
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def create_element(ref)
end

def driver
@driver ||= Driver.new(self)
@driver ||= Driver.new(bridge: self)
end

def dispatch(name, *args)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ module Support
let(:bridge) { instance_double(Remote::Bridge) }
let(:listener) { instance_double('EventListener') }
let(:event_firing_bridge) { EventFiringBridge.new(bridge, listener) }
let(:driver) { Driver.new(event_firing_bridge) }
let(:driver) { Driver.new(bridge: event_firing_bridge) }
let(:element) { Element.new(event_firing_bridge, 'ref') }

context 'navigation' do
Expand Down

0 comments on commit ccd7460

Please sign in to comment.