watir_crawler 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/example.rb +0 -6
- data/lib/watir_crawler/base.rb +15 -9
- data/lib/watir_crawler/version.rb +1 -1
- metadata +4 -4
data/examples/example.rb
CHANGED
@@ -21,12 +21,6 @@ class CrawlerExample < WatirCrawler::Base
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def goto_login
|
25
|
-
browser_session do
|
26
|
-
goto 'https://myaccount.alagasco.com/ccsuces/public/frameset_top_html.jsp'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
24
|
def google_news
|
31
25
|
browser_session do
|
32
26
|
goto 'http://news.google.com/'
|
data/lib/watir_crawler/base.rb
CHANGED
@@ -83,9 +83,8 @@ module WatirCrawler
|
|
83
83
|
browser.execute_script(script)
|
84
84
|
end
|
85
85
|
|
86
|
-
# #####################################################################################################
|
87
|
-
|
88
86
|
# --------------------------------------------------------------------------------------------------------------------
|
87
|
+
|
89
88
|
def pull *args, &block
|
90
89
|
opts, xpaths = args.flatten.partition{|a| a.is_a?(Symbol) }
|
91
90
|
opt_mode = opts.delete(:exist?) || opts.delete(:present?) || :present? # default is :present?
|
@@ -98,11 +97,19 @@ module WatirCrawler
|
|
98
97
|
nodes_for(xpath) # get all elements
|
99
98
|
end.flatten.select do |node|
|
100
99
|
node.send(opt_mode) # select elements by mode
|
100
|
+
end.map do |node|
|
101
|
+
subtype = node.to_subtype
|
102
|
+
class << subtype
|
103
|
+
attr_accessor :node_xpath
|
104
|
+
end
|
105
|
+
|
106
|
+
subtype.node_xpath = node.node_xpath
|
107
|
+
subtype
|
101
108
|
end
|
102
109
|
|
103
110
|
# flash result nodes
|
104
111
|
elements = elements.take(1) if opt_first
|
105
|
-
elements.each{|node| node.flash unless node.is_a?(Watir::Frame) }
|
112
|
+
elements.each{|node| node.flash unless node.is_a?(Watir::Frame) || node.is_a?(Watir::IFrame) }
|
106
113
|
|
107
114
|
first_element = elements.first
|
108
115
|
|
@@ -111,11 +118,7 @@ module WatirCrawler
|
|
111
118
|
nodes_path << first_element.node_xpath
|
112
119
|
yield
|
113
120
|
else
|
114
|
-
|
115
|
-
first_element && first_element.to_subtype
|
116
|
-
else
|
117
|
-
elements.map{|element| element.to_subtype }
|
118
|
-
end
|
121
|
+
opt_first ? first_element : elements
|
119
122
|
end
|
120
123
|
rescue Selenium::WebDriver::Error::StaleElementReferenceError,
|
121
124
|
Selenium::WebDriver::Error::ObsoleteElementError
|
@@ -186,12 +189,15 @@ module WatirCrawler
|
|
186
189
|
elements = elements.to_a if elements.is_a? Watir::ElementCollection
|
187
190
|
elements = [elements].flatten
|
188
191
|
|
192
|
+
has_multiple_elements = elements.size > 1
|
193
|
+
|
189
194
|
elements.map.with_index do |element, index|
|
190
195
|
class << element
|
191
196
|
attr_accessor :node_xpath
|
192
197
|
end
|
193
198
|
|
194
|
-
element.node_xpath = xpath
|
199
|
+
element.node_xpath = xpath
|
200
|
+
element.node_xpath += "[#{index + 1}]" if has_multiple_elements
|
195
201
|
element
|
196
202
|
end
|
197
203
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir_crawler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
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: 2014-01-
|
12
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nestegg
|
@@ -147,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
147
|
version: '0'
|
148
148
|
segments:
|
149
149
|
- 0
|
150
|
-
hash: -
|
150
|
+
hash: -79542161
|
151
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
152
|
none: false
|
153
153
|
requirements:
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
version: '0'
|
157
157
|
segments:
|
158
158
|
- 0
|
159
|
-
hash: -
|
159
|
+
hash: -79542161
|
160
160
|
requirements: []
|
161
161
|
rubyforge_project:
|
162
162
|
rubygems_version: 1.8.25
|