selenium-webdriver 0.0.28 → 0.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +25 -0
- data/lib/selenium/webdriver.rb +6 -29
- data/lib/selenium/webdriver/chrome.rb +4 -2
- data/lib/selenium/webdriver/chrome/extension.zip +0 -0
- data/lib/selenium/webdriver/chrome/launcher.rb +15 -16
- data/lib/selenium/webdriver/common.rb +18 -0
- data/lib/selenium/webdriver/{bridge_helper.rb → common/bridge_helper.rb} +0 -0
- data/lib/selenium/webdriver/{core_ext → common/core_ext}/dir.rb +0 -0
- data/lib/selenium/webdriver/{core_ext → common/core_ext}/string.rb +0 -0
- data/lib/selenium/webdriver/{driver.rb → common/driver.rb} +19 -7
- data/lib/selenium/webdriver/{driver_extensions → common/driver_extensions}/takes_screenshot.rb +2 -2
- data/lib/selenium/webdriver/{element.rb → common/element.rb} +30 -3
- data/lib/selenium/webdriver/{error.rb → common/error.rb} +0 -0
- data/lib/selenium/webdriver/{file_reaper.rb → common/file_reaper.rb} +0 -0
- data/lib/selenium/webdriver/{find.rb → common/find.rb} +9 -1
- data/lib/selenium/webdriver/{keys.rb → common/keys.rb} +0 -0
- data/lib/selenium/webdriver/{navigation.rb → common/navigation.rb} +3 -3
- data/lib/selenium/webdriver/{options.rb → common/options.rb} +47 -5
- data/lib/selenium/webdriver/{platform.rb → common/platform.rb} +10 -0
- data/lib/selenium/webdriver/common/socket_poller.rb +47 -0
- data/lib/selenium/webdriver/{target_locator.rb → common/target_locator.rb} +11 -8
- data/lib/selenium/webdriver/{timeouts.rb → common/timeouts.rb} +0 -0
- data/lib/selenium/webdriver/common/wait.rb +60 -0
- data/lib/selenium/webdriver/common/zipper.rb +54 -0
- data/lib/selenium/webdriver/firefox.rb +6 -3
- data/lib/selenium/webdriver/firefox/binary.rb +46 -43
- data/lib/selenium/webdriver/firefox/bridge.rb +2 -10
- data/lib/selenium/webdriver/firefox/extension.rb +51 -0
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/launcher.rb +25 -69
- data/lib/selenium/webdriver/firefox/profile.rb +123 -89
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +2 -1
- data/lib/selenium/webdriver/firefox/socket_lock.rb +77 -0
- data/lib/selenium/webdriver/ie/bridge.rb +25 -38
- data/lib/selenium/webdriver/ie/lib.rb +11 -1
- data/lib/selenium/webdriver/ie/native/win32/InternetExplorerDriver.dll +0 -0
- data/lib/selenium/webdriver/ie/native/x64/InternetExplorerDriver.dll +0 -0
- data/lib/selenium/webdriver/ie/util.rb +3 -17
- data/lib/selenium/webdriver/remote/bridge.rb +9 -1
- data/lib/selenium/webdriver/remote/capabilities.rb +53 -20
- data/lib/selenium/webdriver/remote/http/default.rb +2 -2
- metadata +52 -31
- data/lib/selenium/webdriver/child_process.rb +0 -243
- 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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
Binary file
|
Binary file
|
@@ -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
|
-
|
50
|
-
|
51
|
-
|
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.
|
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 :
|
12
|
-
|
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
|
67
|
-
:version
|
68
|
-
:platform
|
69
|
-
:javascript_enabled
|
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
|
75
|
-
# @option :version
|
76
|
-
# @option :platform
|
77
|
-
# @option :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
|
84
|
-
@version
|
85
|
-
@platform
|
86
|
-
@javascript_enabled
|
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
|
119
|
+
def as_json(opts = nil)
|
94
120
|
{
|
95
|
-
"browserName"
|
96
|
-
"version"
|
97
|
-
"platform"
|
98
|
-
"javascriptEnabled"
|
99
|
-
|
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
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
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-
|
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:
|
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
|
-
-
|
54
|
-
-
|
55
|
-
version: 0.
|
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:
|
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
|
-
|
68
|
-
|
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:
|
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:
|
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/
|
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/
|
116
|
-
- lib/selenium/webdriver/
|
117
|
-
- lib/selenium/webdriver/
|
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
|