mechanize 0.5.4 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of mechanize might be problematic. Click here for more details.
- data/CHANGELOG +12 -0
- data/GUIDE +125 -0
- data/NOTES +28 -0
- data/README +9 -5
- data/lib/mechanize.rb +14 -15
- data/lib/mechanize/cookie.rb +35 -55
- data/lib/mechanize/form.rb +39 -48
- data/lib/mechanize/form_elements.rb +7 -9
- data/lib/mechanize/hpricot.rb +12 -0
- data/lib/mechanize/inspect.rb +0 -6
- data/lib/mechanize/mech_version.rb +1 -3
- data/lib/mechanize/page.rb +70 -115
- data/lib/mechanize/page_elements.rb +10 -6
- data/test/htdocs/frame_test.html +1 -1
- data/test/htdocs/tc_no_attributes.html +16 -0
- data/test/tc_checkboxes.rb +8 -8
- data/test/tc_cookie_jar.rb +36 -28
- data/test/tc_mech.rb +21 -1
- data/test/tc_no_attributes.rb +20 -0
- data/test/tc_page.rb +1 -1
- data/test/tc_pluggable_parser.rb +31 -17
- data/test/tc_pretty_print.rb +1 -1
- data/test/tc_radiobutton.rb +4 -4
- data/test/ts_mech.rb +1 -1
- metadata +126 -134
- data/lib/mechanize/module.rb +0 -27
- data/lib/mechanize/parsing.rb +0 -224
- data/test/parse.rb +0 -39
- data/test/tc_parsing.rb +0 -64
- data/test/test_mech.rb +0 -27
data/test/tc_cookie_jar.rb
CHANGED
@@ -7,6 +7,14 @@ require 'test_includes'
|
|
7
7
|
require 'fileutils'
|
8
8
|
|
9
9
|
class CookieJarTest < Test::Unit::TestCase
|
10
|
+
def cookie_from_hash(hash)
|
11
|
+
c = WWW::Mechanize::Cookie.new(hash[:name], hash[:value])
|
12
|
+
hash.each { |k,v|
|
13
|
+
next if k == :name || k == :value
|
14
|
+
c.send("#{k}=", v)
|
15
|
+
}
|
16
|
+
c
|
17
|
+
end
|
10
18
|
def test_add_future_cookies
|
11
19
|
values = { :name => 'Foo',
|
12
20
|
:value => 'Bar',
|
@@ -20,12 +28,12 @@ class CookieJarTest < Test::Unit::TestCase
|
|
20
28
|
assert_equal(0, jar.cookies(url).length)
|
21
29
|
|
22
30
|
# Add one cookie with an expiration date in the future
|
23
|
-
cookie =
|
24
|
-
jar.add(cookie)
|
31
|
+
cookie = cookie_from_hash(values)
|
32
|
+
jar.add(url, cookie)
|
25
33
|
assert_equal(1, jar.cookies(url).length)
|
26
34
|
|
27
35
|
# Add the same cookie, and we should still only have one
|
28
|
-
jar.add(
|
36
|
+
jar.add(url, cookie_from_hash(values))
|
29
37
|
assert_equal(1, jar.cookies(url).length)
|
30
38
|
|
31
39
|
# Make sure we can get the cookie from different paths
|
@@ -48,12 +56,12 @@ class CookieJarTest < Test::Unit::TestCase
|
|
48
56
|
assert_equal(0, jar.cookies(url).length)
|
49
57
|
|
50
58
|
# Add one cookie with an expiration date in the future
|
51
|
-
cookie =
|
52
|
-
jar.add(cookie)
|
59
|
+
cookie = cookie_from_hash(values)
|
60
|
+
jar.add(url, cookie)
|
53
61
|
assert_equal(1, jar.cookies(url).length)
|
54
62
|
|
55
63
|
# Add the same cookie, and we should still only have one
|
56
|
-
jar.add(
|
64
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz' )))
|
57
65
|
assert_equal(2, jar.cookies(url).length)
|
58
66
|
|
59
67
|
# Make sure we can get the cookie from different paths
|
@@ -76,9 +84,9 @@ class CookieJarTest < Test::Unit::TestCase
|
|
76
84
|
assert_equal(0, jar.cookies(url).length)
|
77
85
|
|
78
86
|
# Add one cookie with an expiration date in the future
|
79
|
-
cookie =
|
80
|
-
jar.add(cookie)
|
81
|
-
jar.add(
|
87
|
+
cookie = cookie_from_hash(values)
|
88
|
+
jar.add(url, cookie)
|
89
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz' )))
|
82
90
|
assert_equal(2, jar.cookies(url).length)
|
83
91
|
|
84
92
|
jar.clear!
|
@@ -99,9 +107,9 @@ class CookieJarTest < Test::Unit::TestCase
|
|
99
107
|
assert_equal(0, jar.cookies(url).length)
|
100
108
|
|
101
109
|
# Add one cookie with an expiration date in the future
|
102
|
-
cookie =
|
103
|
-
jar.add(cookie)
|
104
|
-
jar.add(
|
110
|
+
cookie = cookie_from_hash(values)
|
111
|
+
jar.add(url, cookie)
|
112
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz' )))
|
105
113
|
assert_equal(2, jar.cookies(url).length)
|
106
114
|
|
107
115
|
jar.save_as("cookies.yml")
|
@@ -126,23 +134,23 @@ class CookieJarTest < Test::Unit::TestCase
|
|
126
134
|
assert_equal(0, jar.cookies(url).length)
|
127
135
|
|
128
136
|
# Add one cookie with an expiration date in the future
|
129
|
-
cookie =
|
130
|
-
jar.add(cookie)
|
137
|
+
cookie = cookie_from_hash(values)
|
138
|
+
jar.add(url, cookie)
|
131
139
|
assert_equal(1, jar.cookies(url).length)
|
132
140
|
|
133
141
|
# Add a second cookie
|
134
|
-
jar.add(
|
142
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz' )))
|
135
143
|
assert_equal(2, jar.cookies(url).length)
|
136
144
|
|
137
145
|
# Make sure we can get the cookie from different paths
|
138
146
|
assert_equal(2, jar.cookies(URI.parse('http://rubyforge.org/login')).length)
|
139
147
|
|
140
148
|
# Expire the first cookie
|
141
|
-
jar.add(
|
149
|
+
jar.add(url, cookie_from_hash(values.merge( :expires => Time.now - (10 * 86400))))
|
142
150
|
assert_equal(1, jar.cookies(url).length)
|
143
151
|
|
144
152
|
# Expire the second cookie
|
145
|
-
jar.add(
|
153
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz',
|
146
154
|
:expires => Time.now - (10 * 86400))))
|
147
155
|
assert_equal(0, jar.cookies(url).length)
|
148
156
|
end
|
@@ -160,23 +168,23 @@ class CookieJarTest < Test::Unit::TestCase
|
|
160
168
|
assert_equal(0, jar.cookies(url).length)
|
161
169
|
|
162
170
|
# Add one cookie with an expiration date in the future
|
163
|
-
cookie =
|
164
|
-
jar.add(cookie)
|
171
|
+
cookie = cookie_from_hash(values)
|
172
|
+
jar.add(url, cookie)
|
165
173
|
assert_equal(1, jar.cookies(url).length)
|
166
174
|
|
167
175
|
# Add a second cookie
|
168
|
-
jar.add(
|
176
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz' )))
|
169
177
|
assert_equal(2, jar.cookies(url).length)
|
170
178
|
|
171
179
|
# Make sure we can get the cookie from different paths
|
172
180
|
assert_equal(2, jar.cookies(URI.parse('http://rubyforge.org/login')).length)
|
173
181
|
|
174
182
|
# Expire the first cookie
|
175
|
-
jar.add(
|
183
|
+
jar.add(url, cookie_from_hash(values.merge( :expires => Time.now - (10 * 86400))))
|
176
184
|
assert_equal(1, jar.cookies(url).length)
|
177
185
|
|
178
186
|
# Expire the second cookie
|
179
|
-
jar.add(
|
187
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz',
|
180
188
|
:expires => Time.now - (10 * 86400))))
|
181
189
|
assert_equal(0, jar.cookies(url).length)
|
182
190
|
|
@@ -186,7 +194,7 @@ class CookieJarTest < Test::Unit::TestCase
|
|
186
194
|
assert_equal '', url.path
|
187
195
|
assert_equal(0, jar.cookies(url).length)
|
188
196
|
# Now add a cookie with the path set to '/':
|
189
|
-
jar.add(
|
197
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'has_root_path',
|
190
198
|
:path => '/')))
|
191
199
|
assert_equal(1, jar.cookies(url).length)
|
192
200
|
end
|
@@ -204,12 +212,12 @@ class CookieJarTest < Test::Unit::TestCase
|
|
204
212
|
assert_equal(0, jar.cookies(url).length)
|
205
213
|
|
206
214
|
# Add one cookie with an expiration date in the future
|
207
|
-
cookie =
|
208
|
-
jar.add(cookie)
|
215
|
+
cookie = cookie_from_hash(values)
|
216
|
+
jar.add(url, cookie)
|
209
217
|
assert_equal(1, jar.cookies(url).length)
|
210
218
|
|
211
219
|
# Add a second cookie
|
212
|
-
jar.add(
|
220
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz' )))
|
213
221
|
assert_equal(2, jar.cookies(url).length)
|
214
222
|
|
215
223
|
# Make sure we don't get the cookie in a different path
|
@@ -217,11 +225,11 @@ class CookieJarTest < Test::Unit::TestCase
|
|
217
225
|
assert_equal(0, jar.cookies(URI.parse('http://rubyforge.org/')).length)
|
218
226
|
|
219
227
|
# Expire the first cookie
|
220
|
-
jar.add(
|
228
|
+
jar.add(url, cookie_from_hash(values.merge( :expires => Time.now - (10 * 86400))))
|
221
229
|
assert_equal(1, jar.cookies(url).length)
|
222
230
|
|
223
231
|
# Expire the second cookie
|
224
|
-
jar.add(
|
232
|
+
jar.add(url, cookie_from_hash(values.merge( :name => 'Baz',
|
225
233
|
:expires => Time.now - (10 * 86400))))
|
226
234
|
assert_equal(0, jar.cookies(url).length)
|
227
235
|
end
|
data/test/tc_mech.rb
CHANGED
@@ -6,7 +6,7 @@ require 'rubygems'
|
|
6
6
|
require 'mechanize'
|
7
7
|
require 'test_includes'
|
8
8
|
|
9
|
-
class
|
9
|
+
class TestMechMethods < Test::Unit::TestCase
|
10
10
|
include TestMethods
|
11
11
|
|
12
12
|
def setup
|
@@ -83,6 +83,26 @@ class MechMethodsTest < Test::Unit::TestCase
|
|
83
83
|
@agent.history.last.uri.to_s)
|
84
84
|
end
|
85
85
|
|
86
|
+
def test_click_hpricot
|
87
|
+
page = @agent.get("http://localhost:#{PORT}/frame_test.html")
|
88
|
+
|
89
|
+
link = (page/"a[@class=bar]").first
|
90
|
+
assert_not_nil(link)
|
91
|
+
page = @agent.click(link)
|
92
|
+
assert_equal("http://localhost:#{PORT}/form_test.html",
|
93
|
+
@agent.history.last.uri.to_s)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_click_hpricot_frame
|
97
|
+
page = @agent.get("http://localhost:#{PORT}/frame_test.html")
|
98
|
+
|
99
|
+
link = (page/"frame[@name=frame2]").first
|
100
|
+
assert_not_nil(link)
|
101
|
+
page = @agent.click(link)
|
102
|
+
assert_equal("http://localhost:#{PORT}/form_test.html",
|
103
|
+
@agent.history.last.uri.to_s)
|
104
|
+
end
|
105
|
+
|
86
106
|
def test_new_find
|
87
107
|
page = @agent.get("http://localhost:#{PORT}/frame_test.html")
|
88
108
|
assert_equal(3, page.frames.size)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'mechanize'
|
6
|
+
require 'test_includes'
|
7
|
+
|
8
|
+
class TestNoAttributes < Test::Unit::TestCase
|
9
|
+
include TestMethods
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@agent = WWW::Mechanize.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_parse_no_attributes
|
16
|
+
assert_nothing_raised do
|
17
|
+
page = @agent.get("http://localhost:#{PORT}/tc_no_attributes.html")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/test/tc_page.rb
CHANGED
data/test/tc_pluggable_parser.rb
CHANGED
@@ -14,17 +14,21 @@ class PluggableParserTest < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
def test_content_type_error
|
16
16
|
page = @agent.get("http://localhost:#{PORT}/bad_content_type")
|
17
|
-
page = WWW::Mechanize::Page.new(
|
18
|
-
page.uri,
|
19
|
-
page.response,
|
20
|
-
page.body,
|
21
|
-
page.code
|
22
|
-
)
|
23
17
|
assert_raise(WWW::Mechanize::ContentTypeError) {
|
24
|
-
page.
|
18
|
+
page = WWW::Mechanize::Page.new(
|
19
|
+
page.uri,
|
20
|
+
page.response,
|
21
|
+
page.body,
|
22
|
+
page.code
|
23
|
+
)
|
25
24
|
}
|
26
25
|
begin
|
27
|
-
page.
|
26
|
+
page = WWW::Mechanize::Page.new(
|
27
|
+
page.uri,
|
28
|
+
page.response,
|
29
|
+
page.body,
|
30
|
+
page.code
|
31
|
+
)
|
28
32
|
rescue WWW::Mechanize::ContentTypeError => ex
|
29
33
|
assert_equal('text/xml', ex.content_type)
|
30
34
|
end
|
@@ -45,6 +49,16 @@ class PluggableParserTest < Test::Unit::TestCase
|
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
52
|
+
class FileFilter < WWW::Mechanize::File
|
53
|
+
def initialize(uri=nil, response=nil, body=nil, code=nil)
|
54
|
+
super( uri,
|
55
|
+
response,
|
56
|
+
body.gsub(/<body>/, '<body><a href="http://daapclient.rubyforge.org">Net::DAAP::Client</a>'),
|
57
|
+
code
|
58
|
+
)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
48
62
|
def test_filter
|
49
63
|
@agent.pluggable_parser.html = Filter
|
50
64
|
page = @agent.get("http://localhost:#{PORT}/find_link.html")
|
@@ -78,27 +92,27 @@ class PluggableParserTest < Test::Unit::TestCase
|
|
78
92
|
end
|
79
93
|
|
80
94
|
def test_content_type_pdf
|
81
|
-
@agent.pluggable_parser.pdf =
|
95
|
+
@agent.pluggable_parser.pdf = FileFilter
|
82
96
|
page = @agent.get("http://localhost:#{PORT}/content_type_test?ct=application/pdf")
|
83
97
|
assert_kind_of(Class, @agent.pluggable_parser['application/pdf'])
|
84
|
-
assert_equal(
|
85
|
-
assert_kind_of(
|
98
|
+
assert_equal(FileFilter, @agent.pluggable_parser['application/pdf'])
|
99
|
+
assert_kind_of(FileFilter, page)
|
86
100
|
end
|
87
101
|
|
88
102
|
def test_content_type_csv
|
89
|
-
@agent.pluggable_parser.csv =
|
103
|
+
@agent.pluggable_parser.csv = FileFilter
|
90
104
|
page = @agent.get("http://localhost:#{PORT}/content_type_test?ct=text/csv")
|
91
105
|
assert_kind_of(Class, @agent.pluggable_parser['text/csv'])
|
92
|
-
assert_equal(
|
93
|
-
assert_kind_of(
|
106
|
+
assert_equal(FileFilter, @agent.pluggable_parser['text/csv'])
|
107
|
+
assert_kind_of(FileFilter, page)
|
94
108
|
end
|
95
109
|
|
96
110
|
def test_content_type_xml
|
97
|
-
@agent.pluggable_parser.xml =
|
111
|
+
@agent.pluggable_parser.xml = FileFilter
|
98
112
|
page = @agent.get("http://localhost:#{PORT}/content_type_test?ct=text/xml")
|
99
113
|
assert_kind_of(Class, @agent.pluggable_parser['text/xml'])
|
100
|
-
assert_equal(
|
101
|
-
assert_kind_of(
|
114
|
+
assert_equal(FileFilter, @agent.pluggable_parser['text/xml'])
|
115
|
+
assert_kind_of(FileFilter, page)
|
102
116
|
end
|
103
117
|
|
104
118
|
def test_file_saver_no_path
|
data/test/tc_pretty_print.rb
CHANGED
@@ -14,7 +14,7 @@ class TestPrettyPrint < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
def test_pretty_print
|
16
16
|
@agent.get("http://localhost:#{PORT}/tc_pretty_print.html")
|
17
|
-
pretty_string = @agent.
|
17
|
+
pretty_string = @agent.pretty_print_inspect
|
18
18
|
assert_match("{title \"tc_pretty_print.html\"}", pretty_string)
|
19
19
|
assert_match(/\{frames[^"]*"http:\/\/meme/, pretty_string)
|
20
20
|
assert_match(/\{iframes[^"]*"http:\/\/meme/, pretty_string)
|
data/test/tc_radiobutton.rb
CHANGED
@@ -16,7 +16,7 @@ class TestRadioButtons < Test::Unit::TestCase
|
|
16
16
|
def test_select_one
|
17
17
|
form = @page.forms.first
|
18
18
|
button = form.radiobuttons.name('color')
|
19
|
-
form.radiobuttons.name('color').value('green').
|
19
|
+
form.radiobuttons.name('color').value('green').check
|
20
20
|
assert_equal(true, button.value('green').checked)
|
21
21
|
assert_equal(false, button.value('red').checked)
|
22
22
|
assert_equal(false, button.value('blue').checked)
|
@@ -28,9 +28,9 @@ class TestRadioButtons < Test::Unit::TestCase
|
|
28
28
|
form = @page.forms.first
|
29
29
|
button = form.radiobuttons.name('color')
|
30
30
|
form.radiobuttons.name('color').each do |b|
|
31
|
-
b.
|
31
|
+
b.check
|
32
32
|
end
|
33
|
-
form.radiobuttons.name('color').value('green').
|
33
|
+
form.radiobuttons.name('color').value('green').check
|
34
34
|
assert_equal(true, button.value('green').checked)
|
35
35
|
assert_equal(false, button.value('red').checked)
|
36
36
|
assert_equal(false, button.value('blue').checked)
|
@@ -42,7 +42,7 @@ class TestRadioButtons < Test::Unit::TestCase
|
|
42
42
|
form = @page.forms.first
|
43
43
|
button = form.radiobuttons.name('color')
|
44
44
|
form.radiobuttons.name('color').each do |b|
|
45
|
-
b.
|
45
|
+
b.uncheck
|
46
46
|
end
|
47
47
|
assert_equal(false, button.value('green').checked)
|
48
48
|
assert_equal(false, button.value('red').checked)
|
data/test/ts_mech.rb
CHANGED
@@ -18,7 +18,6 @@ require 'tc_response_code'
|
|
18
18
|
require 'tc_upload'
|
19
19
|
require 'tc_forms'
|
20
20
|
require 'tc_watches'
|
21
|
-
require 'tc_parsing'
|
22
21
|
require 'tc_authenticate'
|
23
22
|
require 'tc_cookie_class'
|
24
23
|
require 'tc_cookie_jar'
|
@@ -39,6 +38,7 @@ require 'tc_radiobutton'
|
|
39
38
|
require 'tc_checkboxes'
|
40
39
|
require 'tc_pretty_print'
|
41
40
|
require 'tc_textarea'
|
41
|
+
require 'tc_no_attributes'
|
42
42
|
require 'tc_gzipping'
|
43
43
|
#require 'tc_proxy'
|
44
44
|
#require 'tc_ssl_server'
|
metadata
CHANGED
@@ -3,11 +3,11 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mechanize
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.6.0
|
7
|
+
date: 2006-09-06 00:00:00 -07:00
|
8
8
|
summary: Mechanize provides automated web-browsing
|
9
9
|
require_paths:
|
10
|
-
|
10
|
+
- lib
|
11
11
|
email: aaronp@rubyforge.org
|
12
12
|
homepage: mechanize.rubyforge.org
|
13
13
|
rubyforge_project: mechanize
|
@@ -18,148 +18,140 @@ bindir: bin
|
|
18
18
|
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
version: 0.0.0
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
25
24
|
version:
|
26
25
|
platform: ruby
|
27
26
|
signing_key:
|
28
27
|
cert_chain:
|
29
28
|
post_install_message:
|
30
29
|
authors:
|
31
|
-
|
30
|
+
- Aaron Patterson
|
32
31
|
files:
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
- NOTES
|
32
|
+
- test/tc_mech.rb
|
33
|
+
- test/ts_mech.rb
|
34
|
+
- test/tc_no_attributes.rb
|
35
|
+
- test/tc_links.rb
|
36
|
+
- test/tc_select_all.rb
|
37
|
+
- test/tc_page.rb
|
38
|
+
- test/test_includes.rb
|
39
|
+
- test/tc_checkboxes.rb
|
40
|
+
- test/tc_watches.rb
|
41
|
+
- test/tc_cookies.rb
|
42
|
+
- test/proxy.rb
|
43
|
+
- test/data
|
44
|
+
- test/tc_cookie_jar.rb
|
45
|
+
- test/tc_forms.rb
|
46
|
+
- test/tc_select_none.rb
|
47
|
+
- test/tc_multi_select.rb
|
48
|
+
- test/tc_pluggable_parser.rb
|
49
|
+
- test/tc_select_noopts.rb
|
50
|
+
- test/ssl_server.rb
|
51
|
+
- test/tc_pretty_print.rb
|
52
|
+
- test/tc_post_form.rb
|
53
|
+
- test/tc_errors.rb
|
54
|
+
- test/tc_gzipping.rb
|
55
|
+
- test/tc_authenticate.rb
|
56
|
+
- test/README
|
57
|
+
- test/tc_radiobutton.rb
|
58
|
+
- test/tc_form_no_inputname.rb
|
59
|
+
- test/tc_upload.rb
|
60
|
+
- test/tc_cookie_class.rb
|
61
|
+
- test/tc_set_fields.rb
|
62
|
+
- test/tc_select.rb
|
63
|
+
- test/server.rb
|
64
|
+
- test/htdocs
|
65
|
+
- test/tc_ssl_server.rb
|
66
|
+
- test/tc_textarea.rb
|
67
|
+
- test/tc_proxy.rb
|
68
|
+
- test/tc_frames.rb
|
69
|
+
- test/tc_bad_links.rb
|
70
|
+
- test/tc_response_code.rb
|
71
|
+
- test/servlets.rb
|
72
|
+
- test/tc_save_file.rb
|
73
|
+
- test/data/server.key
|
74
|
+
- test/data/server.csr
|
75
|
+
- test/data/server.pem
|
76
|
+
- test/data/server.crt
|
77
|
+
- test/data/htpasswd
|
78
|
+
- test/htdocs/file_upload.html
|
79
|
+
- test/htdocs/tc_no_attributes.html
|
80
|
+
- test/htdocs/iframe_test.html
|
81
|
+
- test/htdocs/form_select_all.html
|
82
|
+
- test/htdocs/form_no_action.html
|
83
|
+
- test/htdocs/form_test.html
|
84
|
+
- test/htdocs/bad_form_test.html
|
85
|
+
- test/htdocs/alt_text.html
|
86
|
+
- test/htdocs/frame_test.html
|
87
|
+
- test/htdocs/tc_radiobuttons.html
|
88
|
+
- test/htdocs/form_multi_select.html
|
89
|
+
- test/htdocs/form_set_fields.html
|
90
|
+
- test/htdocs/index.html
|
91
|
+
- test/htdocs/find_link.html
|
92
|
+
- test/htdocs/google.html
|
93
|
+
- test/htdocs/no_title_test.html
|
94
|
+
- test/htdocs/button.jpg
|
95
|
+
- test/htdocs/form_multival.html
|
96
|
+
- test/htdocs/tc_bad_links.html
|
97
|
+
- test/htdocs/tc_checkboxes.html
|
98
|
+
- test/htdocs/tc_textarea.html
|
99
|
+
- test/htdocs/form_select_none.html
|
100
|
+
- test/htdocs/form_select_noopts.html
|
101
|
+
- test/htdocs/form_select.html
|
102
|
+
- test/htdocs/form_no_input_name.html
|
103
|
+
- test/htdocs/tc_pretty_print.html
|
104
|
+
- lib/mechanize.rb
|
105
|
+
- lib/mechanize
|
106
|
+
- lib/mechanize/errors.rb
|
107
|
+
- lib/mechanize/page.rb
|
108
|
+
- lib/mechanize/form_elements.rb
|
109
|
+
- lib/mechanize/net-overrides
|
110
|
+
- lib/mechanize/cookie.rb
|
111
|
+
- lib/mechanize/inspect.rb
|
112
|
+
- lib/mechanize/mech_version.rb
|
113
|
+
- lib/mechanize/list.rb
|
114
|
+
- lib/mechanize/hpricot.rb
|
115
|
+
- lib/mechanize/pluggable_parsers.rb
|
116
|
+
- lib/mechanize/page_elements.rb
|
117
|
+
- lib/mechanize/form.rb
|
118
|
+
- lib/mechanize/net-overrides/net
|
119
|
+
- lib/mechanize/net-overrides/net/http.rb
|
120
|
+
- lib/mechanize/net-overrides/net/https.rb
|
121
|
+
- lib/mechanize/net-overrides/net/protocol.rb
|
122
|
+
- README
|
123
|
+
- EXAMPLES
|
124
|
+
- CHANGELOG
|
125
|
+
- LICENSE
|
126
|
+
- NOTES
|
127
|
+
- GUIDE
|
130
128
|
test_files: []
|
129
|
+
|
131
130
|
rdoc_options:
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
- --main
|
132
|
+
- README
|
133
|
+
- --title
|
134
|
+
- "'WWW::Mechanize RDoc'"
|
136
135
|
extra_rdoc_files:
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
136
|
+
- README
|
137
|
+
- EXAMPLES
|
138
|
+
- CHANGELOG
|
139
|
+
- LICENSE
|
140
|
+
- NOTES
|
141
|
+
- GUIDE
|
142
142
|
executables: []
|
143
|
+
|
143
144
|
extensions: []
|
145
|
+
|
144
146
|
requirements: []
|
147
|
+
|
145
148
|
dependencies:
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
version:
|
156
|
-
- !ruby/object:Gem::Dependency
|
157
|
-
name: mime-types
|
158
|
-
version_requirement:
|
159
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
160
|
-
requirements:
|
161
|
-
-
|
162
|
-
- ">"
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version: 0.0.0
|
165
|
-
version:
|
149
|
+
- !ruby/object:Gem::Dependency
|
150
|
+
name: hpricot
|
151
|
+
version_requirement:
|
152
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 0.0.0
|
157
|
+
version:
|