selenium-webdriver 0.0.28 → 0.0.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/CHANGES +25 -0
  2. data/lib/selenium/webdriver.rb +6 -29
  3. data/lib/selenium/webdriver/chrome.rb +4 -2
  4. data/lib/selenium/webdriver/chrome/extension.zip +0 -0
  5. data/lib/selenium/webdriver/chrome/launcher.rb +15 -16
  6. data/lib/selenium/webdriver/common.rb +18 -0
  7. data/lib/selenium/webdriver/{bridge_helper.rb → common/bridge_helper.rb} +0 -0
  8. data/lib/selenium/webdriver/{core_ext → common/core_ext}/dir.rb +0 -0
  9. data/lib/selenium/webdriver/{core_ext → common/core_ext}/string.rb +0 -0
  10. data/lib/selenium/webdriver/{driver.rb → common/driver.rb} +19 -7
  11. data/lib/selenium/webdriver/{driver_extensions → common/driver_extensions}/takes_screenshot.rb +2 -2
  12. data/lib/selenium/webdriver/{element.rb → common/element.rb} +30 -3
  13. data/lib/selenium/webdriver/{error.rb → common/error.rb} +0 -0
  14. data/lib/selenium/webdriver/{file_reaper.rb → common/file_reaper.rb} +0 -0
  15. data/lib/selenium/webdriver/{find.rb → common/find.rb} +9 -1
  16. data/lib/selenium/webdriver/{keys.rb → common/keys.rb} +0 -0
  17. data/lib/selenium/webdriver/{navigation.rb → common/navigation.rb} +3 -3
  18. data/lib/selenium/webdriver/{options.rb → common/options.rb} +47 -5
  19. data/lib/selenium/webdriver/{platform.rb → common/platform.rb} +10 -0
  20. data/lib/selenium/webdriver/common/socket_poller.rb +47 -0
  21. data/lib/selenium/webdriver/{target_locator.rb → common/target_locator.rb} +11 -8
  22. data/lib/selenium/webdriver/{timeouts.rb → common/timeouts.rb} +0 -0
  23. data/lib/selenium/webdriver/common/wait.rb +60 -0
  24. data/lib/selenium/webdriver/common/zipper.rb +54 -0
  25. data/lib/selenium/webdriver/firefox.rb +6 -3
  26. data/lib/selenium/webdriver/firefox/binary.rb +46 -43
  27. data/lib/selenium/webdriver/firefox/bridge.rb +2 -10
  28. data/lib/selenium/webdriver/firefox/extension.rb +51 -0
  29. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  30. data/lib/selenium/webdriver/firefox/launcher.rb +25 -69
  31. data/lib/selenium/webdriver/firefox/profile.rb +123 -89
  32. data/lib/selenium/webdriver/firefox/profiles_ini.rb +2 -1
  33. data/lib/selenium/webdriver/firefox/socket_lock.rb +77 -0
  34. data/lib/selenium/webdriver/ie/bridge.rb +25 -38
  35. data/lib/selenium/webdriver/ie/lib.rb +11 -1
  36. data/lib/selenium/webdriver/ie/native/win32/InternetExplorerDriver.dll +0 -0
  37. data/lib/selenium/webdriver/ie/native/x64/InternetExplorerDriver.dll +0 -0
  38. data/lib/selenium/webdriver/ie/util.rb +3 -17
  39. data/lib/selenium/webdriver/remote/bridge.rb +9 -1
  40. data/lib/selenium/webdriver/remote/capabilities.rb +53 -20
  41. data/lib/selenium/webdriver/remote/http/default.rb +2 -2
  42. metadata +52 -31
  43. data/lib/selenium/webdriver/child_process.rb +0 -243
  44. data/lib/selenium/webdriver/zip_helper.rb +0 -27
@@ -68,8 +68,6 @@ module Selenium
68
68
  check_error_code Lib.wdGetVisible(@driver_pointer, int_ptr), "unable to determine if browser is visible"
69
69
 
70
70
  int_ptr.get_int(0) == 1
71
- ensure
72
- int_ptr.free
73
71
  end
74
72
 
75
73
  def setBrowserVisible(bool)
@@ -111,12 +109,11 @@ module Selenium
111
109
  rescue Error::NoSuchWindowError
112
110
  end
113
111
  end
114
-
115
- # hack
116
- ObjectSpace.each_object(WebDriver::Element) { |e| finalize e.ref if e.bridge == self }
117
112
  ensure
118
- Lib.wdFreeDriver(@driver_pointer)
113
+ ptr = @driver_pointer
119
114
  @driver_pointer = nil
115
+
116
+ check_error_code Lib.wdFreeDriver(ptr), "unable to free driver #{self}"
120
117
  end
121
118
 
122
119
  def close
@@ -133,7 +130,6 @@ module Selenium
133
130
  "unable to obtain all window handles"
134
131
 
135
132
  string_array_from(raw_handles).uniq
136
- # TODO: who calls raw_handles.free if exception is raised?
137
133
  end
138
134
 
139
135
  def getCurrentWindowHandle
@@ -160,8 +156,6 @@ module Selenium
160
156
 
161
157
  extract_return_value script_result_ref
162
158
  ensure
163
- script_args_ref.free
164
- script_result_ref.free if script_result_ref
165
159
  Lib.wdFreeScriptArgs(args_pointer) if args_pointer
166
160
  end
167
161
 
@@ -223,8 +217,6 @@ module Selenium
223
217
  #
224
218
 
225
219
  def findElementByClassName(parent, class_name)
226
- # TODO: argument checks
227
-
228
220
  create_element do |raw_element|
229
221
  check_error_code Lib.wdFindElementByClassName(@driver_pointer, parent, wstring_ptr(class_name), raw_element),
230
222
  "unable to find element by class name using #{class_name.inspect}"
@@ -232,14 +224,26 @@ module Selenium
232
224
  end
233
225
 
234
226
  def findElementsByClassName(parent, class_name)
235
- # TODO: argument checks
236
-
237
227
  create_element_collection do |raw_elements|
238
228
  check_error_code Lib.wdFindElementsByClassName(@driver_pointer, parent, wstring_ptr(class_name), raw_elements),
239
229
  "unable to find elements by class name using #{class_name.inspect}"
240
230
  end
241
231
  end
242
232
 
233
+ def findElementByCssSelector(parent, selector)
234
+ create_element do |raw_element|
235
+ check_error_code Lib.wdFindElementByCss(@driver_pointer, parent, wstring_ptr(selector), raw_element),
236
+ "unable to find element by css selector using #{selector.inspect}"
237
+ end
238
+ end
239
+
240
+ def findElementsByCssSelector(parent, selector)
241
+ create_element_collection do |raw_elements|
242
+ check_error_code Lib.wdFindElementsByCss(@driver_pointer, parent, wstring_ptr(selector), raw_elements),
243
+ "unable to find elements by css selector using #{selector.inspect}"
244
+ end
245
+ end
246
+
243
247
  def findElementById(parent, id)
244
248
  create_element do |raw_element|
245
249
  check_error_code Lib.wdFindElementById(@driver_pointer, parent, wstring_ptr(id), raw_element),
@@ -379,8 +383,6 @@ module Selenium
379
383
  "unable to get enabled state"
380
384
 
381
385
  int_ptr.get_int(0) == 1
382
- ensure
383
- int_ptr.free
384
386
  end
385
387
 
386
388
  def isElementSelected(element_pointer)
@@ -389,8 +391,6 @@ module Selenium
389
391
  "unable to get selected state"
390
392
 
391
393
  int_ptr.get_int(0) == 1
392
- ensure
393
- int_ptr.free
394
394
  end
395
395
 
396
396
  def isElementDisplayed(element_pointer)
@@ -398,8 +398,6 @@ module Selenium
398
398
  check_error_code Lib.wdeIsDisplayed(element_pointer, int_ptr), "unable to check visibilty"
399
399
 
400
400
  int_ptr.get_int(0) == 1;
401
- ensure
402
- int_ptr.free
403
401
  end
404
402
 
405
403
  def submitElement(element_pointer)
@@ -418,8 +416,6 @@ module Selenium
418
416
  check_error_code result, "unable to toggle element"
419
417
 
420
418
  int_ptr.get_int(0) == 1
421
- ensure
422
- int_ptr.free
423
419
  end
424
420
 
425
421
  def setElementSelected(element_pointer)
@@ -457,8 +453,6 @@ module Selenium
457
453
 
458
454
  Lib.wdeMouseMoveTo(hwnd.get_pointer(0), duration, x.get_long(0), y.get_long(0), destination_x, destination_y)
459
455
  Lib.wdeMouseUpAt(hwnd.get_pointer(0), destination_x, destination_y)
460
- ensure
461
- [hwnd, x, y, width, height].each { |pointer| pointer.free }
462
456
  end
463
457
 
464
458
  def getElementLocation(element_pointer)
@@ -468,9 +462,6 @@ module Selenium
468
462
  check_error_code Lib.wdeGetLocation(element_pointer, x, y), "unable to get location of element"
469
463
 
470
464
  Point.new x.get_int(0), y.get_int(0)
471
- ensure
472
- x.free
473
- y.free
474
465
  end
475
466
 
476
467
  def getElementSize(element_pointer)
@@ -480,9 +471,6 @@ module Selenium
480
471
  check_error_code Lib.wdeGetSize(element_pointer, width, height), "unable to get size of element"
481
472
 
482
473
  Dimension.new width.get_int(0), height.get_int(0)
483
- ensure
484
- width.free
485
- height.free
486
474
  end
487
475
 
488
476
  def finalize(element_pointer)
@@ -518,10 +506,9 @@ module Selenium
518
506
 
519
507
  def extract_return_value(pointer_ref)
520
508
  result, returned = nil
521
- pointers_to_free = []
522
509
  script_result = pointer_ref.get_pointer(0)
523
510
 
524
- pointers_to_free << type_pointer = FFI::MemoryPointer.new(:int)
511
+ type_pointer = FFI::MemoryPointer.new(:int)
525
512
  result = Lib.wdGetScriptResultType(@driver_pointer, script_result, type_pointer)
526
513
 
527
514
  check_error_code result, "Cannot determine result type"
@@ -533,23 +520,24 @@ module Selenium
533
520
  check_error_code Lib.wdGetStringScriptResult(script_result, wrapper), "Cannot extract string result"
534
521
  end
535
522
  when 2 # Long
536
- pointers_to_free << long_pointer = FFI::MemoryPointer.new(:long)
523
+ long_pointer = FFI::MemoryPointer.new(:long)
537
524
  check_error_code Lib.wdGetNumberScriptResult(script_result, long_pointer),
538
525
  "Cannot extract number result"
539
526
 
540
527
  long_pointer.get_long(0)
541
528
  when 3 # Boolean
542
- pointers_to_free << int_pointer = FFI::MemoryPointer.new(:int)
529
+ int_pointer = FFI::MemoryPointer.new(:int)
543
530
  check_error_code Lib.wdGetBooleanScriptResult(script_result, int_pointer),
544
531
  "Cannot extract boolean result"
545
532
 
546
533
  int_pointer.get_int(0) == 1
547
534
  when 4 # WebElement
548
- pointers_to_free << element_pointer = FFI::MemoryPointer.new(:pointer)
535
+ element_pointer = FFI::MemoryPointer.new(:pointer)
549
536
  check_error_code Lib.wdGetElementScriptResult(script_result, @driver_pointer, element_pointer),
550
537
  "Cannot extract element result"
551
538
 
552
- Element.new(self, element_pointer.get_pointer(0))
539
+ auto_ptr = FFI::AutoPointer.new(element_pointer.get_pointer(0), Lib.method(:finalize_element))
540
+ Element.new(self, auto_ptr)
553
541
  when 5 # Nothing
554
542
  nil
555
543
  when 6 # Exception
@@ -559,12 +547,12 @@ module Selenium
559
547
 
560
548
  raise Error::WebDriverError, message
561
549
  when 7 # Double
562
- pointers_to_free << double_pointer = FFI::MemoryPointer.new(:double)
550
+ double_pointer = FFI::MemoryPointer.new(:double)
563
551
  check_error_code Lib.wdGetDoubleScriptResult(script_result, double_pointer), "Cannot extract double result"
564
552
 
565
553
  double_pointer.get_double(0)
566
554
  when 8 # Array
567
- pointers_to_free << array_length_pointer = FFI::MemoryPointer.new(:int)
555
+ array_length_pointer = FFI::MemoryPointer.new(:int)
568
556
  check_error_code Lib.wdGetArrayLengthScriptResult(@driver_pointer, script_result, array_length_pointer),
569
557
  "Cannot extract array length"
570
558
 
@@ -588,7 +576,6 @@ module Selenium
588
576
  end
589
577
  ensure
590
578
  Lib.wdFreeScriptResult(script_result) if script_result
591
- pointers_to_free.each { |p| p.free }
592
579
  end
593
580
 
594
581
  def check_error_code(code, message)
@@ -49,6 +49,7 @@ module Selenium
49
49
  attach_function :wdExecuteScript, [:pointer, :pointer, :pointer, :pointer ], :int
50
50
  attach_function :wdeFreeElement, [:pointer ], :int
51
51
  attach_function :wdFindElementByClassName, [:pointer, :pointer, :pointer, :pointer ], :int
52
+ attach_function :wdFindElementByCss, [:pointer, :pointer, :pointer, :pointer ], :int
52
53
  attach_function :wdFindElementById, [:pointer, :pointer, :pointer, :pointer ], :int
53
54
  attach_function :wdFindElementByLinkText, [:pointer, :pointer, :pointer, :pointer ], :int
54
55
  attach_function :wdFindElementByName, [:pointer, :pointer, :pointer, :pointer ], :int
@@ -56,6 +57,7 @@ module Selenium
56
57
  attach_function :wdFindElementByTagName, [:pointer, :pointer, :pointer, :pointer ], :int
57
58
  attach_function :wdFindElementByXPath, [:pointer, :pointer, :pointer, :pointer ], :int
58
59
  attach_function :wdFindElementsByClassName, [:pointer, :pointer, :pointer, :pointer ], :int
60
+ attach_function :wdFindElementsByCss, [:pointer, :pointer, :pointer, :pointer ], :int
59
61
  attach_function :wdFindElementsById, [:pointer, :pointer, :pointer, :pointer ], :int
60
62
  attach_function :wdFindElementsByLinkText, [:pointer, :pointer, :pointer, :pointer ], :int
61
63
  attach_function :wdFindElementsByName, [:pointer, :pointer, :pointer, :pointer ], :int
@@ -96,7 +98,15 @@ module Selenium
96
98
  attach_function :wdSwitchToFrame, [:pointer, :pointer ], :int
97
99
  attach_function :wdSwitchToWindow, [:pointer, :pointer ], :int
98
100
  attach_function :wdWaitForLoadToComplete, [:pointer ], :int
99
- end
101
+
102
+ def self.finalize_element(ptr)
103
+ code = Lib.wdeFreeElement(ptr)
104
+ if err = WebDriver::Error.for_code(code)
105
+ raise err, "could not free element (#{ptr})"
106
+ end
107
+ end
108
+
109
+ end # Lib
100
110
 
101
111
  module Kernel32
102
112
  extend FFI::Library
@@ -7,12 +7,6 @@ module Selenium
7
7
  #
8
8
 
9
9
  module Util
10
- CP_ACP = 0
11
- CP_OEMCP = 1
12
- CP_MACCP = 2
13
- CP_THREAD_ACP = 3
14
- CP_SYMBOL = 42
15
- CP_UTF7 = 65000
16
10
  CP_UTF8 = 65001
17
11
 
18
12
  def string_array_from(raw_strings)
@@ -40,15 +34,14 @@ module Selenium
40
34
  arr
41
35
  ensure
42
36
  Lib.wdFreeStringCollection(strings_ptr)
43
- raw_strings.free
44
37
  end
45
38
 
46
39
  def create_element(&blk)
47
40
  element_ptr_ref = FFI::MemoryPointer.new :pointer
48
41
  yield element_ptr_ref
49
- Element.new(self, element_ptr_ref.get_pointer(0))
50
- ensure
51
- element_ptr_ref.free
42
+
43
+ auto_ptr = FFI::AutoPointer.new(element_ptr_ref.get_pointer(0), Lib.method(:finalize_element))
44
+ Element.new(self, auto_ptr)
52
45
  end
53
46
 
54
47
  def create_element_collection(&blk)
@@ -85,7 +78,6 @@ module Selenium
85
78
  wstring_to_bytestring raw_string
86
79
  ensure
87
80
  Lib.wdFreeString(string_ptr) unless string_ptr.null?
88
- string_ptr_ref.free
89
81
  end
90
82
 
91
83
  def extract_elements_from(elements_ptr_ref)
@@ -111,12 +103,8 @@ module Selenium
111
103
  Lib.wdFreeElementCollection(elements_ptr, 0)
112
104
 
113
105
  arr
114
- ensure
115
- elements_ptr_ref.free
116
- length_ptr.free
117
106
  end
118
107
 
119
-
120
108
  def wstring_ptr(str)
121
109
  str = str.to_s
122
110
  size = Kernel32.MultiByteToWideChar(CP_UTF8, 0, str, -1, nil, 0)
@@ -142,8 +130,6 @@ module Selenium
142
130
  Kernel32.WideCharToMultiByte(CP_UTF8, 0, wstring, -1, buf, size, nil, nil )
143
131
 
144
132
  buf.get_bytes(0, size - 1)
145
- ensure
146
- buf.free if buf
147
133
  end
148
134
 
149
135
  end # Util
@@ -173,7 +173,7 @@ module Selenium
173
173
  end
174
174
 
175
175
  def executeScript(script, *args)
176
- unless capabilities.javascript?
176
+ unless capabilities.javascript_enabled?
177
177
  raise Error::UnsupportedOperationError, "underlying webdriver instance does not support javascript"
178
178
  end
179
179
 
@@ -205,6 +205,14 @@ module Selenium
205
205
  find_elements_by 'class name', class_name, parent
206
206
  end
207
207
 
208
+ def findElementByCssSelector(parent, selector)
209
+ find_element_by 'css selector', selector, parent
210
+ end
211
+
212
+ def findElementsByCssSelector(parent, selector)
213
+ find_elements_by 'css selector', selector, parent
214
+ end
215
+
208
216
  def findElementById(parent, id)
209
217
  find_element_by 'id', id, parent
210
218
  end
@@ -8,8 +8,18 @@ module Selenium
8
8
  #
9
9
  class Capabilities
10
10
 
11
- attr_accessor :browser_name, :version, :platform, :javascript_enabled
12
- alias_method :javascript?, :javascript_enabled
11
+ attr_accessor :css_selectors_enabled,
12
+ :javascript_enabled,
13
+ :native_events,
14
+ :platform,
15
+ :takes_screenshot,
16
+ :version,
17
+ :browser_name
18
+
19
+ alias_method :css_selectors_enabled?, :css_selectors_enabled
20
+ alias_method :javascript_enabled?, :javascript_enabled
21
+ alias_method :native_events?, :native_events
22
+ alias_method :takes_screenshot?, :takes_screenshot
13
23
 
14
24
  #
15
25
  # Convenience methods for the common choices.
@@ -57,46 +67,69 @@ module Selenium
57
67
  }.merge(opts))
58
68
  end
59
69
 
70
+ def android(opts = {})
71
+ new({
72
+ :browser_name => "android",
73
+ :platform => :android
74
+ }.merge(opts))
75
+ end
76
+
60
77
  #
61
78
  # @api private
62
79
  #
63
80
 
64
81
  def json_create(data)
65
82
  new(
66
- :browser_name => data["browserName"],
67
- :version => data["version"],
68
- :platform => data["platform"].downcase.to_sym,
69
- :javascript_enabled => data["javascriptEnabled"]
83
+ :browser_name => data["browserName"],
84
+ :version => data["version"],
85
+ :platform => data["platform"].downcase.to_sym,
86
+ :javascript_enabled => data["javascriptEnabled"],
87
+ :css_selectors_enabled => data["cssSelectorsEnabled"],
88
+ :takes_screenshot => data["takesScreenshot"],
89
+ :native_events => data["nativeEvents"]
70
90
  )
71
91
  end
72
92
  end
73
93
 
74
- # @option :browser_name [String] required browser name
75
- # @option :version [String] required browser version number
76
- # @option :platform [Symbol] one of :any, :win, :mac, or :x
77
- # @option :javascript_enabled [Boolean] should the test run with javascript enabled?
94
+ # @option :browser_name [String] required browser name
95
+ # @option :version [String] required browser version number
96
+ # @option :platform [Symbol] one of :any, :win, :mac, or :x
97
+ # @option :javascript_enabled [Boolean] does the driver have javascript enabled?
98
+ # @option :css_selectors_enabled [Boolean] does the driver support CSS selectors?
99
+ # @option :takes_screenshot [Boolean] can this driver take screenshots?
100
+ # @option :native_events [Boolean] does this driver use native events?
78
101
  #
79
102
  # @api public
80
103
  #
81
104
 
82
105
  def initialize(opts = {})
83
- @browser_name = opts[:browser_name] || ""
84
- @version = opts[:version] || ""
85
- @platform = opts[:platform] || :any
86
- @javascript_enabled = opts[:javascript_enabled] || false
106
+ @browser_name = opts[:browser_name] || ""
107
+ @version = opts[:version] || ""
108
+ @platform = opts[:platform] || :any
109
+ @javascript_enabled = opts[:javascript_enabled] || false
110
+ @css_selectors_enabled = opts[:css_selectors_enabled] || false
111
+ @takes_screenshot = opts[:takes_screenshot] || false
112
+ @native_events = opts[:native_events] || false
87
113
  end
88
114
 
89
115
  #
90
116
  # @api private
91
117
  #
92
118
 
93
- def to_json(*args)
119
+ def as_json(opts = nil)
94
120
  {
95
- "browserName" => browser_name,
96
- "version" => version,
97
- "platform" => platform.to_s.upcase,
98
- "javascriptEnabled" => javascript?
99
- }.to_json(*args)
121
+ "browserName" => browser_name,
122
+ "version" => version,
123
+ "platform" => platform.to_s.upcase,
124
+ "javascriptEnabled" => javascript_enabled?,
125
+ "cssCelectorsEnabled" => css_selectors_enabled?,
126
+ "takesScreenshot" => takes_screenshot?,
127
+ "nativeEvents" => native_events?
128
+ }
129
+ end
130
+
131
+ def to_json(*args)
132
+ as_json.to_json(*args)
100
133
  end
101
134
 
102
135
  end # Capabilities
@@ -19,8 +19,8 @@ module Selenium
19
19
  end
20
20
 
21
21
  if self.class.timeout
22
- http.connect_timeout = self.class.timeout
23
- http.read_timeout = self.class.timeout
22
+ http.open_timeout = self.class.timeout
23
+ http.read_timeout = self.class.timeout
24
24
  end
25
25
 
26
26
  http
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 28
9
- version: 0.0.28
8
+ - 29
9
+ version: 0.0.29
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jari Bakken
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-23 00:00:00 +02:00
17
+ date: 2010-10-09 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -42,7 +42,7 @@ dependencies:
42
42
  type: :runtime
43
43
  version_requirements: *id002
44
44
  - !ruby/object:Gem::Dependency
45
- name: ffi
45
+ name: childprocess
46
46
  prerelease: false
47
47
  requirement: &id003 !ruby/object:Gem::Requirement
48
48
  requirements:
@@ -50,35 +50,52 @@ dependencies:
50
50
  - !ruby/object:Gem::Version
51
51
  segments:
52
52
  - 0
53
- - 6
54
- - 1
55
- version: 0.6.1
53
+ - 0
54
+ - 7
55
+ version: 0.0.7
56
56
  type: :runtime
57
57
  version_requirements: *id003
58
58
  - !ruby/object:Gem::Dependency
59
- name: rspec
59
+ name: ffi
60
60
  prerelease: false
61
61
  requirement: &id004 !ruby/object:Gem::Requirement
62
62
  requirements:
63
- - - ">="
63
+ - - ~>
64
64
  - !ruby/object:Gem::Version
65
65
  segments:
66
66
  - 0
67
- version: "0"
68
- type: :development
67
+ - 6
68
+ - 3
69
+ version: 0.6.3
70
+ type: :runtime
69
71
  version_requirements: *id004
70
72
  - !ruby/object:Gem::Dependency
71
- name: rack
73
+ name: rspec
72
74
  prerelease: false
73
75
  requirement: &id005 !ruby/object:Gem::Requirement
74
76
  requirements:
75
- - - ">="
77
+ - - "="
76
78
  - !ruby/object:Gem::Version
77
79
  segments:
80
+ - 1
81
+ - 3
78
82
  - 0
79
- version: "0"
83
+ version: 1.3.0
80
84
  type: :development
81
85
  version_requirements: *id005
86
+ - !ruby/object:Gem::Dependency
87
+ name: rack
88
+ prerelease: false
89
+ requirement: &id006 !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 1
95
+ - 0
96
+ version: "1.0"
97
+ type: :development
98
+ version_requirements: *id006
82
99
  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.
83
100
  email: jari.bakken@gmail.com
84
101
  executables: []
@@ -90,36 +107,40 @@ extra_rdoc_files: []
90
107
  files:
91
108
  - lib/selenium-webdriver.rb
92
109
  - lib/selenium/webdriver.rb
93
- - lib/selenium/webdriver/bridge_helper.rb
94
- - lib/selenium/webdriver/child_process.rb
95
110
  - lib/selenium/webdriver/chrome.rb
96
- - lib/selenium/webdriver/driver.rb
97
- - lib/selenium/webdriver/element.rb
98
- - lib/selenium/webdriver/error.rb
99
- - lib/selenium/webdriver/file_reaper.rb
100
- - lib/selenium/webdriver/find.rb
111
+ - lib/selenium/webdriver/common.rb
101
112
  - lib/selenium/webdriver/firefox.rb
102
113
  - lib/selenium/webdriver/ie.rb
103
- - lib/selenium/webdriver/keys.rb
104
- - lib/selenium/webdriver/navigation.rb
105
- - lib/selenium/webdriver/options.rb
106
- - lib/selenium/webdriver/platform.rb
107
114
  - lib/selenium/webdriver/remote.rb
108
- - lib/selenium/webdriver/target_locator.rb
109
- - lib/selenium/webdriver/timeouts.rb
110
- - lib/selenium/webdriver/zip_helper.rb
111
115
  - lib/selenium/webdriver/chrome/bridge.rb
112
116
  - lib/selenium/webdriver/chrome/command_executor.rb
113
117
  - lib/selenium/webdriver/chrome/extension.zip
114
118
  - lib/selenium/webdriver/chrome/launcher.rb
115
- - lib/selenium/webdriver/core_ext/dir.rb
116
- - lib/selenium/webdriver/core_ext/string.rb
117
- - lib/selenium/webdriver/driver_extensions/takes_screenshot.rb
119
+ - lib/selenium/webdriver/common/bridge_helper.rb
120
+ - lib/selenium/webdriver/common/driver.rb
121
+ - lib/selenium/webdriver/common/element.rb
122
+ - lib/selenium/webdriver/common/error.rb
123
+ - lib/selenium/webdriver/common/file_reaper.rb
124
+ - lib/selenium/webdriver/common/find.rb
125
+ - lib/selenium/webdriver/common/keys.rb
126
+ - lib/selenium/webdriver/common/navigation.rb
127
+ - lib/selenium/webdriver/common/options.rb
128
+ - lib/selenium/webdriver/common/platform.rb
129
+ - lib/selenium/webdriver/common/socket_poller.rb
130
+ - lib/selenium/webdriver/common/target_locator.rb
131
+ - lib/selenium/webdriver/common/timeouts.rb
132
+ - lib/selenium/webdriver/common/wait.rb
133
+ - lib/selenium/webdriver/common/zipper.rb
134
+ - lib/selenium/webdriver/common/core_ext/dir.rb
135
+ - lib/selenium/webdriver/common/core_ext/string.rb
136
+ - lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb
118
137
  - lib/selenium/webdriver/firefox/binary.rb
119
138
  - lib/selenium/webdriver/firefox/bridge.rb
139
+ - lib/selenium/webdriver/firefox/extension.rb
120
140
  - lib/selenium/webdriver/firefox/launcher.rb
121
141
  - lib/selenium/webdriver/firefox/profile.rb
122
142
  - lib/selenium/webdriver/firefox/profiles_ini.rb
143
+ - lib/selenium/webdriver/firefox/socket_lock.rb
123
144
  - lib/selenium/webdriver/firefox/util.rb
124
145
  - lib/selenium/webdriver/firefox/extension/webdriver.xpi
125
146
  - lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so