class Selenium::WebDriver::Remote::Capabilities
server is being asked to create.
Specification of the desired and/or actual capabilities of the browser that the
def ==(other)
def ==(other) return false unless other.is_a? self.class as_json == other.as_json end
def [](key)
def [](key) @capabilities[key] end
def []=(key, value)
def []=(key, value) @capabilities[key] = value end
def as_json(*)
def as_json(*) hash = {} @capabilities.each do |key, value| case key when :platform hash['platform'] = value.to_s.upcase when :firefox_profile hash['firefox_profile'] = value.as_json['zip'] if value when :proxy hash['proxy'] = value.as_json if value when String, :firefox_binary hash[key.to_s] = value when Symbol hash[camel_case(key.to_s)] = value else raise TypeError, "expected String or Symbol, got #{key.inspect}:#{key.class} / #{value.inspect}" end end hash end
def camel_case(str)
def camel_case(str) str.gsub(/_([a-z])/) { Regexp.last_match(1).upcase } end
def chrome(opts = {})
def chrome(opts = {}) new({ browser_name: 'chrome', javascript_enabled: true, css_selectors_enabled: true }.merge(opts)) end
def edge(opts = {})
def edge(opts = {}) new({ browser_name: 'MicrosoftEdge', platform: :windows, javascript_enabled: true, takes_screenshot: true, css_selectors_enabled: true }.merge(opts)) end
def firefox(opts = {})
def firefox(opts = {}) new({ browser_name: 'firefox', javascript_enabled: true, takes_screenshot: true, css_selectors_enabled: true }.merge(opts)) end
def htmlunit(opts = {})
def htmlunit(opts = {}) new({ browser_name: 'htmlunit' }.merge(opts)) end
def htmlunitwithjs(opts = {})
def htmlunitwithjs(opts = {}) new({ browser_name: 'htmlunit', javascript_enabled: true }.merge(opts)) end
def initialize(opts = {})
def initialize(opts = {}) @capabilities = DEFAULTS.merge(opts) self.proxy = opts.delete(:proxy) end
def internet_explorer(opts = {})
def internet_explorer(opts = {}) new({ browser_name: 'internet explorer', platform: :windows, takes_screenshot: true, css_selectors_enabled: true, native_events: true }.merge(opts)) end
def json_create(data)
def json_create(data) data = data.dup caps = new caps.browser_name = data.delete('browserName') caps.version = data.delete('version') caps.platform = data.delete('platform').downcase.to_sym if data.key?('platform') caps.javascript_enabled = data.delete('javascriptEnabled') caps.css_selectors_enabled = data.delete('cssSelectorsEnabled') caps.takes_screenshot = data.delete('takesScreenshot') caps.native_events = data.delete('nativeEvents') caps.rotatable = data.delete('rotatable') caps.proxy = Proxy.json_create(data['proxy']) if data.key?('proxy') && !data['proxy'].empty? # any remaining pairs will be added as is, with no conversion caps.merge!(data) caps end
def merge!(other)
def merge!(other) if other.respond_to?(:capabilities, true) && other.capabilities.is_a?(Hash) @capabilities.merge! other.capabilities elsif other.is_a? Hash @capabilities.merge! other else raise ArgumentError, 'argument should be a Hash or implement #capabilities' end end
def phantomjs(opts = {})
def phantomjs(opts = {}) new({ browser_name: 'phantomjs', javascript_enabled: true, takes_screenshot: true, css_selectors_enabled: true }.merge(opts)) end
def proxy=(proxy)
def proxy=(proxy) case proxy when Hash @capabilities[:proxy] = Proxy.new(proxy) when Proxy, nil @capabilities[:proxy] = proxy else raise TypeError, "expected Hash or #{Proxy.name}, got #{proxy.inspect}:#{proxy.class}" end end
def safari(opts = {})
def safari(opts = {}) new({ browser_name: 'safari', platform: :mac, javascript_enabled: true, takes_screenshot: true, css_selectors_enabled: true }.merge(opts)) end
def to_json(*)
def to_json(*) JSON.generate as_json end