selenium-webdriver 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,5 +1,21 @@
1
+ 0.1.4 (2011-03-21)
2
+ ===========
3
+
4
+ * Support for Firefox 4.
5
+ * Search PATH for Firefox / Chrome on OS X as well.
6
+ * Bump dependencies for ffi and childprocess (#1356).
7
+ * Find module renamed to SearchContext
8
+ * Deprecated methods Driver#hover and Options#{speed,speed=} removed.
9
+ * Improve IE driver stability, IE9 support
10
+ * Added basic ActionBuilder and HasInputDevices#action. Not applicable for all browsers.
11
+ * Added Driver#execute_async_script
12
+ * Some WebDriver exception classes have been renamed to match its Java equivalents:
13
+ ElementNotEnabledError -> InvalidElementStateError
14
+ UnknownScriptResultError -> XpathLookupError
15
+ * Fix bug where Element#disabled? would alternate between true/false (r11438)
16
+
1
17
  0.1.3 (2011-02-14)
2
- ============
18
+ ==================
3
19
 
4
20
  * Several crashing bugs fixed in the IE driver.
5
21
  * Alert API available through the remote driver.
@@ -18,7 +34,7 @@
18
34
 
19
35
 
20
36
  0.1.2 (2010-12-22)
21
- ============
37
+ ==================
22
38
 
23
39
  * Changed frame switching behaviour (http://groups.google.com/group/selenium-developers/browse_thread/thread/8dc7938c35bb3968)
24
40
  * IE driver rewrite landed.
@@ -37,22 +37,6 @@ module Selenium
37
37
  @launcher.quit
38
38
  end
39
39
 
40
- def setSpeed(value)
41
- @speed = value
42
- end
43
-
44
- def getSpeed
45
- @speed
46
- end
47
-
48
- def findElementByCssSelector(parent, selector)
49
- find_element_by 'css', selector, parent
50
- end
51
-
52
- def findElementsByCssSelector(parent, selector)
53
- find_elements_by 'css', selector, parent
54
- end
55
-
56
40
  def getAllCookies
57
41
  execute :getCookies
58
42
  end
@@ -135,7 +135,8 @@ module Selenium
135
135
  def macosx_paths
136
136
  [
137
137
  "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
138
- "#{Platform.home}/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
138
+ "#{Platform.home}/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
139
+ Platform.find_binary("Google Chrome")
139
140
  ]
140
141
  end
141
142
 
@@ -14,7 +14,8 @@ require "selenium/webdriver/common/target_locator"
14
14
  require "selenium/webdriver/common/navigation"
15
15
  require "selenium/webdriver/common/timeouts"
16
16
  require "selenium/webdriver/common/options"
17
- require "selenium/webdriver/common/find"
17
+ require "selenium/webdriver/common/search_context"
18
+ require "selenium/webdriver/common/action_builder"
18
19
  require "selenium/webdriver/common/driver_extensions/takes_screenshot"
19
20
  require "selenium/webdriver/common/driver_extensions/rotatable"
20
21
  require "selenium/webdriver/common/driver_extensions/has_input_devices"
@@ -0,0 +1,97 @@
1
+ module Selenium
2
+ module WebDriver
3
+ class ActionBuilder
4
+
5
+ def initialize(mouse, keyboard)
6
+ @devices = {
7
+ :mouse => mouse,
8
+ :keyboard => keyboard
9
+ }
10
+
11
+ @actions = []
12
+ end
13
+
14
+ def key_down(*args)
15
+ if args.first.kind_of? Element
16
+ @actions << [:mouse, :click, args.shift]
17
+ end
18
+
19
+ @actions << [:keyboard, :press, args]
20
+ self
21
+ end
22
+
23
+ def key_up(*args)
24
+ if args.first.kind_of? Element
25
+ @actions << [:mouse, :click, args.shift]
26
+ end
27
+
28
+ @actions << [:keyboard, :release, args]
29
+ self
30
+ end
31
+
32
+ def send_keys(*args)
33
+ if args.first.kind_of? Element
34
+ @actions << [:mouse, :click, args.shift]
35
+ end
36
+
37
+ @actions << [:keyboard, :send_keys, args]
38
+ self
39
+ end
40
+
41
+ def click_and_hold(element)
42
+ @actions << [:mouse, :down, element]
43
+ self
44
+ end
45
+
46
+ def release(element = nil)
47
+ @actions << [:mouse, :up, element]
48
+ self
49
+ end
50
+
51
+ def click(element = nil)
52
+ @actions << [:mouse, :click, element]
53
+ self
54
+ end
55
+
56
+ def double_click(element = nil)
57
+ @actions << [:mouse, :double_click, element]
58
+ self
59
+ end
60
+
61
+ def move_to(element, down_by = nil, right_by = nil)
62
+ if down_by && right_by
63
+ @actions << [:mouse, :move_to, element, down_by, right_by]
64
+ else
65
+ @actions << [:mouse, :move_to, element]
66
+ end
67
+
68
+ self
69
+ end
70
+
71
+ def move_by(down_by, right_by)
72
+ @actions << [:mouse, :move_by, down_by, right_by]
73
+ self
74
+ end
75
+
76
+ def context_click(element = nil)
77
+ @actions << [:mouse, :context_click, element]
78
+ self
79
+ end
80
+
81
+ def drag_and_drop(source, target)
82
+ click_and_hold source
83
+ move_to target
84
+ release target
85
+
86
+ self
87
+ end
88
+
89
+ def perform
90
+ @actions.each { |receiver, method, args|
91
+ @devices.fetch(receiver).__send__(method, *args)
92
+ }
93
+ end
94
+
95
+ end # ActionBuilder
96
+ end # WebDriver
97
+ end # Selenium
@@ -4,14 +4,14 @@ module Selenium
4
4
  #
5
5
  # The main class through which you control the browser.
6
6
  #
7
- # @see Find
7
+ # @see SearchContext
8
8
  # @see Navigation
9
9
  # @see TargetLocator
10
10
  # @see Options
11
11
  #
12
12
 
13
13
  class Driver
14
- include Find
14
+ include SearchContext
15
15
 
16
16
  class << self
17
17
 
@@ -201,6 +201,26 @@ module Selenium
201
201
  bridge.executeScript(script, *args)
202
202
  end
203
203
 
204
+ # Execute an asynchronous piece of JavaScript in the context of the
205
+ # currently selected frame or window. Unlike executing
206
+ # execute_script (synchronous JavaScript), scripts
207
+ # executed with this method must explicitly signal they are finished by
208
+ # invoking the provided callback. This callback is always injected into the
209
+ # executed function as the last argument.
210
+ #
211
+ # @param [String] script
212
+ # JavaSCript source to execute
213
+ # @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] *args
214
+ # Arguments to the script. May be empty.
215
+ #
216
+ # @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
217
+ #
218
+
219
+ def execute_async_script(script, *args)
220
+ bridge.executeAsyncScript(script, *args)
221
+ end
222
+
223
+
204
224
  #-------------------------------- sugar --------------------------------
205
225
 
206
226
  #
@@ -242,10 +262,9 @@ module Selenium
242
262
  end
243
263
 
244
264
 
245
- #
246
- # for Find
247
265
  #
248
266
  # @api private
267
+ # @see SearchContext
249
268
  #
250
269
 
251
270
  def ref
@@ -8,10 +8,22 @@ module Selenium
8
8
  module DriverExtensions
9
9
  module HasInputDevices
10
10
 
11
+ def action
12
+ ActionBuilder.new mouse, keyboard
13
+ end
14
+
15
+ #
16
+ # @api private
17
+ #
18
+
11
19
  def mouse
12
20
  Mouse.new @bridge
13
21
  end
14
22
 
23
+ #
24
+ # @api private
25
+ #
26
+
15
27
  def keyboard
16
28
  Keyboard.new @bridge
17
29
  end
@@ -1,7 +1,7 @@
1
1
  module Selenium
2
2
  module WebDriver
3
3
  class Element
4
- include Find
4
+ include SearchContext
5
5
 
6
6
  attr_reader :bridge
7
7
 
@@ -25,7 +25,7 @@ module Selenium
25
25
  alias_method :eql?, :==
26
26
 
27
27
  def hash
28
- ref.hash
28
+ @id.hash ^ @bridge.hash
29
29
  end
30
30
 
31
31
  #
@@ -195,14 +195,6 @@ module Selenium
195
195
  bridge.getElementValueOfCssProperty @id, prop
196
196
  end
197
197
 
198
- #
199
- # Hover over this element. Not applicable to all browsers.
200
- #
201
-
202
- def hover
203
- bridge.hoverOverElement @id
204
- end
205
-
206
198
  #
207
199
  # Get the location of this element.
208
200
  #
@@ -282,7 +274,7 @@ module Selenium
282
274
  alias_method :[], :attribute
283
275
 
284
276
  #
285
- # for Find and execute_script
277
+ # for SearchContext and execute_script
286
278
  #
287
279
  # @api private
288
280
  #
@@ -3,31 +3,35 @@ module Selenium
3
3
  module Error
4
4
 
5
5
  class WebDriverError < StandardError; end
6
- class IndexOutOfBoundsError < WebDriverError; end # 1
7
- class NoCollectionError < WebDriverError; end # 2
8
- class NoStringError < WebDriverError; end # 3
9
- class NoStringLengthError < WebDriverError; end # 4
10
- class NoStringWrapperError < WebDriverError; end # 5
11
- class NoSuchDriverError < WebDriverError; end # 6
12
- class NoSuchElementError < WebDriverError; end # 7
13
- class NoSuchFrameError < WebDriverError; end # 8
14
- class UnknownCommandError < WebDriverError; end # 9
15
- class ObsoleteElementError < WebDriverError; end # 10
16
- class ElementNotDisplayedError < WebDriverError; end # 11
17
- class ElementNotEnabledError < WebDriverError; end # 12
18
- class UnhandledError < WebDriverError; end # 13
19
- class ExpectedError < WebDriverError; end # 14
20
- class ElementNotSelectableError < WebDriverError; end # 15
21
- class NoSuchDocumentError < WebDriverError; end # 16
22
- class UnexpectedJavascriptError < WebDriverError; end # 17
23
- class NoScriptResultError < WebDriverError; end # 18
24
- class UnknownScriptResultError < WebDriverError; end # 19
25
- class NoSuchCollectionError < WebDriverError; end # 20
26
- class TimeOutError < WebDriverError; end # 21
27
- class NullPointerError < WebDriverError; end # 22
28
- class NoSuchWindowError < WebDriverError; end # 23
29
- class InvalidCookieDomainError < WebDriverError; end # 24
30
- class UnableToSetCookieError < WebDriverError; end # 25
6
+ class IndexOutOfBoundsError < WebDriverError; end # 1
7
+ class NoCollectionError < WebDriverError; end # 2
8
+ class NoStringError < WebDriverError; end # 3
9
+ class NoStringLengthError < WebDriverError; end # 4
10
+ class NoStringWrapperError < WebDriverError; end # 5
11
+ class NoSuchDriverError < WebDriverError; end # 6
12
+ class NoSuchElementError < WebDriverError; end # 7
13
+ class NoSuchFrameError < WebDriverError; end # 8
14
+ class UnknownCommandError < WebDriverError; end # 9
15
+ class ObsoleteElementError < WebDriverError; end # 10
16
+ class ElementNotDisplayedError < WebDriverError; end # 11
17
+ class InvalidElementStateError < WebDriverError; end # 12
18
+ class UnhandledError < WebDriverError; end # 13
19
+ class ExpectedError < WebDriverError; end # 14
20
+ class ElementNotSelectableError < WebDriverError; end # 15
21
+ class NoSuchDocumentError < WebDriverError; end # 16
22
+ class UnexpectedJavascriptError < WebDriverError; end # 17
23
+ class NoScriptResultError < WebDriverError; end # 18
24
+ class XPathLookupError < WebDriverError; end # 19
25
+ class NoSuchCollectionError < WebDriverError; end # 20
26
+ class TimeOutError < WebDriverError; end # 21
27
+ class NullPointerError < WebDriverError; end # 22
28
+ class NoSuchWindowError < WebDriverError; end # 23
29
+ class InvalidCookieDomainError < WebDriverError; end # 24
30
+ class UnableToSetCookieError < WebDriverError; end # 25
31
+ # 26
32
+ # 27
33
+ # TimeOutError # 28
34
+ class InvalidElementCoordinatesError < WebDriverError; end # 29
31
35
  class UnsupportedOperationError < WebDriverError; end
32
36
 
33
37
  Errors = [
@@ -42,20 +46,24 @@ module Selenium
42
46
  UnknownCommandError,
43
47
  ObsoleteElementError,
44
48
  ElementNotDisplayedError,
45
- ElementNotEnabledError,
49
+ InvalidElementStateError,
46
50
  UnhandledError,
47
51
  ExpectedError,
48
52
  ElementNotSelectableError,
49
53
  NoSuchDocumentError,
50
54
  UnexpectedJavascriptError,
51
55
  NoScriptResultError,
52
- UnknownScriptResultError,
56
+ XPathLookupError,
53
57
  NoSuchCollectionError,
54
58
  TimeOutError,
55
59
  NullPointerError,
56
60
  NoSuchWindowError,
57
61
  InvalidCookieDomainError,
58
- UnableToSetCookieError
62
+ UnableToSetCookieError,
63
+ nil, # not used
64
+ nil, # not used
65
+ TimeOutError, # repeated.
66
+ InvalidElementCoordinatesError
59
67
  ]
60
68
 
61
69
  class << self
@@ -1,5 +1,7 @@
1
1
  module Selenium
2
2
  module WebDriver
3
+
4
+ # @api private
3
5
  class Keyboard
4
6
 
5
7
  def initialize(bridge)
@@ -1,5 +1,7 @@
1
1
  module Selenium
2
2
  module WebDriver
3
+
4
+ # @api private
3
5
  class Mouse
4
6
 
5
7
  def initialize(bridge)
@@ -86,14 +86,6 @@ module Selenium
86
86
  end
87
87
  end
88
88
 
89
- def speed
90
- @bridge.getSpeed.downcase.to_sym
91
- end
92
-
93
- def speed=(speed)
94
- @bridge.setSpeed(speed.to_s.upcase)
95
- end
96
-
97
89
  def timeouts
98
90
  @timeouts ||= Timeouts.new(@bridge)
99
91
  end
@@ -1,6 +1,6 @@
1
1
  module Selenium
2
2
  module WebDriver
3
- module Find
3
+ module SearchContext
4
4
 
5
5
  FINDERS = {
6
6
  :class => 'ClassName',
@@ -47,7 +47,7 @@ module Selenium
47
47
  #
48
48
  # Find all elements matching the given arguments
49
49
  #
50
- # @see Find#find_element
50
+ # @see SearchContext#find_element
51
51
  #
52
52
  # @param [:class, :class_name, :id, :link_text, :link, :partial_link_text, :name, :tag_name, :xpath] how
53
53
  # @param [String] what
@@ -90,6 +90,6 @@ module Selenium
90
90
  end
91
91
  end
92
92
 
93
- end # Find
93
+ end # SearchContext
94
94
  end # WebDriver
95
95
  end # Selenium
@@ -27,7 +27,9 @@ module Selenium
27
27
 
28
28
  def self.zip(path)
29
29
  # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8
30
- Dir.mktmpdir { |tmp_dir|
30
+ # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082
31
+ tmp_dir = Dir.mktmpdir
32
+ begin
31
33
  zip_path = File.join(tmp_dir, "webdriver-zip")
32
34
 
33
35
  Zip::ZipFile.open(zip_path, Zip::ZipFile::CREATE) { |zip|
@@ -40,7 +42,9 @@ module Selenium
40
42
  }
41
43
 
42
44
  File.open(zip_path, "rb") { |io| Base64.encode64 io.read }
43
- }
45
+ ensure
46
+ FileUtils.rm_rf tmp_dir
47
+ end
44
48
  end
45
49
 
46
50
  end # Zipper
@@ -45,7 +45,7 @@ module Selenium
45
45
  private
46
46
 
47
47
  def execute(*extra_args)
48
- args = [self.class.path, "-no-remote", "--verbose"] + extra_args
48
+ args = [self.class.path, "-no-remote"] + extra_args
49
49
  @process = ChildProcess.build(*args)
50
50
  @process.io.inherit! if $DEBUG
51
51
  @process.start
@@ -100,7 +100,7 @@ module Selenium
100
100
  def path
101
101
  @path ||= case Platform.os
102
102
  when :macosx
103
- "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
103
+ macosx_path
104
104
  when :windows
105
105
  windows_path
106
106
  when :linux, :unix
@@ -124,6 +124,13 @@ module Selenium
124
124
  windows_registry_path || likely_windows_path || Platform.find_binary("firefox")
125
125
  end
126
126
 
127
+ def macosx_path
128
+ path = "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
129
+ path = Platform.find_binary("firefox-bin") unless File.exist?(path)
130
+
131
+ path
132
+ end
133
+
127
134
  def windows_registry_path
128
135
  require "win32/registry"
129
136
 
@@ -88,12 +88,16 @@ module Selenium
88
88
  data = JSON.parse(json).fetch('zip')
89
89
 
90
90
  # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8
91
- Dir.mktmpdir { |tmp_dir|
91
+ # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082
92
+ tmp_dir = Dir.mktmpdir
93
+ begin
92
94
  zip_path = File.join(tmp_dir, "webdriver-profile-duplicate-#{json.hash}")
93
95
  File.open(zip_path, "wb") { |zip_file| zip_file << Base64.decode64(data) }
94
96
 
95
97
  new Zipper.unzip(zip_path)
96
- }
98
+ ensure
99
+ FileUtils.rm_rf tmp_dir
100
+ end
97
101
  end
98
102
 
99
103
  #
@@ -319,6 +323,7 @@ module Selenium
319
323
  "extensions.update.notifyUser" => 'false',
320
324
  "network.manage-offline-status" => 'false',
321
325
  "network.http.max-connections-per-server" => '10',
326
+ "prompts.tab_modal.enabled" => "false",
322
327
  "security.warn_entering_secure" => 'false',
323
328
  "security.warn_submit_insecure" => 'false',
324
329
  "security.warn_entering_secure.show_once" => 'false',
@@ -1,5 +1,3 @@
1
- require "fcntl"
2
-
3
1
  module Selenium
4
2
  module WebDriver
5
3
  module Firefox
@@ -11,7 +11,6 @@ module Selenium
11
11
  #
12
12
 
13
13
  class Bridge
14
- include Find
15
14
  include BridgeHelper
16
15
 
17
16
  #
@@ -195,27 +194,24 @@ module Selenium
195
194
  execute :getCurrentWindowHandle
196
195
  end
197
196
 
198
- def setSpeed(value)
199
- execute :setSpeed, {}, :speed => value
200
- end
201
-
202
- def getSpeed
203
- execute :getSpeed
204
- end
205
-
206
197
  def getScreenshot
207
198
  execute :screenshot
208
199
  end
209
200
 
210
201
  def executeScript(script, *args)
211
- unless capabilities.javascript_enabled?
212
- raise Error::UnsupportedOperationError, "underlying webdriver instance does not support javascript"
213
- end
202
+ assert_javascript_enabled
214
203
 
215
204
  result = execute :executeScript, {}, :script => script, :args => args
216
205
  unwrap_script_result result
217
206
  end
218
207
 
208
+ def executeAsyncScript(script, *args)
209
+ assert_javascript_enabled
210
+
211
+ result = execute :executeAsyncScript, {}, :script => script, :args => args
212
+ unwrap_script_result result
213
+ end
214
+
219
215
  def addCookie(cookie)
220
216
  execute :addCookie, {}, :cookie => cookie
221
217
  end
@@ -411,10 +407,6 @@ module Selenium
411
407
  end
412
408
  alias_method :switchToActiveElement, :getActiveElement
413
409
 
414
- def hoverOverElement(element)
415
- execute :hoverOverElement, :id => element
416
- end
417
-
418
410
  def dragElement(element, rigth_by, down_by)
419
411
  execute :dragElement, {:id => element}, :x => rigth_by, :y => down_by
420
412
  end
@@ -445,6 +437,11 @@ module Selenium
445
437
  ids.map { |id| Element.new self, element_id_from(id) }
446
438
  end
447
439
 
440
+ def assert_javascript_enabled
441
+ unless capabilities.javascript_enabled?
442
+ raise Error::UnsupportedOperationError, "underlying webdriver instance does not support javascript"
443
+ end
444
+ end
448
445
 
449
446
  #
450
447
  # executes a command on the remote server via the REST / JSON API.
@@ -22,11 +22,10 @@ class Selenium::WebDriver::Remote::Bridge
22
22
  command :goBack, :post, "session/:session_id/back"
23
23
  command :refresh, :post, "session/:session_id/refresh"
24
24
  command :executeScript, :post, "session/:session_id/execute"
25
+ command :executeAsyncScript, :post, "session/:session_id/execute_async"
25
26
  command :screenshot, :get, "session/:session_id/screenshot"
26
27
  command :switchToFrame, :post, "session/:session_id/frame"
27
28
  command :switchToWindow, :post, "session/:session_id/window"
28
- command :getSpeed, :get, "session/:session_id/speed"
29
- command :setSpeed, :post, "session/:session_id/speed"
30
29
  command :getAllCookies, :get, "session/:session_id/cookie"
31
30
  command :addCookie, :post, "session/:session_id/cookie"
32
31
  command :deleteAllCookies, :delete, "session/:session_id/cookie"
@@ -55,7 +54,6 @@ class Selenium::WebDriver::Remote::Bridge
55
54
  command :getElementLocation, :get, "session/:session_id/element/:id/location"
56
55
  command :getElementLocationOnceScrolledIntoView, :get, "session/:session_id/element/:id/location_in_view"
57
56
  command :getElementSize, :get, "session/:session_id/element/:id/size"
58
- command :hoverOverElement, :post, "session/:session_id/element/:id/hover"
59
57
  command :dragElement, :post, "session/:session_id/element/:id/drag"
60
58
  command :getElementValueOfCssProperty, :get, "session/:session_id/element/:id/css/:property_name"
61
59
  command :close, :delete, "session/:session_id/window"
@@ -54,6 +54,8 @@ module Selenium
54
54
  return unless server_trace = @payload['value']['stackTrace']
55
55
 
56
56
  backtrace = server_trace.map do |frame|
57
+ next unless frame.kind_of?(Hash)
58
+
57
59
  file = frame['fileName']
58
60
  line = frame['lineNumber']
59
61
  meth = frame['methodName']
@@ -62,8 +64,12 @@ module Selenium
62
64
  file = "#{class_name}(#{file})"
63
65
  end
64
66
 
67
+ if meth.nil? || meth.empty?
68
+ meth = 'unknown'
69
+ end
70
+
65
71
  "[remote server] #{file}:#{line}:in `#{meth}'"
66
- end
72
+ end.compact
67
73
 
68
74
  ex.set_backtrace(backtrace + ex.backtrace)
69
75
  end
metadata CHANGED
@@ -2,94 +2,94 @@
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.3
5
+ version: 0.1.4
6
6
  platform: ruby
7
7
  authors:
8
- - Jari Bakken
8
+ - Jari Bakken
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-14 00:00:00 +01:00
13
+ date: 2011-03-21 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: json_pure
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
25
- type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: rubyzip
29
- prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0"
36
- type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: childprocess
40
- prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ~>
45
- - !ruby/object:Gem::Version
46
- version: 0.1.5
47
- type: :runtime
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: ffi
51
- prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ~>
56
- - !ruby/object:Gem::Version
57
- version: 0.6.3
58
- type: :runtime
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: rspec
62
- prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: "2.0"
69
- type: :development
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: rack
73
- prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - ~>
78
- - !ruby/object:Gem::Version
79
- version: "1.0"
80
- type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
83
- name: ci_reporter
84
- prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - ~>
89
- - !ruby/object:Gem::Version
90
- version: 1.6.2
91
- type: :development
92
- version_requirements: *id007
16
+ - !ruby/object:Gem::Dependency
17
+ name: json_pure
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubyzip
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: childprocess
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.1.7
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: ffi
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 1.0.7
58
+ type: :runtime
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: rspec
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: "2.0"
69
+ type: :development
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: rack
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: "1.0"
80
+ type: :development
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: ci_reporter
84
+ prerelease: false
85
+ requirement: &id007 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: 1.6.2
91
+ type: :development
92
+ version_requirements: *id007
93
93
  description: WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.
94
94
  email: jari.bakken@gmail.com
95
95
  executables: []
@@ -99,86 +99,87 @@ extensions: []
99
99
  extra_rdoc_files: []
100
100
 
101
101
  files:
102
- - lib/selenium-client.rb
103
- - lib/selenium-webdriver.rb
104
- - lib/selenium/client.rb
105
- - lib/selenium/server.rb
106
- - lib/selenium/webdriver.rb
107
- - lib/selenium/client/base.rb
108
- - lib/selenium/client/driver.rb
109
- - lib/selenium/client/errors.rb
110
- - lib/selenium/client/extensions.rb
111
- - lib/selenium/client/idiomatic.rb
112
- - lib/selenium/client/javascript_expression_builder.rb
113
- - lib/selenium/client/legacy_driver.rb
114
- - lib/selenium/client/protocol.rb
115
- - lib/selenium/client/selenium_helper.rb
116
- - lib/selenium/client/javascript_frameworks/jquery.rb
117
- - lib/selenium/client/javascript_frameworks/prototype.rb
118
- - lib/selenium/rake/server_task.rb
119
- - lib/selenium/webdriver/android.rb
120
- - lib/selenium/webdriver/chrome.rb
121
- - lib/selenium/webdriver/common.rb
122
- - lib/selenium/webdriver/firefox.rb
123
- - lib/selenium/webdriver/ie.rb
124
- - lib/selenium/webdriver/iphone.rb
125
- - lib/selenium/webdriver/remote.rb
126
- - lib/selenium/webdriver/android/bridge.rb
127
- - lib/selenium/webdriver/chrome/bridge.rb
128
- - lib/selenium/webdriver/chrome/command_executor.rb
129
- - lib/selenium/webdriver/chrome/extension.zip
130
- - lib/selenium/webdriver/chrome/launcher.rb
131
- - lib/selenium/webdriver/common/alert.rb
132
- - lib/selenium/webdriver/common/bridge_helper.rb
133
- - lib/selenium/webdriver/common/driver.rb
134
- - lib/selenium/webdriver/common/element.rb
135
- - lib/selenium/webdriver/common/error.rb
136
- - lib/selenium/webdriver/common/file_reaper.rb
137
- - lib/selenium/webdriver/common/find.rb
138
- - lib/selenium/webdriver/common/keyboard.rb
139
- - lib/selenium/webdriver/common/keys.rb
140
- - lib/selenium/webdriver/common/mouse.rb
141
- - lib/selenium/webdriver/common/navigation.rb
142
- - lib/selenium/webdriver/common/options.rb
143
- - lib/selenium/webdriver/common/platform.rb
144
- - lib/selenium/webdriver/common/proxy.rb
145
- - lib/selenium/webdriver/common/socket_poller.rb
146
- - lib/selenium/webdriver/common/target_locator.rb
147
- - lib/selenium/webdriver/common/timeouts.rb
148
- - lib/selenium/webdriver/common/wait.rb
149
- - lib/selenium/webdriver/common/zipper.rb
150
- - lib/selenium/webdriver/common/core_ext/dir.rb
151
- - lib/selenium/webdriver/common/core_ext/string.rb
152
- - lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb
153
- - lib/selenium/webdriver/common/driver_extensions/rotatable.rb
154
- - lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb
155
- - lib/selenium/webdriver/firefox/binary.rb
156
- - lib/selenium/webdriver/firefox/bridge.rb
157
- - lib/selenium/webdriver/firefox/extension.rb
158
- - lib/selenium/webdriver/firefox/launcher.rb
159
- - lib/selenium/webdriver/firefox/profile.rb
160
- - lib/selenium/webdriver/firefox/profiles_ini.rb
161
- - lib/selenium/webdriver/firefox/socket_lock.rb
162
- - lib/selenium/webdriver/firefox/util.rb
163
- - lib/selenium/webdriver/firefox/extension/webdriver.xpi
164
- - lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so
165
- - lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so
166
- - lib/selenium/webdriver/ie/bridge.rb
167
- - lib/selenium/webdriver/ie/server.rb
168
- - lib/selenium/webdriver/ie/native/win32/IEDriver.dll
169
- - lib/selenium/webdriver/ie/native/x64/IEDriver.dll
170
- - lib/selenium/webdriver/iphone/bridge.rb
171
- - lib/selenium/webdriver/remote/bridge.rb
172
- - lib/selenium/webdriver/remote/capabilities.rb
173
- - lib/selenium/webdriver/remote/commands.rb
174
- - lib/selenium/webdriver/remote/response.rb
175
- - lib/selenium/webdriver/remote/server_error.rb
176
- - lib/selenium/webdriver/remote/http/common.rb
177
- - lib/selenium/webdriver/remote/http/curb.rb
178
- - lib/selenium/webdriver/remote/http/default.rb
179
- - lib/selenium/webdriver/remote/http/persistent.rb
180
- - CHANGES
181
- - README
102
+ - lib/selenium/client/base.rb
103
+ - lib/selenium/client/driver.rb
104
+ - lib/selenium/client/errors.rb
105
+ - lib/selenium/client/extensions.rb
106
+ - lib/selenium/client/idiomatic.rb
107
+ - lib/selenium/client/javascript_expression_builder.rb
108
+ - lib/selenium/client/javascript_frameworks/jquery.rb
109
+ - lib/selenium/client/javascript_frameworks/prototype.rb
110
+ - lib/selenium/client/legacy_driver.rb
111
+ - lib/selenium/client/protocol.rb
112
+ - lib/selenium/client/selenium_helper.rb
113
+ - lib/selenium/client.rb
114
+ - lib/selenium/rake/server_task.rb
115
+ - lib/selenium/server.rb
116
+ - lib/selenium/webdriver/android/bridge.rb
117
+ - lib/selenium/webdriver/android.rb
118
+ - lib/selenium/webdriver/chrome/bridge.rb
119
+ - lib/selenium/webdriver/chrome/command_executor.rb
120
+ - lib/selenium/webdriver/chrome/extension.zip
121
+ - lib/selenium/webdriver/chrome/launcher.rb
122
+ - lib/selenium/webdriver/chrome.rb
123
+ - lib/selenium/webdriver/common/action_builder.rb
124
+ - lib/selenium/webdriver/common/alert.rb
125
+ - lib/selenium/webdriver/common/bridge_helper.rb
126
+ - lib/selenium/webdriver/common/core_ext/dir.rb
127
+ - lib/selenium/webdriver/common/core_ext/string.rb
128
+ - lib/selenium/webdriver/common/driver.rb
129
+ - lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb
130
+ - lib/selenium/webdriver/common/driver_extensions/rotatable.rb
131
+ - lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb
132
+ - lib/selenium/webdriver/common/element.rb
133
+ - lib/selenium/webdriver/common/error.rb
134
+ - lib/selenium/webdriver/common/file_reaper.rb
135
+ - lib/selenium/webdriver/common/keyboard.rb
136
+ - lib/selenium/webdriver/common/keys.rb
137
+ - lib/selenium/webdriver/common/mouse.rb
138
+ - lib/selenium/webdriver/common/navigation.rb
139
+ - lib/selenium/webdriver/common/options.rb
140
+ - lib/selenium/webdriver/common/platform.rb
141
+ - lib/selenium/webdriver/common/proxy.rb
142
+ - lib/selenium/webdriver/common/search_context.rb
143
+ - lib/selenium/webdriver/common/socket_poller.rb
144
+ - lib/selenium/webdriver/common/target_locator.rb
145
+ - lib/selenium/webdriver/common/timeouts.rb
146
+ - lib/selenium/webdriver/common/wait.rb
147
+ - lib/selenium/webdriver/common/zipper.rb
148
+ - lib/selenium/webdriver/common.rb
149
+ - lib/selenium/webdriver/firefox/binary.rb
150
+ - lib/selenium/webdriver/firefox/bridge.rb
151
+ - lib/selenium/webdriver/firefox/extension/webdriver.xpi
152
+ - lib/selenium/webdriver/firefox/extension.rb
153
+ - lib/selenium/webdriver/firefox/launcher.rb
154
+ - lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so
155
+ - lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so
156
+ - lib/selenium/webdriver/firefox/profile.rb
157
+ - lib/selenium/webdriver/firefox/profiles_ini.rb
158
+ - lib/selenium/webdriver/firefox/socket_lock.rb
159
+ - lib/selenium/webdriver/firefox/util.rb
160
+ - lib/selenium/webdriver/firefox.rb
161
+ - lib/selenium/webdriver/ie/bridge.rb
162
+ - lib/selenium/webdriver/ie/native/win32/IEDriver.dll
163
+ - lib/selenium/webdriver/ie/native/x64/IEDriver.dll
164
+ - lib/selenium/webdriver/ie/server.rb
165
+ - lib/selenium/webdriver/ie.rb
166
+ - lib/selenium/webdriver/iphone/bridge.rb
167
+ - lib/selenium/webdriver/iphone.rb
168
+ - lib/selenium/webdriver/remote/bridge.rb
169
+ - lib/selenium/webdriver/remote/capabilities.rb
170
+ - lib/selenium/webdriver/remote/commands.rb
171
+ - lib/selenium/webdriver/remote/http/common.rb
172
+ - lib/selenium/webdriver/remote/http/curb.rb
173
+ - lib/selenium/webdriver/remote/http/default.rb
174
+ - lib/selenium/webdriver/remote/http/persistent.rb
175
+ - lib/selenium/webdriver/remote/response.rb
176
+ - lib/selenium/webdriver/remote/server_error.rb
177
+ - lib/selenium/webdriver/remote.rb
178
+ - lib/selenium/webdriver.rb
179
+ - lib/selenium-client.rb
180
+ - lib/selenium-webdriver.rb
181
+ - CHANGES
182
+ - README
182
183
  has_rdoc: true
183
184
  homepage: http://selenium.googlecode.com
184
185
  licenses: []
@@ -187,23 +188,23 @@ post_install_message:
187
188
  rdoc_options: []
188
189
 
189
190
  require_paths:
190
- - lib
191
+ - lib
191
192
  required_ruby_version: !ruby/object:Gem::Requirement
192
193
  none: false
193
194
  requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- version: "0"
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: "0"
197
198
  required_rubygems_version: !ruby/object:Gem::Requirement
198
199
  none: false
199
200
  requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: "0"
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: "0"
203
204
  requirements: []
204
205
 
205
206
  rubyforge_project:
206
- rubygems_version: 1.4.1
207
+ rubygems_version: 1.5.2
207
208
  signing_key:
208
209
  specification_version: 3
209
210
  summary: The next generation developer focused tool for automated testing of webapps