ferrumwizard 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2940cdfbf2aff12f2f0f70d219b46483f1561a3bf3a900299837644e1752a66f
4
- data.tar.gz: f747b47b9ebddb10046b559de95952b48c39dc3375d617f2d246c9bcb4cc697c
3
+ metadata.gz: d5eb39e3f7b96b87809950695d7987529b5d2abd7fe8a445e5e658453694d3c4
4
+ data.tar.gz: ab1de29c5cb1c2c9a904069e0a6ef6d8bf8cbdadd68eba2ad1992945c4189948
5
5
  SHA512:
6
- metadata.gz: 5e9bdf0508b48921682828926525b914b276269380c8871ea0ce70263878948fc27aab93d1ab1bf9c53b906b9cbebd2b3d19548b3595405b238b3c5935428174
7
- data.tar.gz: f6137500af8d41c75f077219ada94581cd0a5fc8313315a7fa92c0a883ec055613578b42e37831810d83d44215dae09f64ff31b29c6569e8aac88ca8362a9f61
6
+ metadata.gz: 511884c66a570b8fe74ab14109f3f731316a74824869b73a46cf26bff6b7fbc4f63a92848790229a95aa753b91ff3ada227ebdfa6ed19fe40641da812597d394
7
+ data.tar.gz: 166d533864edff9c4b3cd00e9174064a900532bf8e420edf7ea1c4d16dad3145bb99acc0ab93a4ababf7bb76a12f5b383018a1f61ead98433cec2b1de07814d0
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -10,11 +10,13 @@ class FerrumWizard
10
10
 
11
11
  attr_reader :browser, :links, :radio, :buttons, :js_methods
12
12
 
13
- def initialize(url, headless: true, debug: false)
13
+ def initialize(url, headless: true, timeout: 10, debug: false)
14
14
 
15
15
  @url, @debug = url, debug
16
- @browser = Ferrum::Browser.new headless: headless
16
+ @browser = Ferrum::Browser.new headless: headless, timeout: timeout
17
17
  sleep 2
18
+
19
+ @browser.goto url if url
18
20
  end
19
21
 
20
22
  def inspect()
@@ -45,13 +47,41 @@ class FerrumWizard
45
47
  end
46
48
 
47
49
  e_password.focus.type(password, :Enter) if e_password
50
+
51
+ after_login()
52
+
53
+ end
54
+
55
+ def login2(usernamex=nil, passwordx=nil, username: usernamex, password: passwordx)
56
+
57
+ puts 'username: ' + username.inspect if @debug
58
+
59
+ b = @browser
60
+ b.goto(@url)
48
61
  @browser.network.wait_for_idle
62
+ sleep 3
63
+
64
+ # search for the username input box
65
+ e_username = b.at_xpath('//input[@type="email"]')
66
+ puts 'e_username: ' + e_username.inspect if @debug
67
+ sleep 1
68
+ # search for the password input box
49
69
 
50
- sleep 4
70
+ if username and e_username then
71
+ puts 'entering the username' if @debug
72
+ e_username.focus.type(username, :Enter)
73
+ sleep 2
74
+ end
51
75
 
52
- scan_page()
76
+ e_password = b.at_xpath('//input[@type="password"]')
77
+ sleep 1
53
78
 
54
- end
79
+ e_password.focus.type(password, :Enter) if e_password
80
+
81
+ after_login()
82
+
83
+
84
+ end
55
85
 
56
86
  def quit
57
87
  @browser.quit
@@ -63,7 +93,23 @@ class FerrumWizard
63
93
  fetch_links()
64
94
  scan_form_elements()
65
95
  scan_js_links()
66
- self
96
+ self
97
+ end
98
+
99
+ def submit(h)
100
+
101
+ e = nil
102
+
103
+ h.each do |key, value|
104
+ e = @browser.xpath('//input').find {|x| x.attribute('name') == key.to_s}
105
+ e.focus.type(value)
106
+ end
107
+
108
+ e.focus.type('', :Enter)
109
+
110
+ sleep 4
111
+ scan_page()
112
+
67
113
  end
68
114
 
69
115
  def to_rb()
@@ -71,6 +117,18 @@ class FerrumWizard
71
117
 
72
118
  private
73
119
 
120
+ def after_login()
121
+
122
+ @browser.network.wait_for_idle
123
+ sleep 4
124
+ scan_page()
125
+
126
+ @browser.base_url = File.dirname(@browser.url)
127
+ @browser.mouse.scroll_to(0, 800)
128
+ self
129
+
130
+ end
131
+
74
132
  def fetch_buttons()
75
133
 
76
134
  a2 = @browser.xpath('//input[@type="button"]')
@@ -100,7 +158,7 @@ class FerrumWizard
100
158
 
101
159
  def fetch_links()
102
160
 
103
- all_links = @doc.root.xpath('//a')
161
+ all_links = @doc.root.xpath('//a[@href]')
104
162
 
105
163
  all_links.each do |x|
106
164
 
@@ -121,9 +179,10 @@ class FerrumWizard
121
179
  r
122
180
 
123
181
  end
182
+
124
183
  indices = valid_links.map {|x| all_links.index x}
125
184
 
126
- active_links = @browser.xpath('//a')
185
+ active_links = @browser.xpath('//a[@href]')
127
186
  valid_active_links = indices.map {|n| active_links[n]}
128
187
 
129
188
 
@@ -133,7 +192,8 @@ class FerrumWizard
133
192
  a << [valid_links[i].text, x]
134
193
 
135
194
  puts 'a: ' + a.inspect if @debug
136
- a + a.map {|x, obj| [x.downcase, obj]}
195
+ a + a.map {|x2, obj| [x2.downcase, obj]}
196
+
137
197
  end.to_h
138
198
 
139
199
  names = @links.keys.map(&:downcase).uniq.select {|x| x =~ /^[\w ]+$/}
@@ -142,10 +202,14 @@ class FerrumWizard
142
202
  names.each do |name|
143
203
 
144
204
  define_singleton_method name.gsub(/ +/,'_').to_sym do
205
+
145
206
  links[name].click
207
+ @browser.network.wait_for_idle
208
+
146
209
  sleep 1
147
210
  scan_page()
148
211
  self
212
+
149
213
  end
150
214
 
151
215
  end
@@ -177,7 +241,7 @@ class FerrumWizard
177
241
 
178
242
 
179
243
  s = e.attribute('href')[/(?<=^javascript:)[^\(]+/]
180
- puts 's: ' + s.inspect
244
+ puts 's: ' + s.inspect if @debug
181
245
  a = s.split(/\W+|(?=[A-Z])/).map {|label| [label, s]}
182
246
  a << [s, s]
183
247
  a << [s.split(/\W+|(?=[A-Z])/).join('_'), s]
@@ -186,7 +250,7 @@ class FerrumWizard
186
250
 
187
251
  a.concat a.map {|x, name| [x.downcase, name] }
188
252
 
189
- puts 'a: ' + a.inspect
253
+ puts 'a: ' + a.inspect if @debug
190
254
 
191
255
  a.uniq.select {|x, _| x =~ /^[a-z0-9_]+$/}.each do |x, name|
192
256
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ferrumwizard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file