Class: Selenium::WebDriver::Remote::Capabilities Private

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium/webdriver/remote/capabilities.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Specification of the desired and/or actual capabilities of the browser that the server is being asked to create.

Constant Summary collapse

DEFAULTS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

{
  :browser_name          => "",
  :version               => "",
  :platform              => :any,
  :javascript_enabled    => false,
  :css_selectors_enabled => false,
  :takes_screenshot      => false,
  :native_events         => false,
  :rotatable             => false,
  :firefox_profile       => nil,
  :proxy                 => nil
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Capabilities

Firefox-specific options:

Parameters:

  • :browser_name (Hash)

    a customizable set of options

  • :version (Hash)

    a customizable set of options

  • :platform (Hash)

    a customizable set of options

  • :javascript_enabled (Hash)

    a customizable set of options

  • :css_selectors_enabled (Hash)

    a customizable set of options

  • :takes_screenshot (Hash)

    a customizable set of options

  • :native_events (Hash)

    a customizable set of options

  • :proxy (Hash)

    a customizable set of options

  • :firefox_profile (Hash)

    a customizable set of options

[View source]

178
179
180
181
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 178

def initialize(opts = {})
  @capabilities = DEFAULTS.merge(opts)
  self.proxy    = opts.delete(:proxy)
end

Class Method Details

.android(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

44
45
46
47
48
49
50
51
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 44

def android(opts = {})
  new({
    :browser_name     => "android",
    :platform         => :android,
    :rotatable        => true,
    :takes_screenshot => true
  }.merge(opts))
end

.chrome(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

53
54
55
56
57
58
59
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 53

def chrome(opts = {})
  new({
    :browser_name          => "chrome",
    :javascript_enabled    => true,
    :css_selectors_enabled => true
  }.merge(opts))
end

.firefox(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

61
62
63
64
65
66
67
68
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 61

def firefox(opts = {})
  new({
    :browser_name          => "firefox",
    :javascript_enabled    => true,
    :takes_screenshot      => true,
    :css_selectors_enabled => true
  }.merge(opts))
end

.htmlunit(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

70
71
72
73
74
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 70

def htmlunit(opts = {})
  new({
    :browser_name => "htmlunit"
  }.merge(opts))
end

.htmlunitwithjs(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

76
77
78
79
80
81
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 76

def htmlunitwithjs(opts = {})
  new({
    :browser_name => "htmlunit",
    :javascript_enabled => true
  }.merge(opts))
end

.internet_explorer(opts = {}) ⇒ Object Also known as: ie

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

83
84
85
86
87
88
89
90
91
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 83

def internet_explorer(opts = {})
  new({
    :browser_name          => "internet explorer",
    :platform              => :windows,
    :takes_screenshot      => true,
    :css_selectors_enabled => true,
    :native_events         => true
  }.merge(opts))
end

.ipad(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

102
103
104
105
106
107
108
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 102

def ipad(opts = {})
  new({
    :browser_name       => "iPad",
    :platform           => :mac,
    :javascript_enabled => true
  }.merge(opts))
end

.iphone(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

94
95
96
97
98
99
100
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 94

def iphone(opts = {})
  new({
    :browser_name       => "iPhone",
    :platform           => :mac,
    :javascript_enabled => true
  }.merge(opts))
end

.json_create(data) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 141

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.has_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.has_key?('proxy')

  # any remaining pairs will be added as is, with no conversion
  caps.merge!(data)

  caps
end

.opera(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

110
111
112
113
114
115
116
117
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 110

def opera(opts = {})
  new({
    :browser_name          => "opera",
    :javascript_enabled    => true,
    :takes_screenshot      => true,
    :css_selectors_enabled => true
  }.merge(opts))
end

.phantomjs(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

119
120
121
122
123
124
125
126
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 119

def phantomjs(opts = {})
  new({
    :browser_name          => "phantomjs",
    :javascript_enabled    => true,
    :takes_screenshot      => true,
    :css_selectors_enabled => true
  }.merge(opts))
end

.safari(opts = {}) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

128
129
130
131
132
133
134
135
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 128

def safari(opts = {})
  new({
    :browser_name          => "safari",
    :javascript_enabled    => true,
    :takes_screenshot      => true,
    :css_selectors_enabled => true
  }.merge(opts))
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

246
247
248
249
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 246

def ==(other)
  return false unless other.kind_of? self.class
  as_json == other.as_json
end

#[](key) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

191
192
193
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 191

def [](key)
  @capabilities[key]
end

#[]=(key, value) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Allows setting arbitrary capabilities.

[View source]

187
188
189
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 187

def []=(key, value)
  @capabilities[key] = value
end

#as_json(opts = nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 219

def as_json(opts = nil)
  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

#merge!(other) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

195
196
197
198
199
200
201
202
203
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 195

def merge!(other)
  if other.respond_to?(:capabilities, true) && other.capabilities.kind_of?(Hash)
    @capabilities.merge! other.capabilities
  elsif other.kind_of? Hash
    @capabilities.merge! other
  else
    raise ArgumentError, "argument should be a Hash or implement #capabilities"
  end
end

#proxy=(proxy) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

205
206
207
208
209
210
211
212
213
214
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 205

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

#to_json(*args) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

[View source]

242
243
244
# File 'lib/selenium/webdriver/remote/capabilities.rb', line 242

def to_json(*args)
  WebDriver.json_dump as_json
end