poltergeist 1.1.2 → 1.2.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/README.md +50 -21
- data/lib/capybara/poltergeist.rb +1 -0
- data/lib/capybara/poltergeist/browser.rb +39 -15
- data/lib/capybara/poltergeist/client.rb +11 -7
- data/lib/capybara/poltergeist/client/agent.coffee +104 -19
- data/lib/capybara/poltergeist/client/browser.coffee +34 -18
- data/lib/capybara/poltergeist/client/compiled/agent.js +154 -26
- data/lib/capybara/poltergeist/client/compiled/browser.js +54 -22
- data/lib/capybara/poltergeist/client/compiled/connection.js +0 -2
- data/lib/capybara/poltergeist/client/compiled/main.js +32 -15
- data/lib/capybara/poltergeist/client/compiled/node.js +13 -19
- data/lib/capybara/poltergeist/client/compiled/web_page.js +19 -5
- data/lib/capybara/poltergeist/client/main.coffee +9 -4
- data/lib/capybara/poltergeist/client/node.coffee +11 -19
- data/lib/capybara/poltergeist/client/web_page.coffee +4 -5
- data/lib/capybara/poltergeist/driver.rb +15 -3
- data/lib/capybara/poltergeist/errors.rb +20 -5
- data/lib/capybara/poltergeist/node.rb +32 -6
- data/lib/capybara/poltergeist/utility.rb +9 -0
- data/lib/capybara/poltergeist/version.rb +1 -1
- metadata +14 -7
@@ -54,6 +54,16 @@ module Capybara
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
class FrameNotFound < ClientError
|
58
|
+
def name
|
59
|
+
response['args'].first
|
60
|
+
end
|
61
|
+
|
62
|
+
def message
|
63
|
+
"The frame '#{name}' was not found."
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
57
67
|
class NodeError < ClientError
|
58
68
|
attr_reader :node
|
59
69
|
|
@@ -73,19 +83,24 @@ module Capybara
|
|
73
83
|
end
|
74
84
|
end
|
75
85
|
|
76
|
-
class
|
77
|
-
def
|
86
|
+
class MouseEventFailed < NodeError
|
87
|
+
def name
|
78
88
|
response['args'][0]
|
79
89
|
end
|
80
90
|
|
91
|
+
def selector
|
92
|
+
response['args'][1]
|
93
|
+
end
|
94
|
+
|
81
95
|
def position
|
82
|
-
[response['args'][
|
96
|
+
[response['args'][2]['x'], response['args'][2]['y']]
|
83
97
|
end
|
84
98
|
|
85
99
|
def message
|
86
|
-
"
|
100
|
+
"Firing a #{name} at co-ordinates [#{position.join(', ')}] failed. Poltergeist detected " \
|
87
101
|
"another element with CSS selector '#{selector}' at this position. " \
|
88
|
-
"It may be overlapping the element you are trying to
|
102
|
+
"It may be overlapping the element you are trying to interact with. " \
|
103
|
+
"If you don't care about overlapping elements, try using node.trigger('#{name}')."
|
89
104
|
end
|
90
105
|
end
|
91
106
|
|
@@ -22,19 +22,31 @@ module Capybara::Poltergeist
|
|
22
22
|
case error.name
|
23
23
|
when 'Poltergeist.ObsoleteNode'
|
24
24
|
raise ObsoleteNode.new(self, error.response)
|
25
|
-
when 'Poltergeist.
|
26
|
-
raise
|
25
|
+
when 'Poltergeist.MouseEventFailed'
|
26
|
+
raise MouseEventFailed.new(self, error.response)
|
27
27
|
else
|
28
28
|
raise
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def find(selector)
|
33
|
-
command(:find_within, selector).map { |id| self.class.new(driver, page_id, id) }
|
32
|
+
def find(method, selector)
|
33
|
+
command(:find_within, method, selector).map { |id| self.class.new(driver, page_id, id) }
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
|
36
|
+
def find_xpath(selector)
|
37
|
+
find :xpath, selector
|
38
|
+
end
|
39
|
+
|
40
|
+
def find_css(selector)
|
41
|
+
find :css, selector
|
42
|
+
end
|
43
|
+
|
44
|
+
def all_text
|
45
|
+
filter_text command(:all_text)
|
46
|
+
end
|
47
|
+
|
48
|
+
def visible_text
|
49
|
+
filter_text command(:visible_text)
|
38
50
|
end
|
39
51
|
|
40
52
|
def [](name)
|
@@ -88,6 +100,10 @@ module Capybara::Poltergeist
|
|
88
100
|
self[:selected]
|
89
101
|
end
|
90
102
|
|
103
|
+
def disabled?
|
104
|
+
command :disabled?
|
105
|
+
end
|
106
|
+
|
91
107
|
def click
|
92
108
|
command :click
|
93
109
|
end
|
@@ -96,6 +112,10 @@ module Capybara::Poltergeist
|
|
96
112
|
command :double_click
|
97
113
|
end
|
98
114
|
|
115
|
+
def hover
|
116
|
+
command :hover
|
117
|
+
end
|
118
|
+
|
99
119
|
def drag_to(other)
|
100
120
|
command :drag, other.id
|
101
121
|
end
|
@@ -107,5 +127,11 @@ module Capybara::Poltergeist
|
|
107
127
|
def ==(other)
|
108
128
|
command :equals, other.id
|
109
129
|
end
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def filter_text(text)
|
134
|
+
text.gsub(NBSP, ' ').gsub(/\s+/u, ' ').strip
|
135
|
+
end
|
110
136
|
end
|
111
137
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poltergeist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capybara
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.0
|
21
|
+
version: 2.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 2.0
|
29
|
+
version: 2.1.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: http_parser.rb
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -49,6 +49,9 @@ dependencies:
|
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.4'
|
54
|
+
- - ! '>='
|
52
55
|
- !ruby/object:Gem::Version
|
53
56
|
version: 0.4.4
|
54
57
|
type: :runtime
|
@@ -57,6 +60,9 @@ dependencies:
|
|
57
60
|
none: false
|
58
61
|
requirements:
|
59
62
|
- - ~>
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0.4'
|
65
|
+
- - ! '>='
|
60
66
|
- !ruby/object:Gem::Version
|
61
67
|
version: 0.4.4
|
62
68
|
- !ruby/object:Gem::Dependency
|
@@ -98,7 +104,7 @@ dependencies:
|
|
98
104
|
requirements:
|
99
105
|
- - ~>
|
100
106
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0
|
107
|
+
version: '10.0'
|
102
108
|
type: :development
|
103
109
|
prerelease: false
|
104
110
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,7 +112,7 @@ dependencies:
|
|
106
112
|
requirements:
|
107
113
|
- - ~>
|
108
114
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0
|
115
|
+
version: '10.0'
|
110
116
|
- !ruby/object:Gem::Dependency
|
111
117
|
name: image_size
|
112
118
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,6 +195,7 @@ files:
|
|
189
195
|
- lib/capybara/poltergeist/network_traffic/response.rb
|
190
196
|
- lib/capybara/poltergeist/version.rb
|
191
197
|
- lib/capybara/poltergeist/driver.rb
|
198
|
+
- lib/capybara/poltergeist/utility.rb
|
192
199
|
- lib/capybara/poltergeist/client/connection.coffee
|
193
200
|
- lib/capybara/poltergeist/client/node.coffee
|
194
201
|
- lib/capybara/poltergeist/client/compiled/agent.js
|
@@ -226,7 +233,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
233
|
version: '0'
|
227
234
|
segments:
|
228
235
|
- 0
|
229
|
-
hash:
|
236
|
+
hash: 1657182441903472235
|
230
237
|
requirements: []
|
231
238
|
rubyforge_project:
|
232
239
|
rubygems_version: 1.8.24
|