walidhalabi-celerity 0.0.6.12 → 0.0.6.13
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/celerity/browser.rb +32 -22
- data/lib/celerity/element.rb +1 -0
- data/lib/celerity/element_locator.rb +12 -3
- data/lib/celerity/elements/button.rb +3 -1
- data/lib/celerity/elements/meta.rb +2 -1
- data/lib/celerity/exception.rb +6 -0
- data/lib/celerity/htmlunit/htmlunit-2.6-SNAPSHOT.jar +0 -0
- data/lib/celerity/htmlunit/{htmlunit-core-js-2.5.jar → htmlunit-core-js-2.6-SNAPSHOT.jar} +0 -0
- data/lib/celerity/version.rb +1 -1
- metadata +3 -3
data/lib/celerity/browser.rb
CHANGED
@@ -32,7 +32,7 @@ module Celerity
|
|
32
32
|
# @see Celerity::Container for an introduction to the main API.
|
33
33
|
#
|
34
34
|
# @option opts :log_level [Symbol] (:warning) @see log_level=
|
35
|
-
# @option opts :browser [:firefox, :
|
35
|
+
# @option opts :browser [:internet_explorer, :firefox, :firefox3] (:firefox) Set the BrowserVersion used by HtmlUnit. Defaults to Firefox 2.
|
36
36
|
# @option opts :css [Boolean] (false) Enable CSS. Disabled by default.
|
37
37
|
# @option opts :secure_ssl [Boolean] (true) Disable secure SSL. Enabled by default.
|
38
38
|
# @option opts :resynchronize [Boolean] (false) Use HtmlUnit::NicelyResynchronizingAjaxController to resynchronize Ajax calls.
|
@@ -56,8 +56,9 @@ module Celerity
|
|
56
56
|
unless (render_types = [:html, :xml, nil]).include?(opts[:render])
|
57
57
|
raise ArgumentError, "expected one of #{render_types.inspect} for key :render"
|
58
58
|
end
|
59
|
-
|
60
|
-
|
59
|
+
|
60
|
+
opts = opts.dup # we'll delete from opts, so dup to avoid side effects
|
61
|
+
@options = opts.dup # keep the unmodified version around as well
|
61
62
|
|
62
63
|
@render_type = opts.delete(:render) || :html
|
63
64
|
@charset = opts.delete(:charset) || "UTF-8"
|
@@ -348,7 +349,7 @@ module Celerity
|
|
348
349
|
max_age = opts.delete(:max_age) || (Time.now + 60*60*24) # not sure if this is correct
|
349
350
|
secure = opts.delete(:secure) || false
|
350
351
|
|
351
|
-
raise "unknown option: #{opts.inspect}" unless opts.empty?
|
352
|
+
raise(ArgumentError, "unknown option: #{opts.inspect}") unless opts.empty?
|
352
353
|
|
353
354
|
cookie = Cookie.new(domain, name, value, path, max_age, secure)
|
354
355
|
@webclient.getCookieManager.addCookie(cookie)
|
@@ -359,6 +360,8 @@ module Celerity
|
|
359
360
|
#
|
360
361
|
# @param [String] domain
|
361
362
|
# @param [String] name
|
363
|
+
#
|
364
|
+
# @raise [CookieNotFoundError] if the cookie doesn't exist
|
362
365
|
#
|
363
366
|
|
364
367
|
def remove_cookie(domain, name)
|
@@ -366,7 +369,7 @@ module Celerity
|
|
366
369
|
cookie = cm.getCookies.find { |c| c.getDomain == domain && c.getName == name }
|
367
370
|
|
368
371
|
if cookie.nil?
|
369
|
-
raise "no cookie with domain #{domain.inspect} and name #{name.inspect}"
|
372
|
+
raise CookieNotFoundError, "no cookie with domain #{domain.inspect} and name #{name.inspect}"
|
370
373
|
end
|
371
374
|
|
372
375
|
cm.removeCookie(cookie)
|
@@ -407,12 +410,16 @@ module Celerity
|
|
407
410
|
#
|
408
411
|
|
409
412
|
def wait_until(timeout = 30, &block)
|
413
|
+
returned = nil
|
414
|
+
|
410
415
|
Timeout.timeout(timeout) do
|
411
|
-
until yield(self)
|
416
|
+
until returned = yield(self)
|
412
417
|
refresh_page_from_window
|
413
418
|
sleep 0.1
|
414
419
|
end
|
415
420
|
end
|
421
|
+
|
422
|
+
returned
|
416
423
|
end
|
417
424
|
|
418
425
|
#
|
@@ -424,12 +431,16 @@ module Celerity
|
|
424
431
|
#
|
425
432
|
|
426
433
|
def wait_while(timeout = 30, &block)
|
434
|
+
returned = nil
|
435
|
+
|
427
436
|
Timeout.timeout(timeout) do
|
428
|
-
while yield(self)
|
437
|
+
while returned = yield(self)
|
429
438
|
refresh_page_from_window
|
430
439
|
sleep 0.1
|
431
440
|
end
|
432
441
|
end
|
442
|
+
|
443
|
+
returned
|
433
444
|
end
|
434
445
|
|
435
446
|
#
|
@@ -471,21 +482,18 @@ module Celerity
|
|
471
482
|
# Start or stop HtmlUnit's DebuggingWebConnection. (Celerity only)
|
472
483
|
# The output will go to /tmp/«name»
|
473
484
|
#
|
474
|
-
# @param [
|
475
|
-
# @param [
|
485
|
+
# @param [String] name directory name
|
486
|
+
# @param [block] blk block to execute
|
476
487
|
#
|
477
488
|
|
478
|
-
def debug_web_connection(
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
@webclient.setWebConnection(@old_webconnection) if @old_webconnection
|
487
|
-
$stderr.puts "debug-webconnection off"
|
488
|
-
end
|
489
|
+
def debug_web_connection(name, &blk)
|
490
|
+
old_wc = @webclient.getWebConnection
|
491
|
+
|
492
|
+
@webclient.setWebConnection HtmlUnit::Util::DebuggingWebConnection.new(old_wc, name)
|
493
|
+
res = yield
|
494
|
+
@webclient.setWebConnection old_wc
|
495
|
+
|
496
|
+
res
|
489
497
|
end
|
490
498
|
|
491
499
|
#
|
@@ -684,7 +692,7 @@ module Celerity
|
|
684
692
|
#
|
685
693
|
# Check that we have a @page object.
|
686
694
|
#
|
687
|
-
# @raise [
|
695
|
+
# @raise [UnknownObjectException] if no page is loaded.
|
688
696
|
# @api private
|
689
697
|
#
|
690
698
|
|
@@ -722,8 +730,10 @@ module Celerity
|
|
722
730
|
browser = (opts.delete(:browser) || :firefox).to_sym
|
723
731
|
|
724
732
|
case browser
|
725
|
-
when :firefox, :ff
|
733
|
+
when :firefox, :ff, :ff2
|
726
734
|
browser_version = ::HtmlUnit::BrowserVersion::FIREFOX_2
|
735
|
+
when :firefox3, :ff3
|
736
|
+
browser_version = ::HtmlUnit::BrowserVersion::FIREFOX_3
|
727
737
|
when :internet_explorer, :ie
|
728
738
|
browser_version = ::HtmlUnit::BrowserVersion::INTERNET_EXPLORER_7
|
729
739
|
else
|
data/lib/celerity/element.rb
CHANGED
@@ -118,7 +118,7 @@ module Celerity
|
|
118
118
|
|
119
119
|
def get_by_idents(meth, idents)
|
120
120
|
with_nullpointer_retry do
|
121
|
-
|
121
|
+
all_elements.send(meth) do |e|
|
122
122
|
next unless @tags.include?(e.getTagName)
|
123
123
|
idents.any? { |id| element_matches_ident?(e, id) }
|
124
124
|
end
|
@@ -142,13 +142,22 @@ module Celerity
|
|
142
142
|
def elements_by_tag_names(tags = @tags)
|
143
143
|
with_nullpointer_retry do
|
144
144
|
# HtmlUnit's getHtmlElementsByTagNames won't get elements in the correct
|
145
|
-
# order (making :index fail), so we're
|
146
|
-
|
145
|
+
# order (making :index fail), so we're looping through all elements instead.
|
146
|
+
all_elements.select do |elem|
|
147
147
|
tags.include?(elem.getTagName)
|
148
148
|
end
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
152
|
+
def all_elements
|
153
|
+
unless @object
|
154
|
+
raise %{internal error in #{self.class}: @object=#{@object.inspect} @container=#{@container.inspect} @element_class=#{@element_class.inspect}
|
155
|
+
Please report this failure and the code/HTML that caused it at http://github.com/jarib/celerity/issues}
|
156
|
+
end
|
157
|
+
|
158
|
+
@object.getAllHtmlChildElements
|
159
|
+
end
|
160
|
+
|
152
161
|
# HtmlUnit throws NPEs sometimes when we're locating elements
|
153
162
|
# Retry seems to work fine.
|
154
163
|
def with_nullpointer_retry(max_retries = 3)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Celerity
|
2
2
|
class Meta < Element
|
3
|
-
ATTRIBUTES
|
3
|
+
ATTRIBUTES = [:name, :id, :'http-equiv', :content, :scheme] | HTML_401_TRANSITIONAL[:i18n]
|
4
|
+
DEFAULT_HOW = :id
|
4
5
|
TAGS = [ Identifier.new('meta') ]
|
5
6
|
end
|
6
7
|
end
|
data/lib/celerity/exception.rb
CHANGED
@@ -73,5 +73,11 @@ module Celerity
|
|
73
73
|
|
74
74
|
class UnexpectedPageException < CelerityException; end
|
75
75
|
|
76
|
+
#
|
77
|
+
# This exception is thrown if an unexpected content type is returned by the server.
|
78
|
+
#
|
79
|
+
|
80
|
+
class CookieNotFoundError < CelerityException; end
|
81
|
+
|
76
82
|
end # Exception
|
77
83
|
end # Celerity
|
Binary file
|
Binary file
|
data/lib/celerity/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: walidhalabi-celerity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.6.
|
4
|
+
version: 0.0.6.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jari Bakken
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- !ruby/object:Gem::Version
|
25
25
|
version: 2.0.0
|
26
26
|
version:
|
27
|
-
description: "Celerity is a JRuby wrapper around HtmlUnit \xE2\x80\x93 a headless Java browser with JavaScript support. It provides a simple API for programmatic navigation through web applications. Celerity aims at being API compatible with Watir. This version has been modified slightly to include a workaround for a YUI issue by
|
27
|
+
description: "Celerity is a JRuby wrapper around HtmlUnit \xE2\x80\x93 a headless Java browser with JavaScript support. It provides a simple API for programmatic navigation through web applications. Celerity aims at being API compatible with Watir. This version has been modified slightly to include a workaround for a YUI issue by Walid Halabi."
|
28
28
|
email: jari.bakken@finn.no
|
29
29
|
executables: []
|
30
30
|
|
@@ -75,7 +75,7 @@ files:
|
|
75
75
|
- lib/celerity/htmlunit/commons-logging-1.1.1.jar
|
76
76
|
- lib/celerity/htmlunit/cssparser-0.9.5.jar
|
77
77
|
- lib/celerity/htmlunit/htmlunit-2.6-SNAPSHOT.jar
|
78
|
-
- lib/celerity/htmlunit/htmlunit-core-js-2.
|
78
|
+
- lib/celerity/htmlunit/htmlunit-core-js-2.6-SNAPSHOT.jar
|
79
79
|
- lib/celerity/htmlunit/nekohtml-1.9.13-20090507.082850-2.jar
|
80
80
|
- lib/celerity/htmlunit/sac-1.3.jar
|
81
81
|
- lib/celerity/htmlunit/serializer-2.7.1.jar
|