capybara-webkit 0.13.2 → 0.14.0
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/.travis.yml +10 -0
- data/Gemfile.lock +20 -18
- data/NEWS.md +20 -1
- data/README.md +12 -10
- data/capybara-webkit.gemspec +3 -2
- data/lib/capybara/webkit/browser.rb +10 -19
- data/lib/capybara/webkit/connection.rb +13 -34
- data/lib/capybara/webkit/driver.rb +5 -22
- data/lib/capybara/webkit/node.rb +10 -2
- data/lib/capybara/webkit/version.rb +1 -1
- data/lib/capybara_webkit_builder.rb +10 -1
- data/spec/browser_spec.rb +1 -1
- data/spec/connection_spec.rb +4 -2
- data/spec/driver_rendering_spec.rb +2 -2
- data/spec/driver_resize_window_spec.rb +29 -40
- data/spec/driver_spec.rb +368 -125
- data/spec/integration/session_spec.rb +100 -6
- data/spec/spec_helper.rb +6 -9
- data/spec/support/app_runner.rb +2 -12
- data/src/Authenticate.cpp +2 -2
- data/src/ClearCookies.cpp +1 -1
- data/src/ClearPromptText.cpp +1 -1
- data/src/Command.cpp +13 -0
- data/src/Command.h +6 -0
- data/src/CommandFactory.cpp +1 -3
- data/src/Connection.cpp +4 -3
- data/src/ConsoleMessages.cpp +4 -1
- data/src/CurrentUrl.cpp +1 -16
- data/src/CurrentUrl.h +0 -6
- data/src/EnableLogging.cpp +1 -1
- data/src/Evaluate.cpp +3 -74
- data/src/Evaluate.h +0 -8
- data/src/Execute.cpp +2 -2
- data/src/Find.cpp +2 -2
- data/src/FrameFocus.cpp +3 -3
- data/src/GetCookies.cpp +1 -1
- data/src/GetTimeout.cpp +1 -1
- data/src/GetWindowHandle.cpp +1 -1
- data/src/GetWindowHandles.cpp +6 -5
- data/src/Header.cpp +2 -2
- data/src/Headers.cpp +1 -1
- data/src/IgnoreSslErrors.cpp +1 -1
- data/src/JavascriptAlertMessages.cpp +4 -1
- data/src/JavascriptConfirmMessages.cpp +4 -1
- data/src/JavascriptPromptMessages.cpp +4 -1
- data/src/JsonSerializer.cpp +116 -0
- data/src/JsonSerializer.h +20 -0
- data/src/NetworkAccessManager.cpp +58 -17
- data/src/NetworkAccessManager.h +6 -0
- data/src/NoOpReply.cpp +32 -0
- data/src/NoOpReply.h +18 -0
- data/src/Node.cpp +1 -1
- data/src/NullCommand.cpp +1 -1
- data/src/PageLoadingCommand.cpp +5 -4
- data/src/Render.cpp +1 -1
- data/src/Reset.cpp +1 -1
- data/src/ResizeWindow.cpp +1 -1
- data/src/Response.cpp +3 -3
- data/src/Response.h +13 -4
- data/src/SetConfirmAction.cpp +1 -1
- data/src/SetCookie.cpp +1 -1
- data/src/SetPromptAction.cpp +1 -1
- data/src/SetPromptText.cpp +1 -1
- data/src/SetProxy.cpp +2 -2
- data/src/SetSkipImageLoading.cpp +1 -1
- data/src/SetTimeout.cpp +2 -2
- data/src/SetUrlBlacklist.cpp +15 -0
- data/src/SetUrlBlacklist.h +11 -0
- data/src/Status.cpp +1 -1
- data/src/TimeoutCommand.cpp +6 -6
- data/src/TimeoutCommand.h +0 -3
- data/src/UnsupportedContentHandler.cpp +1 -4
- data/src/Visit.cpp +1 -1
- data/src/WebPage.cpp +41 -31
- data/src/WebPage.h +14 -12
- data/src/WebPageManager.cpp +13 -8
- data/src/WebPageManager.h +3 -2
- data/src/WindowFocus.cpp +2 -2
- data/src/body.cpp +7 -2
- data/src/capybara.js +10 -2
- data/src/find_command.h +1 -3
- data/src/webkit_server.pro +7 -7
- metadata +47 -82
- checksums.yaml +0 -7
- data/spec/integration/driver_spec.rb +0 -21
- data/src/RequestedUrl.cpp +0 -13
- data/src/RequestedUrl.h +0 -10
- data/src/Source.cpp +0 -19
- data/src/Source.h +0 -18
- data/src/Url.cpp +0 -13
- data/src/Url.h +0 -10
data/.travis.yml
ADDED
data/Gemfile.lock
CHANGED
@@ -1,36 +1,38 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
capybara-webkit (0.
|
5
|
-
capybara (
|
4
|
+
capybara-webkit (0.14.0)
|
5
|
+
capybara (~> 2.0, >= 2.0.2)
|
6
6
|
json
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
|
+
addressable (2.3.2)
|
11
12
|
appraisal (0.4.0)
|
12
13
|
bundler
|
13
14
|
rake
|
14
|
-
capybara (
|
15
|
+
capybara (2.0.2)
|
15
16
|
mime-types (>= 1.16)
|
16
17
|
nokogiri (>= 1.3.3)
|
17
18
|
rack (>= 1.0.0)
|
18
19
|
rack-test (>= 0.5.4)
|
19
20
|
selenium-webdriver (~> 2.0)
|
20
|
-
xpath (~> 0.
|
21
|
-
childprocess (0.3.
|
22
|
-
ffi (~> 1.0, >= 1.0.
|
21
|
+
xpath (~> 1.0.0)
|
22
|
+
childprocess (0.3.6)
|
23
|
+
ffi (~> 1.0, >= 1.0.6)
|
23
24
|
diff-lcs (1.1.2)
|
24
|
-
ffi (1.
|
25
|
-
json (1.
|
26
|
-
|
25
|
+
ffi (1.2.0)
|
26
|
+
json (1.7.6)
|
27
|
+
libwebsocket (0.1.7.1)
|
28
|
+
addressable
|
29
|
+
websocket
|
30
|
+
mime-types (1.19)
|
27
31
|
mini_magick (3.2.1)
|
28
32
|
subexec (~> 0.0.4)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
mini_portile (~> 0.5.0)
|
33
|
-
rack (1.3.2)
|
33
|
+
multi_json (1.5.0)
|
34
|
+
nokogiri (1.5.6)
|
35
|
+
rack (1.4.1)
|
34
36
|
rack-test (0.6.2)
|
35
37
|
rack (>= 1.0)
|
36
38
|
rake (0.9.2)
|
@@ -43,18 +45,18 @@ GEM
|
|
43
45
|
diff-lcs (~> 1.1.2)
|
44
46
|
rspec-mocks (2.6.0)
|
45
47
|
rubyzip (0.9.9)
|
46
|
-
selenium-webdriver (2.
|
48
|
+
selenium-webdriver (2.27.2)
|
47
49
|
childprocess (>= 0.2.5)
|
50
|
+
libwebsocket (~> 0.1.3)
|
48
51
|
multi_json (~> 1.0)
|
49
52
|
rubyzip
|
50
|
-
websocket (~> 1.0.4)
|
51
53
|
sinatra (1.1.2)
|
52
54
|
rack (~> 1.1)
|
53
55
|
tilt (~> 1.2)
|
54
56
|
subexec (0.0.4)
|
55
57
|
tilt (1.2.2)
|
56
|
-
websocket (1.0.
|
57
|
-
xpath (0.
|
58
|
+
websocket (1.0.6)
|
59
|
+
xpath (1.0.0)
|
58
60
|
nokogiri (~> 1.3)
|
59
61
|
|
60
62
|
PLATFORMS
|
data/NEWS.md
CHANGED
@@ -1,4 +1,23 @@
|
|
1
|
-
New for
|
1
|
+
New for 0.14.0:
|
2
|
+
|
3
|
+
* URL blacklist support.
|
4
|
+
* Various fixes for JavaScript console messages.
|
5
|
+
* Various compilation fixes.
|
6
|
+
* Fix status code and headers commands for iframes.
|
7
|
+
* Capybara 2.0 compatibility.
|
8
|
+
* Driver#render replaced by Session#save_screenshot.
|
9
|
+
* Driver#source and Driver#body return the HTML representation of the DOM. Unsupported content is returned as plain text.
|
10
|
+
* HTML5 multi-file upload support.
|
11
|
+
* Driver#url and Driver#requested_url removed.
|
12
|
+
* JavaScipt console messages and alerts are now written to the logger instead of directly to stdout.
|
13
|
+
* Dropped support for Qt 4.7.
|
14
|
+
* Fix deadlocks encountered during page load.
|
15
|
+
* Delete Response objects when commands have timed out.
|
16
|
+
* Fix an infinite loop when invalid credentials are used for HTTP auth.
|
17
|
+
* Ensure queued commands start only after pending commands have finished.
|
18
|
+
* Fix segfaults related to web fonts on OS X.
|
19
|
+
|
20
|
+
New for 0.13.0:
|
2
21
|
|
3
22
|
* Better detect page load success, and better handle load failures.
|
4
23
|
* HTTP Basic Auth support.
|
data/README.md
CHANGED
@@ -1,22 +1,24 @@
|
|
1
1
|
capybara-webkit
|
2
2
|
===============
|
3
3
|
|
4
|
-
[](https://codeclimate.com/github/thoughtbot/capybara-webkit)
|
4
|
+
[](https://travis-ci.org/thoughtbot/capybara-webkit) [](https://codeclimate.com/github/thoughtbot/capybara-webkit)
|
5
5
|
|
6
6
|
A [capybara](https://github.com/jnicklas/capybara) driver that uses [WebKit](http://webkit.org) via [QtWebKit](http://doc.qt.nokia.com/4.7/qtwebkit.html).
|
7
7
|
|
8
8
|
Qt Dependency and Installation Issues
|
9
|
-
|
9
|
+
-------------------------------------
|
10
10
|
|
11
11
|
capybara-webkit depends on a WebKit implementation from Qt, a cross-platform
|
12
12
|
development toolkit. You'll need to download the Qt libraries to build and
|
13
13
|
install the gem. You can find instructions for downloading and installing QT on
|
14
|
-
the
|
14
|
+
the
|
15
|
+
[capybara-webkit wiki](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit).
|
16
|
+
capybara-webkit requires Qt version 4.8.
|
15
17
|
|
16
18
|
Windows Support
|
17
19
|
---------------
|
18
20
|
|
19
|
-
Currently
|
21
|
+
Currently 32-bit Windows will compile capybara-webkit. Support for Windows is provided by the open source community and Windows related issues should be posted to the [mailing list](http://groups.google.com/group/capybara-webkit)
|
20
22
|
|
21
23
|
Reporting Issues
|
22
24
|
----------------
|
@@ -53,7 +55,7 @@ Set your Capybara Javascript driver to webkit:
|
|
53
55
|
|
54
56
|
In cucumber, tag scenarios with @javascript to run them using a headless WebKit browser.
|
55
57
|
|
56
|
-
In RSpec, use the
|
58
|
+
In RSpec, use the `:js => true` flag. See the [capybara documention](http://rubydoc.info/gems/capybara#Using_Capybara_with_RSpec) for more information about using capybara with RSpec.
|
57
59
|
|
58
60
|
Take note of the transactional fixtures section of the [capybara README](https://github.com/jnicklas/capybara/blob/master/README.md).
|
59
61
|
|
@@ -99,10 +101,6 @@ capybara-webkit supports a few methods that are not part of the standard capybar
|
|
99
101
|
page.driver.evaluate_script("window.innerWidth")
|
100
102
|
=> 500
|
101
103
|
|
102
|
-
**render**: render a screenshot of the current view (requires [mini_magick](https://github.com/probablycorey/mini_magick) and [ImageMagick](http://www.imagemagick.org))
|
103
|
-
|
104
|
-
page.driver.render "tmp/screenshot.png"
|
105
|
-
|
106
104
|
**cookies**: allows read-only access of cookies for the current session
|
107
105
|
|
108
106
|
page.driver.cookies["alpha"]
|
@@ -171,6 +169,10 @@ capybara-webkit supports a few methods that are not part of the standard capybar
|
|
171
169
|
page.driver.console_messages.first[:message]
|
172
170
|
=> "42"
|
173
171
|
|
172
|
+
**header**: set the given HTTP header for subsequent requests
|
173
|
+
|
174
|
+
page.driver.header 'Referer', 'https://www.thoughtbot.com'
|
175
|
+
|
174
176
|
Contributing
|
175
177
|
------------
|
176
178
|
|
@@ -179,7 +181,7 @@ See the CONTRIBUTING document.
|
|
179
181
|
About
|
180
182
|
-----
|
181
183
|
|
182
|
-
The capybara WebKit driver is maintained by Joe Ferris and Matt
|
184
|
+
The capybara WebKit driver is maintained by Joe Ferris and Matt Horan. It was written by [thoughtbot, inc](http://thoughtbot.com/community) with the help of numerous [contributions from the open source community](https://github.com/thoughtbot/capybara-webkit/contributors).
|
183
185
|
|
184
186
|
Code for rendering the current webpage to a PNG is borrowed from Phantom.js' implementation.
|
185
187
|
|
data/capybara-webkit.gemspec
CHANGED
@@ -4,7 +4,8 @@ require "capybara/webkit/version"
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "capybara-webkit"
|
6
6
|
s.version = Capybara::Driver::Webkit::VERSION.dup
|
7
|
-
s.authors = ["thoughtbot", "Joe Ferris", "Matt
|
7
|
+
s.authors = ["thoughtbot", "Joe Ferris", "Matt Horan", "Matt Mongeau",
|
8
|
+
"Mike Burns", "Jason Morrison"]
|
8
9
|
s.email = "support@thoughtbot.com"
|
9
10
|
s.homepage = "http://github.com/thoughtbot/capybara-webkit"
|
10
11
|
s.summary = "Headless Webkit driver for Capybara"
|
@@ -15,7 +16,7 @@ Gem::Specification.new do |s|
|
|
15
16
|
|
16
17
|
s.extensions = "extconf.rb"
|
17
18
|
|
18
|
-
s.add_runtime_dependency("capybara",
|
19
|
+
s.add_runtime_dependency("capybara", "~> 2.0", ">= 2.0.2")
|
19
20
|
s.add_runtime_dependency("json")
|
20
21
|
|
21
22
|
s.add_development_dependency("rspec", "~> 2.6.0")
|
@@ -34,18 +34,13 @@ module Capybara::Webkit
|
|
34
34
|
command("Body")
|
35
35
|
end
|
36
36
|
|
37
|
-
def source
|
38
|
-
command("Source")
|
39
|
-
end
|
40
|
-
|
41
37
|
def status_code
|
42
38
|
command("Status").to_i
|
43
39
|
end
|
44
40
|
|
45
41
|
def console_messages
|
46
|
-
command("ConsoleMessages")
|
47
|
-
|
48
|
-
{ :source => parts.first, :line_number => Integer(parts[1]), :message => parts.last }
|
42
|
+
JSON.parse(command("ConsoleMessages")).map do |message|
|
43
|
+
message.inject({}) { |m,(k,v)| m.merge(k.to_sym => v) }
|
49
44
|
end
|
50
45
|
end
|
51
46
|
|
@@ -56,29 +51,21 @@ module Capybara::Webkit
|
|
56
51
|
end
|
57
52
|
|
58
53
|
def alert_messages
|
59
|
-
command("JavascriptAlertMessages")
|
54
|
+
JSON.parse(command("JavascriptAlertMessages"))
|
60
55
|
end
|
61
56
|
|
62
57
|
def confirm_messages
|
63
|
-
command("JavascriptConfirmMessages")
|
58
|
+
JSON.parse(command("JavascriptConfirmMessages"))
|
64
59
|
end
|
65
60
|
|
66
61
|
def prompt_messages
|
67
|
-
command("JavascriptPromptMessages")
|
62
|
+
JSON.parse(command("JavascriptPromptMessages"))
|
68
63
|
end
|
69
64
|
|
70
65
|
def response_headers
|
71
66
|
Hash[command("Headers").split("\n").map { |header| header.split(": ") }]
|
72
67
|
end
|
73
68
|
|
74
|
-
def url
|
75
|
-
command("Url")
|
76
|
-
end
|
77
|
-
|
78
|
-
def requested_url
|
79
|
-
command("RequestedUrl")
|
80
|
-
end
|
81
|
-
|
82
69
|
def current_url
|
83
70
|
command("CurrentUrl")
|
84
71
|
end
|
@@ -141,6 +128,10 @@ module Capybara::Webkit
|
|
141
128
|
command("ClearPromptText")
|
142
129
|
end
|
143
130
|
|
131
|
+
def url_blacklist=(black_list)
|
132
|
+
command("SetUrlBlacklist", *Array(black_list))
|
133
|
+
end
|
134
|
+
|
144
135
|
def command(name, *args)
|
145
136
|
@connection.puts name
|
146
137
|
@connection.puts args.size
|
@@ -209,7 +200,7 @@ module Capybara::Webkit
|
|
209
200
|
elsif result != 'ok'
|
210
201
|
case response = read_response
|
211
202
|
when "timeout"
|
212
|
-
raise
|
203
|
+
raise Timeout::Error, "Request timed out after #{timeout_seconds}"
|
213
204
|
else
|
214
205
|
raise InvalidResponseError, response
|
215
206
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'socket'
|
2
2
|
require 'timeout'
|
3
3
|
require 'thread'
|
4
|
+
require 'open3'
|
4
5
|
|
5
6
|
module Capybara::Webkit
|
6
7
|
class Connection
|
@@ -11,8 +12,7 @@ module Capybara::Webkit
|
|
11
12
|
|
12
13
|
def initialize(options = {})
|
13
14
|
@socket_class = options[:socket_class] || TCPSocket
|
14
|
-
@
|
15
|
-
@command = options[:command] || SERVER_PATH
|
15
|
+
@output_target = options.has_key?(:stdout) ? options[:stdout] : $stdout
|
16
16
|
start_server
|
17
17
|
connect
|
18
18
|
end
|
@@ -38,12 +38,12 @@ module Capybara::Webkit
|
|
38
38
|
def start_server
|
39
39
|
open_pipe
|
40
40
|
discover_port
|
41
|
-
|
41
|
+
forward_output_in_background_thread
|
42
42
|
end
|
43
43
|
|
44
44
|
def open_pipe
|
45
|
-
@
|
46
|
-
@pid =
|
45
|
+
_, @pipe_stdout, @pipe_stderr, wait_thr = Open3.popen3(SERVER_PATH)
|
46
|
+
@pid = wait_thr[:pid]
|
47
47
|
register_shutdown_hook
|
48
48
|
end
|
49
49
|
|
@@ -65,40 +65,19 @@ module Capybara::Webkit
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def discover_port
|
68
|
-
if IO.select([@
|
69
|
-
@port = ((@
|
68
|
+
if IO.select([@pipe_stdout], nil, nil, WEBKIT_SERVER_START_TIMEOUT)
|
69
|
+
@port = ((@pipe_stdout.first || '').match(/listening on port: (\d+)/) || [])[1].to_i
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
def
|
74
|
-
|
73
|
+
def forward_output_in_background_thread
|
74
|
+
Thread.new do
|
75
75
|
Thread.current.abort_on_exception = true
|
76
|
-
|
76
|
+
IO.copy_stream(@pipe_stdout, @output_target)
|
77
77
|
end
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
while pipe_readable?
|
82
|
-
line = @pipe.readline
|
83
|
-
if @stdout
|
84
|
-
@stdout.write(line)
|
85
|
-
@stdout.flush
|
86
|
-
end
|
87
|
-
end
|
88
|
-
rescue EOFError
|
89
|
-
end
|
90
|
-
|
91
|
-
if !defined?(RUBY_ENGINE) || (RUBY_ENGINE == "ruby" && RUBY_VERSION <= "1.8")
|
92
|
-
# please note the use of IO::select() here, as it is used specifically to
|
93
|
-
# preserve correct signal handling behavior in ruby 1.8.
|
94
|
-
# https://github.com/thibaudgg/rb-fsevent/commit/d1a868bf8dc72dbca102bedbadff76c7e6c2dc21
|
95
|
-
# https://github.com/thibaudgg/rb-fsevent/blob/1ca42b987596f350ee7b19d8f8210b7b6ae8766b/ext/fsevent/fsevent_watch.c#L171
|
96
|
-
def pipe_readable?
|
97
|
-
IO.select([@pipe])
|
98
|
-
end
|
99
|
-
else
|
100
|
-
def pipe_readable?
|
101
|
-
!@pipe.eof?
|
78
|
+
Thread.new do
|
79
|
+
Thread.current.abort_on_exception = true
|
80
|
+
IO.copy_stream(@pipe_stderr, @output_target)
|
102
81
|
end
|
103
82
|
end
|
104
83
|
|
@@ -14,8 +14,6 @@ module Capybara::Webkit
|
|
14
14
|
def initialize(app, options={})
|
15
15
|
@app = app
|
16
16
|
@options = options
|
17
|
-
@rack_server = Capybara::Server.new(@app)
|
18
|
-
@rack_server.boot if Capybara.run_server
|
19
17
|
@browser = options[:browser] || Browser.new(Connection.new(options))
|
20
18
|
end
|
21
19
|
|
@@ -27,23 +25,15 @@ module Capybara::Webkit
|
|
27
25
|
browser.current_url
|
28
26
|
end
|
29
27
|
|
30
|
-
def requested_url
|
31
|
-
browser.requested_url
|
32
|
-
end
|
33
|
-
|
34
28
|
def visit(path)
|
35
|
-
browser.visit(
|
29
|
+
browser.visit(path)
|
36
30
|
end
|
37
31
|
|
38
32
|
def find(query)
|
39
33
|
browser.find(query).map { |native| Node.new(self, native) }
|
40
34
|
end
|
41
35
|
|
42
|
-
def
|
43
|
-
browser.source
|
44
|
-
end
|
45
|
-
|
46
|
-
def body
|
36
|
+
def html
|
47
37
|
browser.body
|
48
38
|
end
|
49
39
|
|
@@ -147,7 +137,8 @@ module Capybara::Webkit
|
|
147
137
|
true
|
148
138
|
end
|
149
139
|
|
150
|
-
def
|
140
|
+
def needs_server?
|
141
|
+
true
|
151
142
|
end
|
152
143
|
|
153
144
|
def reset!
|
@@ -158,17 +149,13 @@ module Capybara::Webkit
|
|
158
149
|
false
|
159
150
|
end
|
160
151
|
|
161
|
-
def
|
152
|
+
def save_screenshot(path, options={})
|
162
153
|
options[:width] ||= 1000
|
163
154
|
options[:height] ||= 10
|
164
155
|
|
165
156
|
browser.render path, options[:width], options[:height]
|
166
157
|
end
|
167
158
|
|
168
|
-
def server_port
|
169
|
-
@rack_server.port
|
170
|
-
end
|
171
|
-
|
172
159
|
def cookies
|
173
160
|
@cookie_jar ||= CookieJar.new(browser)
|
174
161
|
end
|
@@ -178,9 +165,5 @@ module Capybara::Webkit
|
|
178
165
|
end
|
179
166
|
|
180
167
|
private
|
181
|
-
|
182
|
-
def url(path)
|
183
|
-
@rack_server.url(path)
|
184
|
-
end
|
185
168
|
end
|
186
169
|
end
|
data/lib/capybara/webkit/node.rb
CHANGED
@@ -12,7 +12,11 @@ module Capybara::Webkit
|
|
12
12
|
if name == 'checked' || name == 'disabled' || name == 'multiple'
|
13
13
|
value == 'true'
|
14
14
|
else
|
15
|
-
|
15
|
+
if invoke("hasAttribute", name) == 'true'
|
16
|
+
value
|
17
|
+
else
|
18
|
+
nil
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
@@ -33,7 +37,7 @@ module Capybara::Webkit
|
|
33
37
|
end
|
34
38
|
|
35
39
|
def set(value)
|
36
|
-
invoke "set", value
|
40
|
+
invoke "set", *[value].flatten
|
37
41
|
end
|
38
42
|
|
39
43
|
def select_option
|
@@ -122,5 +126,9 @@ module Capybara::Webkit
|
|
122
126
|
def multiple_select?
|
123
127
|
self.tag_name == "select" && self["multiple"]
|
124
128
|
end
|
129
|
+
|
130
|
+
def ==(other)
|
131
|
+
invoke("equals", other.native) == "true"
|
132
|
+
end
|
125
133
|
end
|
126
134
|
end
|