selenium-webdriver 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/firefox/src/extension/components/firefoxDriver.js +16 -2
- data/firefox/src/extension/components/utils.js +25 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb +11 -11
- data/jobbie/src/rb/lib/selenium/webdriver/ie/bridge.rb +47 -47
- data/jobbie/src/rb/lib/selenium/webdriver/ie/lib.rb +1 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/util.rb +2 -2
- metadata +2 -2
@@ -194,7 +194,14 @@ FirefoxDriver.prototype.getPageSource = function(respond) {
|
|
194
194
|
*/
|
195
195
|
FirefoxDriver.prototype.findElementByXPath_ = function(theDocument, xpath,
|
196
196
|
opt_contextNode) {
|
197
|
-
|
197
|
+
if (opt_contextNode) {
|
198
|
+
var contextNode = opt_contextNode;
|
199
|
+
if (xpath) {
|
200
|
+
xpath = Utils.getXPathOfElement(contextNode) + (xpath[0] == "/" ? "" : "/") + xpath;
|
201
|
+
}
|
202
|
+
} else {
|
203
|
+
var contextNode = theDocument;
|
204
|
+
}
|
198
205
|
return theDocument.evaluate(xpath, contextNode, null,
|
199
206
|
Components.interfaces.nsIDOMXPathResult.FIRST_ORDERED_NODE_TYPE, null).
|
200
207
|
singleNodeValue;
|
@@ -213,7 +220,14 @@ FirefoxDriver.prototype.findElementByXPath_ = function(theDocument, xpath,
|
|
213
220
|
*/
|
214
221
|
FirefoxDriver.prototype.findElementsByXPath_ = function(theDocument, xpath,
|
215
222
|
opt_contextNode) {
|
216
|
-
|
223
|
+
if (opt_contextNode) {
|
224
|
+
var contextNode = opt_contextNode;
|
225
|
+
if (xpath) {
|
226
|
+
xpath = Utils.getXPathOfElement(contextNode) + (xpath[0] == "/" ? "" : "/") + xpath;
|
227
|
+
}
|
228
|
+
} else {
|
229
|
+
var contextNode = theDocument;
|
230
|
+
}
|
217
231
|
var result = theDocument.evaluate(xpath, contextNode, null,
|
218
232
|
Components.interfaces.nsIDOMXPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
|
219
233
|
var elements = [];
|
@@ -1226,3 +1226,28 @@ Utils.wrapResult = function(result, context) {
|
|
1226
1226
|
return {type: "OTHER", value: result};
|
1227
1227
|
}
|
1228
1228
|
}
|
1229
|
+
|
1230
|
+
/**
|
1231
|
+
* Gets canonical xpath of the passed element, e.g. /HTML[1]/BODY[1]/P[1]
|
1232
|
+
*/
|
1233
|
+
Utils.getXPathOfElement = function(element) {
|
1234
|
+
var path = "";
|
1235
|
+
for (; element && element.nodeType == 1; element = element.parentNode) {
|
1236
|
+
index = Utils.getElementIndexForXPath_(element);
|
1237
|
+
path = "/" + element.tagName + "[" + index + "]" + path;
|
1238
|
+
}
|
1239
|
+
return path;
|
1240
|
+
}
|
1241
|
+
|
1242
|
+
/**
|
1243
|
+
* Returns n for the nth child of the parent of that element, of type element.tagName, starting at 1
|
1244
|
+
*/
|
1245
|
+
Utils.getElementIndexForXPath_ = function (element) {
|
1246
|
+
var index = 1;
|
1247
|
+
for (var sibling = element.previousSibling; sibling ; sibling = sibling.previousSibling) {
|
1248
|
+
if (sibling.nodeType == 1 && sibling.tagName == element.tagName) {
|
1249
|
+
index++;
|
1250
|
+
}
|
1251
|
+
}
|
1252
|
+
return index;
|
1253
|
+
}
|
@@ -44,7 +44,7 @@ module Selenium
|
|
44
44
|
# ensure we're ok
|
45
45
|
sleep 0.3
|
46
46
|
if @process.ugly_death?
|
47
|
-
raise Error::WebDriverError, "
|
47
|
+
raise Error::WebDriverError, "unable to start Firefox cleanly, args: #{args.inspect}"
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -63,16 +63,16 @@ module Selenium
|
|
63
63
|
private
|
64
64
|
|
65
65
|
def path
|
66
|
-
@path ||=
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
66
|
+
@path ||= case Platform.os
|
67
|
+
when :macosx
|
68
|
+
"/Applications/Firefox.app/Contents/MacOS/firefox-bin"
|
69
|
+
when :windows
|
70
|
+
windows_path
|
71
|
+
when :linux, :unix
|
72
|
+
"/usr/bin/firefox"
|
73
|
+
else
|
74
|
+
raise "Unknown platform: #{Platform.os}"
|
75
|
+
end
|
76
76
|
end
|
77
77
|
|
78
78
|
def check_binary_exists
|
@@ -31,7 +31,7 @@ module Selenium
|
|
31
31
|
def getCurrentUrl
|
32
32
|
create_string do |wrapper|
|
33
33
|
check_error_code Lib.wdGetCurrentUrl(@driver_pointer, wrapper),
|
34
|
-
"
|
34
|
+
"unable to get current URL"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -48,20 +48,20 @@ module Selenium
|
|
48
48
|
def getTitle
|
49
49
|
create_string do |wrapper|
|
50
50
|
check_error_code Lib.wdGetTitle(@driver_pointer, wrapper),
|
51
|
-
"
|
51
|
+
"unable to get title"
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
def getPageSource
|
56
56
|
create_string do |wrapper|
|
57
57
|
check_error_code Lib.wdGetPageSource(@driver_pointer, wrapper),
|
58
|
-
"
|
58
|
+
"unable to get page source"
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
62
|
def getBrowserVisible
|
63
63
|
int_ptr = FFI::MemoryPointer.new :int
|
64
|
-
check_error_code Lib.wdGetVisible(@driver_pointer, int_ptr), "
|
64
|
+
check_error_code Lib.wdGetVisible(@driver_pointer, int_ptr), "unable to determine if browser is visible"
|
65
65
|
|
66
66
|
int_ptr.get_int(0) == 1
|
67
67
|
ensure
|
@@ -70,23 +70,23 @@ module Selenium
|
|
70
70
|
|
71
71
|
def setBrowserVisible(bool)
|
72
72
|
check_error_code Lib.wdSetVisible(@driver_pointer, bool ? 1 : 0),
|
73
|
-
"
|
73
|
+
"unable to change the visibility of the browser"
|
74
74
|
end
|
75
75
|
|
76
76
|
def switchToWindow(id)
|
77
77
|
check_error_code Lib.wdSwitchToWindow(@driver_pointer, wstring_ptr(id)),
|
78
|
-
"
|
78
|
+
"unable to locate window #{id.inspect}"
|
79
79
|
end
|
80
80
|
|
81
81
|
def switchToFrame(id)
|
82
82
|
check_error_code Lib.wdSwitchToFrame(@driver_pointer, wstring_ptr(id)),
|
83
|
-
"
|
83
|
+
"unable to locate frame #{id.inspect}"
|
84
84
|
end
|
85
85
|
|
86
86
|
def switchToActiveElement
|
87
87
|
create_element do |ptr|
|
88
88
|
check_error_code Lib.wdSwitchToActiveElement(@driver_pointer, ptr),
|
89
|
-
"
|
89
|
+
"unable to switch to active element"
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
@@ -107,17 +107,17 @@ module Selenium
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def close
|
110
|
-
check_error_code Lib.wdClose(@driver_pointer), "
|
110
|
+
check_error_code Lib.wdClose(@driver_pointer), "unable to close driver"
|
111
111
|
end
|
112
112
|
|
113
113
|
def refresh
|
114
|
-
|
114
|
+
check_error_code Lib.wdRefresh(@driver_pointer), "unable to refresh current page"
|
115
115
|
end
|
116
116
|
|
117
117
|
def getWindowHandles
|
118
118
|
raw_handles = FFI::MemoryPointer.new :pointer
|
119
119
|
check_error_code Lib.wdGetAllWindowHandles(@driver_pointer, raw_handles),
|
120
|
-
"
|
120
|
+
"unable to obtain all window handles"
|
121
121
|
|
122
122
|
string_array_from(raw_handles).uniq
|
123
123
|
# TODO: who calls raw_handles.free if exception is raised?
|
@@ -126,7 +126,7 @@ module Selenium
|
|
126
126
|
def getCurrentWindowHandle
|
127
127
|
create_string do |string_pointer|
|
128
128
|
check_error_code Lib.wdGetCurrentWindowHandle(@driver_pointer, string_pointer),
|
129
|
-
"
|
129
|
+
"unable to obtain current window handle"
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
@@ -134,7 +134,7 @@ module Selenium
|
|
134
134
|
script_args_ref = FFI::MemoryPointer.new :pointer
|
135
135
|
result = Lib.wdNewScriptArgs(script_args_ref, args.size)
|
136
136
|
|
137
|
-
check_error_code result, "
|
137
|
+
check_error_code result, "unable to create new script arguments array"
|
138
138
|
|
139
139
|
args_pointer = script_args_ref.get_pointer(0)
|
140
140
|
populate_arguments(result, args_pointer, args)
|
@@ -166,12 +166,12 @@ module Selenium
|
|
166
166
|
cookie_string << "domain=#{opts[:domain][/^(.+?):/, 1]};" if opts[:domain] && !opts[:domain].empty?
|
167
167
|
|
168
168
|
check_error_code Lib.wdAddCookie(@driver_pointer, wstring_ptr(cookie_string)),
|
169
|
-
"
|
169
|
+
"unable to add cookie"
|
170
170
|
end
|
171
171
|
|
172
172
|
def getAllCookies
|
173
173
|
str = create_string do |wrapper|
|
174
|
-
check_error_code Lib.wdGetCookies(@driver_pointer, wrapper), "
|
174
|
+
check_error_code Lib.wdGetCookies(@driver_pointer, wrapper), "unable to get cookies"
|
175
175
|
end
|
176
176
|
|
177
177
|
str.split("; ").map do |cookie_string|
|
@@ -214,7 +214,7 @@ module Selenium
|
|
214
214
|
|
215
215
|
create_element do |raw_element|
|
216
216
|
check_error_code Lib.wdFindElementByClassName(@driver_pointer, parent, wstring_ptr(class_name), raw_element),
|
217
|
-
"
|
217
|
+
"unable to find element by class name using #{class_name.inspect}"
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
@@ -223,84 +223,84 @@ module Selenium
|
|
223
223
|
|
224
224
|
create_element_collection do |raw_elements|
|
225
225
|
check_error_code Lib.wdFindElementsByClassName(@driver_pointer, parent, wstring_ptr(class_name), raw_elements),
|
226
|
-
"
|
226
|
+
"unable to find elements by class name using #{class_name.inspect}"
|
227
227
|
end
|
228
228
|
end
|
229
229
|
|
230
230
|
def findElementById(parent, id)
|
231
231
|
create_element do |raw_element|
|
232
232
|
check_error_code Lib.wdFindElementById(@driver_pointer, parent, wstring_ptr(id), raw_element),
|
233
|
-
"
|
233
|
+
"unable to find element by id using #{id.inspect}"
|
234
234
|
end
|
235
235
|
end
|
236
236
|
|
237
237
|
def findElementsById(parent, id)
|
238
238
|
create_element_collection do |raw_elements|
|
239
239
|
check_error_code Lib.wdFindElementsById(@driver_pointer, parent, wstring_ptr(id), raw_elements),
|
240
|
-
"
|
240
|
+
"unable to find elements by id using #{id.inspect}"
|
241
241
|
end
|
242
242
|
end
|
243
243
|
|
244
244
|
def findElementByLinkText(parent, link_text)
|
245
245
|
create_element do |raw_element|
|
246
246
|
check_error_code Lib.wdFindElementByLinkText(@driver_pointer, parent, wstring_ptr(link_text), raw_element),
|
247
|
-
"
|
247
|
+
"unable to find element by link text using #{link_text.inspect}"
|
248
248
|
end
|
249
249
|
end
|
250
250
|
|
251
251
|
def findElementsByLinkText(parent, link_text)
|
252
252
|
create_element_collection do |raw_elements|
|
253
253
|
check_error_code Lib.wdFindElementsByLinkText(@driver_pointer, parent, wstring_ptr(link_text), raw_elements),
|
254
|
-
"
|
254
|
+
"unable to find elements by link text using #{link_text.inspect}"
|
255
255
|
end
|
256
256
|
end
|
257
257
|
|
258
258
|
def findElementByPartialLinkText(parent, link_text)
|
259
259
|
create_element do |raw_element|
|
260
260
|
check_error_code Lib.wdFindElementByPartialLinkText(@driver_pointer, parent, wstring_ptr(link_text), raw_element),
|
261
|
-
"
|
261
|
+
"unable to find element by partial link text using #{link_text.inspect}"
|
262
262
|
end
|
263
263
|
end
|
264
264
|
|
265
265
|
def findElementsByPartialLinkText(parent, link_text)
|
266
266
|
create_element_collection do |raw_elements|
|
267
267
|
check_error_code Lib.wdFindElementsByPartialLinkText(@driver_pointer, parent, wstring_ptr(link_text), raw_elements),
|
268
|
-
"
|
268
|
+
"unable to find elements by partial link text using #{link_text.inspect}"
|
269
269
|
end
|
270
270
|
end
|
271
271
|
|
272
272
|
def findElementByName(parent, name)
|
273
273
|
create_element do |raw_element|
|
274
274
|
check_error_code Lib.wdFindElementByName(@driver_pointer, parent, wstring_ptr(name), raw_element),
|
275
|
-
"
|
275
|
+
"unable to find element by name using #{name.inspect}"
|
276
276
|
end
|
277
277
|
end
|
278
278
|
|
279
279
|
def findElementsByName(parent, name)
|
280
280
|
create_element_collection do |raw_elements|
|
281
281
|
check_error_code Lib.wdFindElementsByName(@driver_pointer, parent, wstring_ptr(name), raw_elements),
|
282
|
-
"
|
282
|
+
"unable to find elements by name using #{name.inspect}"
|
283
283
|
end
|
284
284
|
end
|
285
285
|
|
286
286
|
def findElementByTagName(parent, tag_name)
|
287
287
|
create_element do |raw_element|
|
288
288
|
check_error_code Lib.wdFindElementByTagName(@driver_pointer, parent, wstring_ptr(tag_name), raw_element),
|
289
|
-
"
|
289
|
+
"unable to find element by tag name using #{tag_name.inspect}"
|
290
290
|
end
|
291
291
|
end
|
292
292
|
|
293
293
|
def findElementsByTagName(parent, tag_name)
|
294
294
|
create_element_collection do |raw_elements|
|
295
295
|
check_error_code Lib.wdFindElementsByTagName(@driver_pointer, parent, wstring_ptr(tag_name), raw_elements),
|
296
|
-
"
|
296
|
+
"unable to find elements by tag name using #{tag_name.inspect}"
|
297
297
|
end
|
298
298
|
end
|
299
299
|
|
300
300
|
def findElementByXpath(parent, xpath)
|
301
301
|
create_element do |raw_element|
|
302
302
|
check_error_code Lib.wdFindElementByXPath(@driver_pointer, parent, wstring_ptr(xpath), raw_element),
|
303
|
-
"
|
303
|
+
"unable to find element by xpath using #{xpath.inspect}"
|
304
304
|
# TODO: Additional error handling
|
305
305
|
end
|
306
306
|
end
|
@@ -308,7 +308,7 @@ module Selenium
|
|
308
308
|
def findElementsByXpath(parent, xpath)
|
309
309
|
create_element_collection do |raw_elements|
|
310
310
|
check_error_code Lib.wdFindElementsByXPath(@driver_pointer, parent, wstring_ptr(xpath), raw_elements),
|
311
|
-
"
|
311
|
+
"unable to find elements by xpath using #{xpath.inspect}"
|
312
312
|
# TODO: Additional error handling
|
313
313
|
end
|
314
314
|
end
|
@@ -319,20 +319,20 @@ module Selenium
|
|
319
319
|
#
|
320
320
|
|
321
321
|
def clickElement(element_pointer)
|
322
|
-
check_error_code Lib.wdeClick(element_pointer), "
|
322
|
+
check_error_code Lib.wdeClick(element_pointer), "unable to click element"
|
323
323
|
end
|
324
324
|
|
325
325
|
def getElementTagName(element_pointer)
|
326
326
|
create_string do |string_pointer|
|
327
327
|
check_error_code Lib.wdeGetTagName(element_pointer, string_pointer),
|
328
|
-
"
|
328
|
+
"unable to get tag name"
|
329
329
|
end
|
330
330
|
end
|
331
331
|
|
332
332
|
def getElementAttribute(element_pointer, name)
|
333
333
|
create_string do |string_pointer|
|
334
334
|
check_error_code Lib.wdeGetAttribute(element_pointer, wstring_ptr(name), string_pointer),
|
335
|
-
"
|
335
|
+
"unable to get attribute #{name.inspect}"
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
@@ -343,24 +343,24 @@ module Selenium
|
|
343
343
|
def getElementText(element_pointer)
|
344
344
|
create_string do |string_pointer|
|
345
345
|
check_error_code Lib.wdeGetText(element_pointer, string_pointer),
|
346
|
-
"
|
346
|
+
"unable to get text"
|
347
347
|
end.gsub("\r\n", "\n")
|
348
348
|
end
|
349
349
|
|
350
350
|
def sendKeysToElement(element_pointer, string)
|
351
351
|
check_error_code Lib.wdeSendKeys(element_pointer, wstring_ptr(string)),
|
352
|
-
"
|
352
|
+
"unable to send keys to #{self}"
|
353
353
|
waitForLoadToComplete
|
354
354
|
end
|
355
355
|
|
356
356
|
def clearElement(element_pointer)
|
357
|
-
check_error_code Lib.wdeClear(element_pointer), "
|
357
|
+
check_error_code Lib.wdeClear(element_pointer), "unable to clear element"
|
358
358
|
end
|
359
359
|
|
360
360
|
def isElementEnabled(element_pointer)
|
361
361
|
int_ptr = FFI::MemoryPointer.new(:int)
|
362
362
|
check_error_code Lib.wdeIsEnabled(element_pointer, int_ptr),
|
363
|
-
"
|
363
|
+
"unable to get enabled state"
|
364
364
|
|
365
365
|
int_ptr.get_int(0) == 1
|
366
366
|
ensure
|
@@ -370,7 +370,7 @@ module Selenium
|
|
370
370
|
def isElementSelected(element_pointer)
|
371
371
|
int_ptr = FFI::MemoryPointer.new(:int)
|
372
372
|
check_error_code Lib.wdeIsSelected(element_pointer, int_ptr),
|
373
|
-
"
|
373
|
+
"unable to get selected state"
|
374
374
|
|
375
375
|
int_ptr.get_int(0) == 1
|
376
376
|
ensure
|
@@ -379,7 +379,7 @@ module Selenium
|
|
379
379
|
|
380
380
|
def isElementDisplayed(element_pointer)
|
381
381
|
int_ptr = FFI::MemoryPointer.new :int
|
382
|
-
check_error_code Lib.wdeIsDisplayed(element_pointer, int_ptr), "
|
382
|
+
check_error_code Lib.wdeIsDisplayed(element_pointer, int_ptr), "unable to check visibilty"
|
383
383
|
|
384
384
|
int_ptr.get_int(0) == 1;
|
385
385
|
ensure
|
@@ -387,7 +387,7 @@ module Selenium
|
|
387
387
|
end
|
388
388
|
|
389
389
|
def submitElement(element_pointer)
|
390
|
-
check_error_code Lib.wdeSubmit(element_pointer), "
|
390
|
+
check_error_code Lib.wdeSubmit(element_pointer), "unable to submit element"
|
391
391
|
end
|
392
392
|
|
393
393
|
def toggleElement(element_pointer)
|
@@ -399,7 +399,7 @@ module Selenium
|
|
399
399
|
"You may not toggle this element: #{get_element_tag_name(element_pointer)}"
|
400
400
|
end
|
401
401
|
|
402
|
-
check_error_code result, "
|
402
|
+
check_error_code result, "unable to toggle element"
|
403
403
|
|
404
404
|
int_ptr.get_int(0) == 1
|
405
405
|
ensure
|
@@ -407,13 +407,13 @@ module Selenium
|
|
407
407
|
end
|
408
408
|
|
409
409
|
def setElementSelected(element_pointer)
|
410
|
-
check_error_code Lib.wdeSetSelected(element_pointer), "
|
410
|
+
check_error_code Lib.wdeSetSelected(element_pointer), "unable to select element"
|
411
411
|
end
|
412
412
|
|
413
413
|
def getElementValueOfCssProperty(element_pointer, prop)
|
414
414
|
create_string do |string_pointer|
|
415
415
|
check_error_code Lib.wdeGetValueOfCssProperty(element_pointer, wstring_ptr(prop), string_pointer),
|
416
|
-
"
|
416
|
+
"unable to get value of css property: #{prop.inspect}"
|
417
417
|
end
|
418
418
|
end
|
419
419
|
|
@@ -427,7 +427,7 @@ module Selenium
|
|
427
427
|
x, y, width, height = Array.new(4) { FFI::MemoryPointer.new :long }
|
428
428
|
|
429
429
|
check_error_code Lib.wdeGetDetailsOnceScrolledOnToScreen(element_pointer, hwnd, x, y, width, height),
|
430
|
-
"
|
430
|
+
"unable to determine location once scrolled on to screen"
|
431
431
|
|
432
432
|
Lib.wdeMouseDownAt(hwnd.get_pointer(0), x.get_long(0), y.get_long(0))
|
433
433
|
|
@@ -445,7 +445,7 @@ module Selenium
|
|
445
445
|
x = FFI::MemoryPointer.new :long
|
446
446
|
y = FFI::MemoryPointer.new :long
|
447
447
|
|
448
|
-
check_error_code Lib.wdeGetLocation(element_pointer, x, y), "
|
448
|
+
check_error_code Lib.wdeGetLocation(element_pointer, x, y), "unable to get location of element"
|
449
449
|
|
450
450
|
Point.new x.get_int(0), y.get_int(0)
|
451
451
|
ensure
|
@@ -457,7 +457,7 @@ module Selenium
|
|
457
457
|
width = FFI::MemoryPointer.new :long
|
458
458
|
height = FFI::MemoryPointer.new :long
|
459
459
|
|
460
|
-
check_error_code Lib.wdeGetSize(element_pointer, width, height), "
|
460
|
+
check_error_code Lib.wdeGetSize(element_pointer, width, height), "unable to get size of element"
|
461
461
|
|
462
462
|
Dimension.new width.get_int(0), height.get_int(0)
|
463
463
|
ensure
|
@@ -467,7 +467,7 @@ module Selenium
|
|
467
467
|
|
468
468
|
def finalize(element_pointer)
|
469
469
|
check_error_code Lib.wdeFreeElement(element_pointer),
|
470
|
-
"
|
470
|
+
"unable to finalize #{element_pointer} for #{self}"
|
471
471
|
end
|
472
472
|
|
473
473
|
private
|
@@ -489,7 +489,7 @@ module Selenium
|
|
489
489
|
raise TypeError, "Parameter is not of recognized type: #{arg.inspect}:#{arg.class}"
|
490
490
|
end
|
491
491
|
|
492
|
-
check_error_code result, "
|
492
|
+
check_error_code result, "unable to add argument: #{arg.inspect}"
|
493
493
|
end
|
494
494
|
|
495
495
|
|
@@ -77,6 +77,7 @@ module Selenium
|
|
77
77
|
attach_function :wdGoForward, [:pointer ], :int
|
78
78
|
attach_function :wdNewDriverInstance, [:pointer ], :int
|
79
79
|
attach_function :wdNewScriptArgs, [:pointer, :int ], :int
|
80
|
+
attach_function :wdRefresh, [:pointer, ], :int
|
80
81
|
attach_function :wdSetVisible, [:pointer, :int ], :int
|
81
82
|
attach_function :wdStringLength, [:pointer, :pointer ], :int
|
82
83
|
attach_function :wdSwitchToActiveElement, [:pointer, :pointer ], :int
|
@@ -97,7 +97,7 @@ module Selenium
|
|
97
97
|
|
98
98
|
if e = WebDriver::Error.for_code(result)
|
99
99
|
Lib.wdFreeElementCollection(elements_ptr, 1)
|
100
|
-
raise e, "
|
100
|
+
raise e, "unable to create element from collection at index #{idx} (#{result})"
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
@@ -116,7 +116,7 @@ module Selenium
|
|
116
116
|
size = Kernel32.MultiByteToWideChar(CP_UTF8, 0, str, -1, nil, 0)
|
117
117
|
|
118
118
|
unless size > 0
|
119
|
-
raise Error::WebDriverError, "
|
119
|
+
raise Error::WebDriverError, "unable to convert #{str.inspect} to wchar ptr"
|
120
120
|
end
|
121
121
|
|
122
122
|
buf = FFI::MemoryPointer.new :pointer, size
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jari Bakken
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-15 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|