poltergeist 1.12.0 → 1.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/capybara/poltergeist/browser.rb +39 -9
- data/lib/capybara/poltergeist/client/agent.coffee +7 -2
- data/lib/capybara/poltergeist/client/browser.coffee +19 -10
- data/lib/capybara/poltergeist/client/compiled/agent.js +4 -2
- data/lib/capybara/poltergeist/client/compiled/browser.js +58 -19
- data/lib/capybara/poltergeist/client/compiled/web_page.js +21 -10
- data/lib/capybara/poltergeist/client/web_page.coffee +19 -6
- data/lib/capybara/poltergeist/driver.rb +4 -4
- data/lib/capybara/poltergeist/node.rb +10 -0
- data/lib/capybara/poltergeist/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eac1d67cd0c1e7872a042e4d0dfa10740b132858
|
4
|
+
data.tar.gz: e52276ce486bb4bda8e17416da7492cdae0af9aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa4a1e4fa49103bb1989d16a46c1135ebffaec9df3fb0a86f1fdf5841389fffd9c6ebaa59ffc8f57abf150a981ce419d38c5c9516d1b0281e73e96f3c78cc517
|
7
|
+
data.tar.gz: a7088f6835bf5ef8eb42e724e99dc3271e37deb56c47cce57d68bdd54493ed0e4ed795717dc10d91a56196c55df59fed3c8bdf2c437c9d387d58cc5e7f0d4cbf
|
@@ -120,12 +120,12 @@ module Capybara::Poltergeist
|
|
120
120
|
command 'click_coordinates', x, y
|
121
121
|
end
|
122
122
|
|
123
|
-
def evaluate(script)
|
124
|
-
command 'evaluate', script
|
123
|
+
def evaluate(script, *args)
|
124
|
+
command 'evaluate', script, *args
|
125
125
|
end
|
126
126
|
|
127
|
-
def execute(script)
|
128
|
-
command 'execute', script
|
127
|
+
def execute(script, *args)
|
128
|
+
command 'execute', script, *args
|
129
129
|
end
|
130
130
|
|
131
131
|
def within_frame(handle, &block)
|
@@ -429,19 +429,49 @@ module Capybara::Poltergeist
|
|
429
429
|
end
|
430
430
|
end
|
431
431
|
|
432
|
+
KEY_ALIASES = {
|
433
|
+
command: :Meta,
|
434
|
+
equals: :Equal,
|
435
|
+
Control: :Ctrl,
|
436
|
+
control: :Ctrl,
|
437
|
+
mulitply: 'numpad*',
|
438
|
+
add: 'numpad+',
|
439
|
+
divide: 'numpad/',
|
440
|
+
subtract: 'numpad-',
|
441
|
+
decimal: 'numpad.'
|
442
|
+
}
|
443
|
+
|
432
444
|
def normalize_keys(keys)
|
433
445
|
keys.map do |key|
|
434
446
|
case key
|
435
447
|
when Array
|
436
448
|
# [:Shift, "s"] => { modifier: "shift", key: "S" }
|
449
|
+
# [:Shift, "string"] => { modifier: "shift", key: "STRING" }
|
437
450
|
# [:Ctrl, :Left] => { modifier: "ctrl", key: :Left }
|
438
451
|
# [:Ctrl, :Shift, :Left] => { modifier: "ctrl,shift", key: :Left }
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
452
|
+
# [:Ctrl, :Left, :Left] => { modifier: "ctrl", key: [:Left, :Left] }
|
453
|
+
_keys = key.chunk {|k| k.is_a?(Symbol) && %w(shift ctrl control alt meta command).include?(k.to_s.downcase) }
|
454
|
+
modifiers = if _keys.peek[0]
|
455
|
+
_keys.next[1].map do |k|
|
456
|
+
k = k.to_s.downcase
|
457
|
+
k = 'ctrl' if k == 'control'
|
458
|
+
k = 'meta' if k == 'command'
|
459
|
+
k
|
460
|
+
end.join(',')
|
461
|
+
else
|
462
|
+
''
|
463
|
+
end
|
464
|
+
letter = normalize_keys(_keys.next[1].map {|k| k.is_a?(String) ? k.upcase : k })
|
465
|
+
{ modifier: modifiers, key: letter }
|
443
466
|
when Symbol
|
444
|
-
|
467
|
+
# Return a known sequence for PhantomJS
|
468
|
+
key = KEY_ALIASES.fetch(key, key)
|
469
|
+
if match = key.to_s.match(/numpad(.)/)
|
470
|
+
res = { key: match[1], modifier: 'keypad' }
|
471
|
+
elsif key !~ /^[A-Z]/
|
472
|
+
key = key.to_s.split('_').map{|e| e.capitalize}.join
|
473
|
+
end
|
474
|
+
res || { key: key }
|
445
475
|
when String
|
446
476
|
key # Plain string, nothing to do
|
447
477
|
end
|
@@ -55,7 +55,7 @@ class PoltergeistAgent
|
|
55
55
|
this.get(id).removeAttribute('_poltergeist_selected')
|
56
56
|
|
57
57
|
clearLocalStorage: ->
|
58
|
-
localStorage
|
58
|
+
localStorage?.clear()
|
59
59
|
|
60
60
|
class PoltergeistAgent.ObsoleteNode
|
61
61
|
toString: -> "PoltergeistAgent.ObsoleteNode"
|
@@ -266,7 +266,12 @@ class PoltergeistAgent.Node
|
|
266
266
|
rect.right <= window.innerWidth
|
267
267
|
|
268
268
|
isDisabled: ->
|
269
|
-
|
269
|
+
xpath = 'parent::optgroup[@disabled] | \
|
270
|
+
ancestor::select[@disabled] | \
|
271
|
+
parent::fieldset[@disabled] | \
|
272
|
+
ancestor::*[not(self::legend) or preceding-sibling::legend][parent::fieldset[@disabled]]'
|
273
|
+
|
274
|
+
@element.disabled || document.evaluate(xpath, @element, null, XPathResult.BOOLEAN_TYPE, null).booleanValue
|
270
275
|
|
271
276
|
path: ->
|
272
277
|
elements = @parentIds().reverse().map((id) => @agent.get(id))
|
@@ -199,11 +199,15 @@ class Poltergeist.Browser
|
|
199
199
|
path: (page_id, id) ->
|
200
200
|
@current_command.sendResponse this.node(page_id, id).path()
|
201
201
|
|
202
|
-
evaluate: (script) ->
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
202
|
+
evaluate: (script, args...) ->
|
203
|
+
for arg in args when @_isElementArgument(arg)
|
204
|
+
throw new Poltergeist.ObsoleteNode if arg["ELEMENT"]["page_id"] != @currentPage.id
|
205
|
+
@current_command.sendResponse @currentPage.evaluate("function() { return #{script} }", args...)
|
206
|
+
|
207
|
+
execute: (script, args...) ->
|
208
|
+
for arg in args when @_isElementArgument(arg)
|
209
|
+
throw new Poltergeist.ObsoleteNode if arg["ELEMENT"]["page_id"] != @currentPage.id
|
210
|
+
@currentPage.execute("function() { #{script} }", args...)
|
207
211
|
@current_command.sendResponse(true)
|
208
212
|
|
209
213
|
frameUrl: (frame_name) ->
|
@@ -345,21 +349,24 @@ class Poltergeist.Browser
|
|
345
349
|
if !target.containsSelection()
|
346
350
|
target.mouseEvent('click')
|
347
351
|
|
352
|
+
@_send_keys_with_modifiers(keys)
|
353
|
+
@current_command.sendResponse(true)
|
354
|
+
|
355
|
+
_send_keys_with_modifiers: (keys, current_modifier_code = 0) ->
|
348
356
|
for sequence in keys
|
349
357
|
key = if sequence.key?
|
350
358
|
@currentPage.keyCode(sequence.key) || sequence.key
|
351
359
|
else
|
352
360
|
sequence
|
361
|
+
|
353
362
|
if sequence.modifier?
|
354
363
|
modifier_keys = @currentPage.keyModifierKeys(sequence.modifier)
|
355
|
-
modifier_code = @currentPage.keyModifierCode(sequence.modifier)
|
364
|
+
modifier_code = @currentPage.keyModifierCode(sequence.modifier) | current_modifier_code
|
356
365
|
@currentPage.sendEvent('keydown', modifier_key) for modifier_key in modifier_keys
|
357
|
-
@
|
366
|
+
@_send_keys_with_modifiers([].concat(key), modifier_code)
|
358
367
|
@currentPage.sendEvent('keyup', modifier_key) for modifier_key in modifier_keys
|
359
368
|
else
|
360
|
-
@currentPage.sendEvent('keypress', key)
|
361
|
-
|
362
|
-
@current_command.sendResponse(true)
|
369
|
+
@currentPage.sendEvent('keypress', key, null, null, current_modifier_code)
|
363
370
|
|
364
371
|
render_base64: (format, { full = false, selector = null } = {})->
|
365
372
|
window_scroll_position = @currentPage.native().evaluate("function(){ return [window.pageXOffset, window.pageYOffset] }")
|
@@ -535,3 +542,5 @@ class Poltergeist.Browser
|
|
535
542
|
wildcard = wildcard.replace(/\?/g, ".")
|
536
543
|
new RegExp(wildcard, "i")
|
537
544
|
|
545
|
+
_isElementArgument: (arg)->
|
546
|
+
typeof(arg) == "object" and typeof(arg['ELEMENT']) == "object"
|
@@ -97,7 +97,7 @@ PoltergeistAgent = (function() {
|
|
97
97
|
};
|
98
98
|
|
99
99
|
PoltergeistAgent.prototype.clearLocalStorage = function() {
|
100
|
-
return localStorage.clear();
|
100
|
+
return typeof localStorage !== "undefined" && localStorage !== null ? localStorage.clear() : void 0;
|
101
101
|
};
|
102
102
|
|
103
103
|
return PoltergeistAgent;
|
@@ -389,7 +389,9 @@ PoltergeistAgent.Node = (function() {
|
|
389
389
|
};
|
390
390
|
|
391
391
|
Node.prototype.isDisabled = function() {
|
392
|
-
|
392
|
+
var xpath;
|
393
|
+
xpath = 'parent::optgroup[@disabled] | ancestor::select[@disabled] | parent::fieldset[@disabled] | ancestor::*[not(self::legend) or preceding-sibling::legend][parent::fieldset[@disabled]]';
|
394
|
+
return this.element.disabled || document.evaluate(xpath, this.element, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;
|
393
395
|
};
|
394
396
|
|
395
397
|
Node.prototype.path = function() {
|
@@ -1,5 +1,5 @@
|
|
1
|
-
var
|
2
|
-
|
1
|
+
var slice = [].slice,
|
2
|
+
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
3
3
|
|
4
4
|
Poltergeist.Browser = (function() {
|
5
5
|
function Browser(width, height) {
|
@@ -249,12 +249,32 @@ Poltergeist.Browser = (function() {
|
|
249
249
|
return this.current_command.sendResponse(this.node(page_id, id).path());
|
250
250
|
};
|
251
251
|
|
252
|
-
Browser.prototype.evaluate = function(
|
253
|
-
|
252
|
+
Browser.prototype.evaluate = function() {
|
253
|
+
var arg, args, i, len, ref, script;
|
254
|
+
script = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
255
|
+
for (i = 0, len = args.length; i < len; i++) {
|
256
|
+
arg = args[i];
|
257
|
+
if (this._isElementArgument(arg)) {
|
258
|
+
if (arg["ELEMENT"]["page_id"] !== this.currentPage.id) {
|
259
|
+
throw new Poltergeist.ObsoleteNode;
|
260
|
+
}
|
261
|
+
}
|
262
|
+
}
|
263
|
+
return this.current_command.sendResponse((ref = this.currentPage).evaluate.apply(ref, ["function() { return " + script + " }"].concat(slice.call(args))));
|
254
264
|
};
|
255
265
|
|
256
|
-
Browser.prototype.execute = function(
|
257
|
-
|
266
|
+
Browser.prototype.execute = function() {
|
267
|
+
var arg, args, i, len, ref, script;
|
268
|
+
script = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
269
|
+
for (i = 0, len = args.length; i < len; i++) {
|
270
|
+
arg = args[i];
|
271
|
+
if (this._isElementArgument(arg)) {
|
272
|
+
if (arg["ELEMENT"]["page_id"] !== this.currentPage.id) {
|
273
|
+
throw new Poltergeist.ObsoleteNode;
|
274
|
+
}
|
275
|
+
}
|
276
|
+
}
|
277
|
+
(ref = this.currentPage).execute.apply(ref, ["function() { " + script + " }"].concat(slice.call(args)));
|
258
278
|
return this.current_command.sendResponse(true);
|
259
279
|
};
|
260
280
|
|
@@ -450,36 +470,51 @@ Poltergeist.Browser = (function() {
|
|
450
470
|
};
|
451
471
|
|
452
472
|
Browser.prototype.send_keys = function(page_id, id, keys) {
|
453
|
-
var
|
473
|
+
var target;
|
454
474
|
target = this.node(page_id, id);
|
455
475
|
if (!target.containsSelection()) {
|
456
476
|
target.mouseEvent('click');
|
457
477
|
}
|
478
|
+
this._send_keys_with_modifiers(keys);
|
479
|
+
return this.current_command.sendResponse(true);
|
480
|
+
};
|
481
|
+
|
482
|
+
Browser.prototype._send_keys_with_modifiers = function(keys, current_modifier_code) {
|
483
|
+
var i, j, key, len, len1, modifier_code, modifier_key, modifier_keys, results, sequence;
|
484
|
+
if (current_modifier_code == null) {
|
485
|
+
current_modifier_code = 0;
|
486
|
+
}
|
487
|
+
results = [];
|
458
488
|
for (i = 0, len = keys.length; i < len; i++) {
|
459
489
|
sequence = keys[i];
|
460
490
|
key = sequence.key != null ? this.currentPage.keyCode(sequence.key) || sequence.key : sequence;
|
461
491
|
if (sequence.modifier != null) {
|
462
492
|
modifier_keys = this.currentPage.keyModifierKeys(sequence.modifier);
|
463
|
-
modifier_code = this.currentPage.keyModifierCode(sequence.modifier);
|
493
|
+
modifier_code = this.currentPage.keyModifierCode(sequence.modifier) | current_modifier_code;
|
464
494
|
for (j = 0, len1 = modifier_keys.length; j < len1; j++) {
|
465
495
|
modifier_key = modifier_keys[j];
|
466
496
|
this.currentPage.sendEvent('keydown', modifier_key);
|
467
497
|
}
|
468
|
-
this.
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
498
|
+
this._send_keys_with_modifiers([].concat(key), modifier_code);
|
499
|
+
results.push((function() {
|
500
|
+
var k, len2, results1;
|
501
|
+
results1 = [];
|
502
|
+
for (k = 0, len2 = modifier_keys.length; k < len2; k++) {
|
503
|
+
modifier_key = modifier_keys[k];
|
504
|
+
results1.push(this.currentPage.sendEvent('keyup', modifier_key));
|
505
|
+
}
|
506
|
+
return results1;
|
507
|
+
}).call(this));
|
473
508
|
} else {
|
474
|
-
this.currentPage.sendEvent('keypress', key);
|
509
|
+
results.push(this.currentPage.sendEvent('keypress', key, null, null, current_modifier_code));
|
475
510
|
}
|
476
511
|
}
|
477
|
-
return
|
512
|
+
return results;
|
478
513
|
};
|
479
514
|
|
480
|
-
Browser.prototype.render_base64 = function(format,
|
515
|
+
Browser.prototype.render_base64 = function(format, arg1) {
|
481
516
|
var dimensions, encoded_image, full, ref, ref1, ref2, ref3, selector, window_scroll_position;
|
482
|
-
ref =
|
517
|
+
ref = arg1 != null ? arg1 : {}, full = (ref1 = ref.full) != null ? ref1 : false, selector = (ref2 = ref.selector) != null ? ref2 : null;
|
483
518
|
window_scroll_position = this.currentPage["native"]().evaluate("function(){ return [window.pageXOffset, window.pageYOffset] }");
|
484
519
|
dimensions = this.set_clip_rect(full, selector);
|
485
520
|
encoded_image = this.currentPage.renderBase64(format);
|
@@ -491,9 +526,9 @@ Poltergeist.Browser = (function() {
|
|
491
526
|
return this.current_command.sendResponse(encoded_image);
|
492
527
|
};
|
493
528
|
|
494
|
-
Browser.prototype.render = function(path,
|
529
|
+
Browser.prototype.render = function(path, arg1) {
|
495
530
|
var dimensions, format, full, options, quality, ref, ref1, ref2, ref3, ref4, ref5, selector, window_scroll_position;
|
496
|
-
ref =
|
531
|
+
ref = arg1 != null ? arg1 : {}, full = (ref1 = ref.full) != null ? ref1 : false, selector = (ref2 = ref.selector) != null ? ref2 : null, format = (ref3 = ref.format) != null ? ref3 : null, quality = (ref4 = ref.quality) != null ? ref4 : null;
|
497
532
|
window_scroll_position = this.currentPage["native"]().evaluate("function(){ return [window.pageXOffset, window.pageYOffset] }");
|
498
533
|
dimensions = this.set_clip_rect(full, selector);
|
499
534
|
options = {};
|
@@ -733,6 +768,10 @@ Poltergeist.Browser = (function() {
|
|
733
768
|
return new RegExp(wildcard, "i");
|
734
769
|
};
|
735
770
|
|
771
|
+
Browser.prototype._isElementArgument = function(arg) {
|
772
|
+
return typeof arg === "object" && typeof arg['ELEMENT'] === "object";
|
773
|
+
};
|
774
|
+
|
736
775
|
return Browser;
|
737
776
|
|
738
777
|
})();
|
@@ -216,24 +216,35 @@ Poltergeist.WebPage = (function() {
|
|
216
216
|
};
|
217
217
|
|
218
218
|
WebPage.prototype.keyCode = function(name) {
|
219
|
+
if (name === "Ctrl") {
|
220
|
+
name = "Control";
|
221
|
+
}
|
219
222
|
return this["native"]().event.key[name];
|
220
223
|
};
|
221
224
|
|
222
225
|
WebPage.prototype.keyModifierCode = function(names) {
|
223
226
|
var modifiers;
|
224
227
|
modifiers = this["native"]().event.modifier;
|
225
|
-
|
228
|
+
return names.split(',').map(function(name) {
|
226
229
|
return modifiers[name];
|
227
|
-
}))
|
228
|
-
|
230
|
+
}).reduce(function(n1, n2) {
|
231
|
+
return n1 | n2;
|
232
|
+
});
|
229
233
|
};
|
230
234
|
|
231
235
|
WebPage.prototype.keyModifierKeys = function(names) {
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
236
|
+
var k, len2, name, ref2, results;
|
237
|
+
ref2 = names.split(',');
|
238
|
+
results = [];
|
239
|
+
for (k = 0, len2 = ref2.length; k < len2; k++) {
|
240
|
+
name = ref2[k];
|
241
|
+
if (!(name !== 'keypad')) {
|
242
|
+
continue;
|
243
|
+
}
|
244
|
+
name = name.charAt(0).toUpperCase() + name.substring(1);
|
245
|
+
results.push(this.keyCode(name));
|
246
|
+
}
|
247
|
+
return results;
|
237
248
|
};
|
238
249
|
|
239
250
|
WebPage.prototype._waitState_until = function(state, callback, timeout, timeout_callback) {
|
@@ -505,13 +516,13 @@ Poltergeist.WebPage = (function() {
|
|
505
516
|
var args, fn, ref2;
|
506
517
|
fn = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
507
518
|
this.injectAgent();
|
508
|
-
return (ref2 = this["native"]()).evaluate.apply(ref2, ["function() { var _result = " + (this.stringifyCall(fn)) + "; return (_result == null) ? undefined : _result; }"].concat(slice.call(args)));
|
519
|
+
return (ref2 = this["native"]()).evaluate.apply(ref2, ["function() { for(var i=0; i < arguments.length; i++){ if ((typeof(arguments[i]) == 'object') && (typeof(arguments[i]['ELEMENT']) == 'object')){ arguments[i] = window.__poltergeist.get(arguments[i]['ELEMENT']['id']).element; } } var _result = " + (this.stringifyCall(fn)) + "; return (_result == null) ? undefined : _result; }"].concat(slice.call(args)));
|
509
520
|
};
|
510
521
|
|
511
522
|
WebPage.prototype.execute = function() {
|
512
523
|
var args, fn, ref2;
|
513
524
|
fn = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
|
514
|
-
return (ref2 = this["native"]()).evaluate.apply(ref2, ["function() { " + (this.stringifyCall(fn)) + " }"].concat(slice.call(args)));
|
525
|
+
return (ref2 = this["native"]()).evaluate.apply(ref2, ["function() { for(var i=0; i < arguments.length; i++){ if ((typeof(arguments[i]) == 'object') && (typeof(arguments[i]['ELEMENT']) == 'object')){ arguments[i] = window.__poltergeist.get(arguments[i]['ELEMENT']['id']).element; } } " + (this.stringifyCall(fn)) + " }"].concat(slice.call(args)));
|
515
526
|
};
|
516
527
|
|
517
528
|
WebPage.prototype.stringifyCall = function(fn) {
|
@@ -160,16 +160,17 @@ class Poltergeist.WebPage
|
|
160
160
|
this.native().windowName
|
161
161
|
|
162
162
|
keyCode: (name) ->
|
163
|
+
name = "Control" if name == "Ctrl"
|
163
164
|
this.native().event.key[name]
|
164
165
|
|
165
166
|
keyModifierCode: (names) ->
|
166
167
|
modifiers = this.native().event.modifier
|
167
|
-
names
|
168
|
-
names[0] | names[1] # return codes for 1 or 2 modifiers
|
168
|
+
names.split(',').map((name) -> modifiers[name]).reduce((n1,n2) -> n1 | n2)
|
169
169
|
|
170
170
|
keyModifierKeys: (names) ->
|
171
|
-
names.split(',')
|
172
|
-
|
171
|
+
for name in names.split(',') when name isnt 'keypad'
|
172
|
+
name = name.charAt(0).toUpperCase() + name.substring(1)
|
173
|
+
this.keyCode(name)
|
173
174
|
|
174
175
|
_waitState_until: (state, callback, timeout, timeout_callback) ->
|
175
176
|
if (@state == state)
|
@@ -345,11 +346,23 @@ class Poltergeist.WebPage
|
|
345
346
|
|
346
347
|
evaluate: (fn, args...) ->
|
347
348
|
this.injectAgent()
|
348
|
-
this.native().evaluate("function() {
|
349
|
+
this.native().evaluate("function() {
|
350
|
+
for(var i=0; i < arguments.length; i++){
|
351
|
+
if ((typeof(arguments[i]) == 'object') && (typeof(arguments[i]['ELEMENT']) == 'object')){
|
352
|
+
arguments[i] = window.__poltergeist.get(arguments[i]['ELEMENT']['id']).element;
|
353
|
+
}
|
354
|
+
}
|
355
|
+
var _result = #{this.stringifyCall(fn)};
|
349
356
|
return (_result == null) ? undefined : _result; }", args...)
|
350
357
|
|
351
358
|
execute: (fn, args...) ->
|
352
|
-
this.native().evaluate("function() {
|
359
|
+
this.native().evaluate("function() {
|
360
|
+
for(var i=0; i < arguments.length; i++){
|
361
|
+
if ((typeof(arguments[i]) == 'object') && (typeof(arguments[i]['ELEMENT']) == 'object')){
|
362
|
+
arguments[i] = window.__poltergeist.get(arguments[i]['ELEMENT']['id']).element;
|
363
|
+
}
|
364
|
+
}
|
365
|
+
#{this.stringifyCall(fn)} }", args...)
|
353
366
|
|
354
367
|
stringifyCall: (fn) ->
|
355
368
|
"(#{fn.toString()}).apply(this, arguments)"
|
@@ -134,12 +134,12 @@ module Capybara::Poltergeist
|
|
134
134
|
browser.click_coordinates(x, y)
|
135
135
|
end
|
136
136
|
|
137
|
-
def evaluate_script(script)
|
138
|
-
browser.evaluate(script)
|
137
|
+
def evaluate_script(script, *args)
|
138
|
+
browser.evaluate(script, *args.map { |arg| arg.is_a?(Capybara::Poltergeist::Node) ? arg.native : arg})
|
139
139
|
end
|
140
140
|
|
141
|
-
def execute_script(script)
|
142
|
-
browser.execute(script)
|
141
|
+
def execute_script(script, *args)
|
142
|
+
browser.execute(script, *args.map { |arg| arg.is_a?(Capybara::Poltergeist::Node) ? arg.native : arg})
|
143
143
|
nil
|
144
144
|
end
|
145
145
|
|
@@ -168,6 +168,16 @@ module Capybara::Poltergeist
|
|
168
168
|
command :path
|
169
169
|
end
|
170
170
|
|
171
|
+
# @api private
|
172
|
+
def to_json(*)
|
173
|
+
JSON.generate as_json
|
174
|
+
end
|
175
|
+
|
176
|
+
# @api private
|
177
|
+
def as_json(*)
|
178
|
+
{ ELEMENT: {page_id: @page_id, id: @id} }
|
179
|
+
end
|
180
|
+
|
171
181
|
private
|
172
182
|
|
173
183
|
def filter_text(text)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poltergeist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Leighton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -176,14 +176,14 @@ dependencies:
|
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: 1.
|
179
|
+
version: 1.12.2
|
180
180
|
type: :development
|
181
181
|
prerelease: false
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: 1.
|
186
|
+
version: 1.12.2
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: listen
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|