steam 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -0
- data/lib/core_ext/ruby/string/camelize.rb +1 -1
- data/lib/core_ext/ruby/string/underscore.rb +8 -1
- data/lib/steam/browser/html_unit.rb +9 -5
- data/lib/steam/browser/html_unit/client.rb +14 -2
- data/lib/steam/browser/html_unit/connection.rb +10 -10
- data/lib/steam/browser/html_unit/web_response.rb +0 -1
- data/lib/steam/connection/net_http.rb +4 -4
- data/lib/steam/java.rb +7 -6
- data/lib/steam/request.rb +88 -35
- data/lib/steam/session/rails.rb +1 -1
- data/lib/steam/version.rb +1 -1
- metadata +23 -50
- data/Rakefile +0 -23
- data/test/all.rb +0 -3
- data/test/browser/html_unit/actions_test.rb +0 -183
- data/test/browser/html_unit/javascript_test.rb +0 -60
- data/test/browser/html_unit/rails_actions_test.rb +0 -150
- data/test/browser/html_unit_test.rb +0 -98
- data/test/connection/cascade_test.rb +0 -42
- data/test/connection/mock_test.rb +0 -58
- data/test/connection/rails_test.rb +0 -16
- data/test/connection/static_test.rb +0 -14
- data/test/example/webrat_compat_steps_test.rb +0 -307
- data/test/fixtures/html_fakes.rb +0 -191
- data/test/java_test.rb +0 -29
- data/test/playground/connection.rb +0 -19
- data/test/playground/dragdrop_behavior.rb +0 -60
- data/test/playground/drb.rb +0 -55
- data/test/playground/java_signature.rb +0 -22
- data/test/playground/nokogiri.rb +0 -15
- data/test/playground/put_headers.rb +0 -83
- data/test/playground/rack.rb +0 -11
- data/test/playground/rjb_bind.rb +0 -42
- data/test/playground/stack_level_problem.rb +0 -129
- data/test/playground/thread_problem.rb +0 -57
- data/test/playground/web_response_data.rb +0 -21
- data/test/playground/webrat.rb +0 -48
- data/test/playground/xhr_accept_headers.rb +0 -61
- data/test/process_test.rb +0 -55
- data/test/session_test.rb +0 -40
- data/test/test_helper.rb +0 -80
data/test/java_test.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __FILE__)
|
2
|
-
|
3
|
-
|
4
|
-
class JavaTest < Test::Unit::TestCase
|
5
|
-
include Steam
|
6
|
-
include Java::AutoDefine
|
7
|
-
extend Java::AutoDefine
|
8
|
-
|
9
|
-
test "pop_name" do
|
10
|
-
name = 'A::B::C'
|
11
|
-
assert 'A', pop_name(name)
|
12
|
-
assert 'B', pop_name(name)
|
13
|
-
assert 'C', pop_name(name)
|
14
|
-
end
|
15
|
-
|
16
|
-
test "const_set_nested" do
|
17
|
-
const = self.class.const_set_nested('A::B::C', Module.new)
|
18
|
-
assert_equal A::B::C, const
|
19
|
-
end
|
20
|
-
|
21
|
-
test "java_path_to_const_name" do
|
22
|
-
assert_equal 'Util::ArrayList', Java.path_to_const_name("java.util.ArrayList")
|
23
|
-
end
|
24
|
-
|
25
|
-
test "import" do
|
26
|
-
const = Java.import('java.util.Set')
|
27
|
-
assert_equal Java::Util::Set, const
|
28
|
-
end
|
29
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
$: << File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
-
require 'steam'
|
3
|
-
include Steam
|
4
|
-
|
5
|
-
Java.import 'com.gargoylesoftware.htmlunit.WebClient'
|
6
|
-
Java.import 'com.gargoylesoftware.htmlunit.BrowserVersion'
|
7
|
-
|
8
|
-
client = Java::WebClient.new(Java::BrowserVersion.FIREFOX_3)
|
9
|
-
client.setCssEnabled(true)
|
10
|
-
client.setJavaScriptEnabled(true)
|
11
|
-
|
12
|
-
mock = Connection::Mock.new
|
13
|
-
mock.mock :get, 'http://localhost:3000/', 'body!'
|
14
|
-
|
15
|
-
connection = Browser::HtmlUnit::Connection.new(mock)
|
16
|
-
client.setWebConnection(Rjb::bind(connection, 'com.gargoylesoftware.htmlunit.WebConnection'))
|
17
|
-
|
18
|
-
page = client.getPage('http://localhost:3000/')
|
19
|
-
puts page.asXml
|
@@ -1,60 +0,0 @@
|
|
1
|
-
$: << File.expand_path("../../lib", __FILE__)
|
2
|
-
|
3
|
-
require 'steam'
|
4
|
-
|
5
|
-
include Steam
|
6
|
-
|
7
|
-
Steam.config[:html_unit][:java_path] = File.expand_path("../../lib/htmlunit-2.7/", __FILE__)
|
8
|
-
|
9
|
-
@connection = Connection::Mock.new
|
10
|
-
root = File.expand_path("../fixtures/public", __FILE__)
|
11
|
-
static = Connection::Static.new(:root => root, :urls => %w(/ /javascripts /stylesheets))
|
12
|
-
@browser = Browser::HtmlUnit.new(Rack::Cascade.new([static, @connection]))
|
13
|
-
|
14
|
-
def drag_to(target)
|
15
|
-
@browser.page.executeJavaScript('$("#log").text("")')
|
16
|
-
|
17
|
-
drag = @browser.locate_in_browser(:div, :class => 'drag')
|
18
|
-
drop = @browser.locate_in_browser(:div, :id => target)
|
19
|
-
|
20
|
-
puts "\nDRAGGING #{drag.getCanonicalXPath}"
|
21
|
-
puts "DROPPING ONTO:\n" + drop.asXml # (#{drop.getCanonicalXPath})
|
22
|
-
|
23
|
-
drag.mouseDown
|
24
|
-
drop.mouseMove
|
25
|
-
page = drop.mouseUp
|
26
|
-
|
27
|
-
log = page.executeJavaScript('$("#log").text()').getJavaScriptResult
|
28
|
-
puts "RECEIVED DROP EVENT ON:\n" + log.toString
|
29
|
-
end
|
30
|
-
|
31
|
-
@browser.request('/index.html')
|
32
|
-
drag_to('drop_1')
|
33
|
-
drag_to('drop_2')
|
34
|
-
drag_to('drop_3')
|
35
|
-
# drag_to('drop_4')
|
36
|
-
# drag_to('drop_5')
|
37
|
-
# drag_to('drop_6')
|
38
|
-
|
39
|
-
# OUTPUT:
|
40
|
-
#
|
41
|
-
# DROPPING ONTO (/html/body/div[2]):
|
42
|
-
# <div class="drop ui-droppable" id="drop_2">
|
43
|
-
# </div>
|
44
|
-
# RECEIVED DROP EVENT ON:
|
45
|
-
# <div id="drop_1" class="drop ui-droppable"></div>
|
46
|
-
#
|
47
|
-
# DROPPING ONTO (/html/body/div[3]):
|
48
|
-
# <div class="drop ui-droppable" id="drop_3">
|
49
|
-
# </div>
|
50
|
-
# RECEIVED DROP EVENT ON:
|
51
|
-
# <div id="drop_2" class="drop ui-droppable"></div>
|
52
|
-
#
|
53
|
-
# DROPPING ONTO (/html/body/div[4]):
|
54
|
-
# <div class="drop ui-droppable" id="drop_4">
|
55
|
-
# </div>
|
56
|
-
# RECEIVED DROP EVENT ON:
|
57
|
-
# <div id="drop_3" class="drop ui-droppable"></div>
|
58
|
-
|
59
|
-
|
60
|
-
|
data/test/playground/drb.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
$: << File.expand_path("../../../lib", __FILE__)
|
2
|
-
|
3
|
-
require 'steam'
|
4
|
-
require 'drb'
|
5
|
-
|
6
|
-
include Steam
|
7
|
-
|
8
|
-
# # using a static connection works /w drb
|
9
|
-
# root = File.expand_path("../../fixtures/public", __FILE__)
|
10
|
-
# connection = Connection::Static.new(:root => root, :urls => ['/'])
|
11
|
-
#
|
12
|
-
# # using a mocked connection works /w drb
|
13
|
-
# connection = Connection::Mock.new
|
14
|
-
# connection.mock 'http://localhost:3000/short.html', <<-html
|
15
|
-
# <html>
|
16
|
-
# <head>
|
17
|
-
# <script src="/title.js" type="text/javascript"></script>
|
18
|
-
# <script src="/jquery-ui-1.8rc1.js" type="text/javascript"></script>
|
19
|
-
# </head>
|
20
|
-
# </html>
|
21
|
-
# html
|
22
|
-
# connection.mock 'http://localhost:3000/title.js', "document.title = 'FOO'"
|
23
|
-
# connection.mock 'http://localhost:3000/jquery-ui-1.8rc1.js', File.read('test/fixtures/public/jquery-ui-1.8rc1.js')
|
24
|
-
|
25
|
-
# # Using the native default connection, i.e. connecting over the network, does
|
26
|
-
# # not work /w drb when the first response has to retrieve additional assets,
|
27
|
-
# # like a js file. (There's a config.ru file in test/, so one can rackup the
|
28
|
-
# # files in test/fixtures/public.)
|
29
|
-
connection = nil
|
30
|
-
|
31
|
-
# Interestingly, this works in all situations, except that it does not implement
|
32
|
-
# a full REST interface and I don't want to implement a cookie jar and everything
|
33
|
-
# connection = Connection::OpenUri.new
|
34
|
-
|
35
|
-
|
36
|
-
# url = 'http://localhost:3000/short.html'
|
37
|
-
url = 'http://localhost:3000'
|
38
|
-
|
39
|
-
def request_without_drb(browser, url)
|
40
|
-
browser.get(url)
|
41
|
-
browser.response
|
42
|
-
end
|
43
|
-
|
44
|
-
def request_with_drb(browser, url)
|
45
|
-
DRb.start_service(Steam.config[:drb_uri], browser)
|
46
|
-
drb = DRbObject.new(nil, Steam.config[:drb_uri])
|
47
|
-
drb.get(url)
|
48
|
-
drb.response
|
49
|
-
end
|
50
|
-
|
51
|
-
browser = Steam::Browser.create(:html_unit, connection)
|
52
|
-
response = request_without_drb(browser, url)
|
53
|
-
# response = request_with_drb(browser, url)
|
54
|
-
|
55
|
-
puts response.body
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rjb'
|
3
|
-
|
4
|
-
class_path = Dir[File.expand_path(File.dirname(__FILE__) + '/../../lib/htmlunit') + '/*.jar'].join(':')
|
5
|
-
Rjb::load(class_path)
|
6
|
-
|
7
|
-
|
8
|
-
klass = Rjb::import('java.lang.String')
|
9
|
-
klass = Rjb::import('com.gargoylesoftware.htmlunit.WebResponseData')
|
10
|
-
|
11
|
-
# methods = klass.getDeclaredMethods
|
12
|
-
methods = klass.getConstructors
|
13
|
-
|
14
|
-
methods.each do |method|
|
15
|
-
# method.getParameterTypes.map { |type| p type._classname }
|
16
|
-
params = method.getParameterTypes.map { |type| type.getName }.join(', ')
|
17
|
-
puts "#{method.getName}(#{params})"
|
18
|
-
end
|
19
|
-
|
20
|
-
signature = '[B'
|
21
|
-
p klass.new_with_sig(signature, "foo".split(/./))
|
22
|
-
# String(byte[] bytes)
|
data/test/playground/nokogiri.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'nokogiri'
|
3
|
-
|
4
|
-
html = <<-html
|
5
|
-
<html>
|
6
|
-
<body>
|
7
|
-
<p class="foo bar baz">FOO</p>
|
8
|
-
</body>
|
9
|
-
</html>
|
10
|
-
html
|
11
|
-
|
12
|
-
# p Nokogiri::CSS.xpath_for('p[content="FOO"]')
|
13
|
-
doc = Nokogiri::HTML::Document.parse(html)
|
14
|
-
p doc.css('p[class~="foo"]', 'FOO')
|
15
|
-
# p doc.xpath('//p')
|
@@ -1,83 +0,0 @@
|
|
1
|
-
$: << File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
2
|
-
require 'test/unit'
|
3
|
-
require 'steam'
|
4
|
-
include Steam
|
5
|
-
|
6
|
-
Java.import 'com.gargoylesoftware.htmlunit.WebClient'
|
7
|
-
Java.import 'com.gargoylesoftware.htmlunit.BrowserVersion'
|
8
|
-
Java.import 'com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException'
|
9
|
-
Java.import 'com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController'
|
10
|
-
|
11
|
-
SILENCE = true
|
12
|
-
|
13
|
-
class TestConnection < Browser::HtmlUnit::Connection
|
14
|
-
attr_reader :url, :method, :headers
|
15
|
-
|
16
|
-
def getResponse(request)
|
17
|
-
@url = request.getUrl.toString
|
18
|
-
# $method = request.getMethod.toString
|
19
|
-
@headers = Hash[*request.getAdditionalHeaders.entrySet.toArray.to_a.map do |a|
|
20
|
-
[a.getKey.toString, a.getValue.toString]
|
21
|
-
end.flatten]
|
22
|
-
super
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class TestHtmlUnit < Test::Unit::TestCase
|
27
|
-
def setup
|
28
|
-
@client = Java::WebClient.new(Java::BrowserVersion.FIREFOX_3)
|
29
|
-
@client.setCssEnabled(true)
|
30
|
-
@client.setJavaScriptEnabled(true)
|
31
|
-
# client.setAjaxController(Java::NicelyResynchronizingAjaxController.new)
|
32
|
-
|
33
|
-
@mock = Connection::Mock.new
|
34
|
-
@connection = TestConnection.new(@mock)
|
35
|
-
@client.setWebConnection(Rjb::bind(@connection, 'com.gargoylesoftware.htmlunit.WebConnection'))
|
36
|
-
end
|
37
|
-
|
38
|
-
def _test_xml_http_request_accept_header
|
39
|
-
page = <<-erb
|
40
|
-
<html>
|
41
|
-
<head>
|
42
|
-
<script>
|
43
|
-
document.title = 'pre ajax call';
|
44
|
-
function ajax(url) {
|
45
|
-
http = new XMLHttpRequest();
|
46
|
-
http.open("GET", url, true);
|
47
|
-
http.setRequestHeader('Accept', 'application/json')
|
48
|
-
http.send(null);
|
49
|
-
}
|
50
|
-
ajax('/ajax/1');
|
51
|
-
</script>
|
52
|
-
</head>
|
53
|
-
</html>
|
54
|
-
erb
|
55
|
-
|
56
|
-
@mock.mock :get, 'http://localhost:3000/', page
|
57
|
-
page = @client.getPage('http://localhost:3000/')
|
58
|
-
assert_equal 'application/json', @connection.headers['Accept']
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_xml_http_request_delete_query_params
|
62
|
-
page = <<-erb
|
63
|
-
<html>
|
64
|
-
<head>
|
65
|
-
<script>
|
66
|
-
document.title = 'pre ajax call';
|
67
|
-
function ajax(url) {
|
68
|
-
http = new XMLHttpRequest();
|
69
|
-
http.open("DELETE", url, true);
|
70
|
-
http.setRequestHeader('Accept', 'application/json')
|
71
|
-
http.send(null);
|
72
|
-
}
|
73
|
-
ajax('/ajax/1?foo=bar');
|
74
|
-
</script>
|
75
|
-
</head>
|
76
|
-
</html>
|
77
|
-
erb
|
78
|
-
|
79
|
-
@mock.mock :get, 'http://localhost:3000/', page
|
80
|
-
page = @client.getPage('http://localhost:3000/')
|
81
|
-
assert_equal 'http://localhost:3000/ajax/1?foo=bar', @connection.url
|
82
|
-
end
|
83
|
-
end
|
data/test/playground/rack.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rack'
|
3
|
-
require 'rack/file'
|
4
|
-
require 'rack/mock'
|
5
|
-
|
6
|
-
include Rack
|
7
|
-
|
8
|
-
rack = File.new(File.dirname(__FILE__) + '/fixtures')
|
9
|
-
env = MockRequest.env_for('http://localhost:3000/javascripts/foo.js')
|
10
|
-
response = rack.call(env)
|
11
|
-
p response[2].path
|
data/test/playground/rjb_bind.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rjb'
|
3
|
-
|
4
|
-
class_path = Dir[File.expand_path(File.dirname(__FILE__) + '/../../lib/htmlunit') + '/*.jar'].join(':')
|
5
|
-
|
6
|
-
Rjb::load(class_path)
|
7
|
-
|
8
|
-
Url = Rjb::import('java.net.URL')
|
9
|
-
WebClient = Rjb::import('com.gargoylesoftware.htmlunit.WebClient')
|
10
|
-
HtmlUnitMockWebConnection = Rjb::import('com.gargoylesoftware.htmlunit.MockWebConnection')
|
11
|
-
|
12
|
-
class MockConnection
|
13
|
-
attr_reader :connection
|
14
|
-
|
15
|
-
def initialize
|
16
|
-
@connection = HtmlUnitMockWebConnection.new
|
17
|
-
end
|
18
|
-
|
19
|
-
def method_missing(method, *args)
|
20
|
-
p [method, args.first.toString]
|
21
|
-
@connection.send(method, *args)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
connection = MockConnection.new
|
26
|
-
# connection = HtmlUnitMockWebConnection.new
|
27
|
-
|
28
|
-
content = '<html><head><script src="/javascripts/foo.js" type="text/javascript"></script></head><body></body></html>'
|
29
|
-
url = Url.new('http://localhost:3000/foo')
|
30
|
-
connection.setResponse(url, content, 'text/html')
|
31
|
-
|
32
|
-
content = 'document.title = "FOO";'
|
33
|
-
url = Url.new('http://localhost:3000/javascripts/foo.js')
|
34
|
-
connection.setResponse(url, content, 'application/javascript')
|
35
|
-
|
36
|
-
client = WebClient.new
|
37
|
-
client.setCssEnabled(true)
|
38
|
-
client.setJavaScriptEnabled(true)
|
39
|
-
client.setWebConnection(Rjb::bind(connection, 'com.gargoylesoftware.htmlunit.WebConnection'))
|
40
|
-
# client.setWebConnection(connection)
|
41
|
-
page = client.getPage('http://localhost:3000/foo')
|
42
|
-
# puts page.asXml
|
@@ -1,129 +0,0 @@
|
|
1
|
-
# running this script, e.g. with
|
2
|
-
#
|
3
|
-
# ruby test/playground/stack_level_problem.rb
|
4
|
-
#
|
5
|
-
# will yield an error message like this:
|
6
|
-
#
|
7
|
-
# stack level too deep
|
8
|
-
# test/playground/stack_level_problem.rb:94:in `getResponse'
|
9
|
-
# test/playground/stack_level_problem.rb:109:in `method_missing'
|
10
|
-
# test/playground/stack_level_problem.rb:109
|
11
|
-
#
|
12
|
-
# The fun part is that whenever I change a single line, e.g. output
|
13
|
-
# something with puts, I'll get the same error from a different place.
|
14
|
-
#
|
15
|
-
# Also, there doesn't seem to happen any "real" recursion. Maybe Ruby
|
16
|
-
# just "thinks" there's recursion happening. Or maybe something
|
17
|
-
# completely unrelated is happening?
|
18
|
-
|
19
|
-
$: << File.expand_path(File.dirname(__FILE__) + "/../../lib")
|
20
|
-
require 'steam'
|
21
|
-
require 'steam/browser/html_unit/client'
|
22
|
-
include Steam
|
23
|
-
|
24
|
-
class WebResponse
|
25
|
-
Java.import 'java.net.Url'
|
26
|
-
Java.import 'java.io.ByteArrayInputStream'
|
27
|
-
Java.import 'com.gargoylesoftware.htmlunit.WebRequestSettings'
|
28
|
-
|
29
|
-
attr_reader :request, :response
|
30
|
-
|
31
|
-
def initialize(request, response)
|
32
|
-
@request = request
|
33
|
-
@response = response
|
34
|
-
end
|
35
|
-
|
36
|
-
def getRequestSettings
|
37
|
-
Java::WebRequestSettings.new(Java::Url.new('http://localhost:3000/'))
|
38
|
-
end
|
39
|
-
|
40
|
-
def getResponseHeaders
|
41
|
-
Java::Arrays.asList([])
|
42
|
-
end
|
43
|
-
|
44
|
-
def getResponseHeaderValue(name)
|
45
|
-
''
|
46
|
-
end
|
47
|
-
|
48
|
-
def getStatusCode
|
49
|
-
200
|
50
|
-
end
|
51
|
-
|
52
|
-
def getStatusMessage
|
53
|
-
'OK'
|
54
|
-
end
|
55
|
-
|
56
|
-
def getContentType
|
57
|
-
response.content_type.split(';').first
|
58
|
-
end
|
59
|
-
|
60
|
-
def getContentCharset
|
61
|
-
'utf-8'
|
62
|
-
end
|
63
|
-
|
64
|
-
def getContentCharsetOrNull
|
65
|
-
'utf-8'
|
66
|
-
end
|
67
|
-
|
68
|
-
def getContentAsString
|
69
|
-
@body ||= response.body.join
|
70
|
-
end
|
71
|
-
|
72
|
-
def getContentAsStream
|
73
|
-
bytes = getContentAsString.unpack('C*')
|
74
|
-
Java::ByteArrayInputStream.new_with_sig('[B', bytes)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
class Connection
|
79
|
-
page = <<-erb
|
80
|
-
<html>
|
81
|
-
<head>
|
82
|
-
<script>
|
83
|
-
document.title = 'pre ajax call';
|
84
|
-
function some_ajax(url) {
|
85
|
-
http = new XMLHttpRequest();
|
86
|
-
http.open("GET", url, true);
|
87
|
-
http.onreadystatechange = function() {
|
88
|
-
document.title = document.title + ' ' + http.readyState
|
89
|
-
if(http.readyState == 4) document.title = http.responseText
|
90
|
-
}
|
91
|
-
http.send(null);
|
92
|
-
}
|
93
|
-
some_ajax('/ajax/1');
|
94
|
-
// some_ajax('/ajax/2');
|
95
|
-
</script>
|
96
|
-
</head>
|
97
|
-
</html>
|
98
|
-
erb
|
99
|
-
|
100
|
-
@@responses = {
|
101
|
-
'http://localhost:3000/' => Rack::Response.new(page, 200),
|
102
|
-
'http://localhost:3000/ajax/1' => Rack::Response.new('post ajax call!', 200, 'Content-Type' => 'application/javascript')
|
103
|
-
}
|
104
|
-
|
105
|
-
@@track = []
|
106
|
-
|
107
|
-
def getResponse(request)
|
108
|
-
url = request.getUrl.toString.dup
|
109
|
-
method = request.getHttpMethod.toString.dup
|
110
|
-
request = Request.new(method, url) # headers
|
111
|
-
response = @@responses[url]
|
112
|
-
Rjb::bind(WebResponse.new(request, response), 'com.gargoylesoftware.htmlunit.WebResponse')
|
113
|
-
rescue Exception => e
|
114
|
-
puts e.message
|
115
|
-
e.backtrace.each { |line| puts line }
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
|
120
|
-
client = Java::WebClient.new(Java::BrowserVersion.FIREFOX_3)
|
121
|
-
client.setCssEnabled(true)
|
122
|
-
client.setJavaScriptEnabled(true)
|
123
|
-
|
124
|
-
connection = Connection.new
|
125
|
-
client.setWebConnection(Rjb::bind(connection, 'com.gargoylesoftware.htmlunit.WebConnection'))
|
126
|
-
|
127
|
-
page = client.getPage('http://localhost:3000/')
|
128
|
-
# puts page.asXml
|
129
|
-
# puts page.getTitleText
|