jarib-celerity 0.0.6.17 → 0.0.6.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -58,7 +58,7 @@ module Celerity
58
58
  raise TypeError, "wrong argument type #{opts.class}, expected Hash"
59
59
  end
60
60
 
61
- unless (render_types = [:html, :xml, nil]).include?(opts[:render])
61
+ unless (render_types = [:html, :xml, nil, 'html', 'xml']).include?(opts[:render])
62
62
  raise ArgumentError, "expected one of #{render_types.inspect} for key :render"
63
63
  end
64
64
 
@@ -165,7 +165,7 @@ module Celerity
165
165
  raise e if tries >= max_retries
166
166
 
167
167
  tries += 1
168
- $stderr.puts "warning: celerity caught #{e} - retry ##{tries}"
168
+ warn "warning: celerity caught #{e} - retry ##{tries}"
169
169
  retry
170
170
  end
171
171
 
@@ -34,31 +34,52 @@ module Celerity
34
34
  end
35
35
 
36
36
  #
37
- # Select the option(s) matching the given value.
37
+ # Select the option(s) whose text or label matches the given string.
38
38
  # If several options match the value given, all will be selected.
39
39
  #
40
40
  # @param [String, Regexp] value A value.
41
41
  # @raise [Celerity::Exception::NoValueFoundException] if the value does not exist.
42
- # @return [String, nil] The option selected. If multiple options match, returns the first match
42
+ # @return [String] The option selected. If multiple options match, returns the first match
43
43
  #
44
44
  #
45
45
 
46
46
  def select(value)
47
47
  assert_exists
48
- raise NoValueFoundException, "unknown option with value #{value.inspect} for select_list #{@conditions.inspect}" unless include?(value)
49
48
 
50
49
  selected = nil
51
- matching = @object.getOptions.select do |option|
50
+ @object.getOptions.select do |option|
52
51
  next unless matches_option?(option, value)
53
52
 
54
53
  selected ||= option.asText
55
54
  option.click
56
55
  end
57
56
 
57
+ unless selected
58
+ raise NoValueFoundException, "unknown option with value #{value.inspect} for select_list #{@conditions.inspect}"
59
+ end
60
+
58
61
  selected
59
62
  end
60
63
  alias_method :set, :select
61
64
 
65
+ #
66
+ # Selects the option(s) whose value attribute matches the given string.
67
+ # @param [String, Regexp] value A value.
68
+ # @raise [Celerity::Exception::NoValueFoundException] if the value does not exist.
69
+ # @return [String] The option selected. If multiple options match, returns the first match
70
+ #
71
+
72
+ def select_value(value)
73
+ assert_exists
74
+ selected = @object.getOptions.map { |e| e.click if matches?(e.getValueAttribute, value) }.compact.first
75
+
76
+ unless selected
77
+ raise NoValueFoundException, "unknown option with value #{value.inspect} for select_list #{@conditions.inspect}"
78
+ end
79
+
80
+ selected.asText
81
+ end
82
+
62
83
  #
63
84
  # Returns true if the select list has one or more options matching the given value.
64
85
  #
@@ -3,7 +3,7 @@ module Celerity #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
5
  TINY = 6
6
- PATCH = 17 # Set to nil for official release
6
+ PATCH = 18 # Set to nil for official release
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
9
9
  end
@@ -21,7 +21,7 @@ module Celerity
21
21
  #
22
22
 
23
23
  def render_html(html, url)
24
- send_data({'method' => 'page_changed', 'html' => html, 'url' => url}.to_json)
24
+ send_data('method' => 'page_changed', 'html' => html, 'url' => url)
25
25
  end
26
26
 
27
27
  #
@@ -30,16 +30,28 @@ module Celerity
30
30
  #
31
31
 
32
32
  def save(path)
33
- send_data({'method' => 'save', 'path' => path}.to_json)
33
+ send_data('method' => 'save', 'path' => path)
34
34
  end
35
35
 
36
+
36
37
  #
37
38
  # Tells the viewer to dump the render tree to the given path.
38
- # Only available on the Qt viewer.
39
+ # Only available in the Qt viewer.
39
40
  #
40
41
 
41
42
  def save_render_tree(path)
42
- send_data({'method' => 'save_render_tree', 'path' => path}.to_json)
43
+ send_data('method' => 'save_render_tree', 'path' => path)
44
+ end
45
+
46
+ #
47
+ # Get the currently rendered page as a Base64-encoded PNG image.
48
+ # Only available in the Qt viewer.
49
+ #
50
+
51
+ def image_data
52
+ send_data('method' => 'image_data')
53
+ data = read_data
54
+ data['image'] || data['error']
43
55
  end
44
56
 
45
57
  #
@@ -52,7 +64,8 @@ module Celerity
52
64
 
53
65
  private
54
66
 
55
- def send_data(json)
67
+ def send_data(msg)
68
+ json = msg.to_json
56
69
  data = "Content-Length: #{json.size}\n\n#{json}"
57
70
  @socket.write data
58
71
  @socket.flush
@@ -60,5 +73,17 @@ module Celerity
60
73
  nil
61
74
  end
62
75
 
76
+ def read_data
77
+ buf = ''
78
+ until buf =~ /\n\n\z/ || @socket.eof? || @socket.closed?
79
+ buf << @socket.read(1).to_s
80
+ end
81
+
82
+ return if buf.empty?
83
+
84
+ length = buf[/Content-Length: (\d+)/, 1].to_i
85
+ JSON.parse @socket.read(length)
86
+ end
87
+
63
88
  end
64
89
  end
@@ -68,7 +68,6 @@ module Celerity
68
68
  alias_method :getAllContents, :options
69
69
  alias_method :clearSelection, :clear
70
70
  alias_method :clear_selection, :clear
71
- alias_method :select_value, :select
72
71
  alias_method :includes?, :include?
73
72
  end
74
73
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jarib-celerity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6.17
4
+ version: 0.0.6.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jari Bakken
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-08-16 00:00:00 -07:00
14
+ date: 2009-08-25 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: 2.0.0
35
+ version: 2.3.2
36
36
  version:
37
37
  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."
38
38
  email: jari.bakken@finn.no
@@ -46,6 +46,7 @@ extra_rdoc_files:
46
46
  files:
47
47
  - History.txt
48
48
  - lib
49
+ - lib/celerity
49
50
  - lib/celerity/browser.rb
50
51
  - lib/celerity/clickable_element.rb
51
52
  - lib/celerity/collections.rb
@@ -55,6 +56,7 @@ files:
55
56
  - lib/celerity/element.rb
56
57
  - lib/celerity/element_collection.rb
57
58
  - lib/celerity/element_locator.rb
59
+ - lib/celerity/elements
58
60
  - lib/celerity/elements/button.rb
59
61
  - lib/celerity/elements/file_field.rb
60
62
  - lib/celerity/elements/form.rb
@@ -73,19 +75,8 @@ files:
73
75
  - lib/celerity/elements/table_row.rb
74
76
  - lib/celerity/elements/text_field.rb
75
77
  - lib/celerity/exception.rb
76
- - lib/celerity/htmlunit.rb
77
- - lib/celerity/identifier.rb
78
- - lib/celerity/ignoring_web_connection.rb
79
- - lib/celerity/input_element.rb
80
- - lib/celerity/listener.rb
81
- - lib/celerity/short_inspect.rb
82
- - lib/celerity/util.rb
83
- - lib/celerity/version.rb
84
- - lib/celerity/viewer_connection.rb
85
- - lib/celerity/watir_compatibility.rb
86
- - lib/celerity/xpath_support.rb
87
- - lib/celerity.rb
88
- - lib/celerity/htmlunit/commons-codec-1.3.jar
78
+ - lib/celerity/htmlunit
79
+ - lib/celerity/htmlunit/commons-codec-1.4.jar
89
80
  - lib/celerity/htmlunit/commons-collections-3.2.1.jar
90
81
  - lib/celerity/htmlunit/commons-httpclient-3.1.jar
91
82
  - lib/celerity/htmlunit/commons-io-1.4.jar
@@ -94,13 +85,26 @@ files:
94
85
  - lib/celerity/htmlunit/cssparser-0.9.5.jar
95
86
  - lib/celerity/htmlunit/htmlunit-2.6-SNAPSHOT.jar
96
87
  - lib/celerity/htmlunit/htmlunit-core-js-2.6-SNAPSHOT.jar
97
- - lib/celerity/htmlunit/nekohtml-1.9.13-20090812.213532-11.jar
88
+ - lib/celerity/htmlunit/nekohtml-1.9.13-20090820.100833-15.jar
98
89
  - lib/celerity/htmlunit/sac-1.3.jar
99
90
  - lib/celerity/htmlunit/serializer-2.7.1.jar
100
91
  - lib/celerity/htmlunit/xalan-2.7.1.jar
101
- - lib/celerity/htmlunit/xercesImpl-2.8.1.jar
92
+ - lib/celerity/htmlunit/xercesImpl-2.9.1.jar
102
93
  - lib/celerity/htmlunit/xml-apis-1.3.04.jar
94
+ - lib/celerity/htmlunit.rb
95
+ - lib/celerity/identifier.rb
96
+ - lib/celerity/ignoring_web_connection.rb
97
+ - lib/celerity/input_element.rb
98
+ - lib/celerity/listener.rb
99
+ - lib/celerity/resources
103
100
  - lib/celerity/resources/no_viewer.png
101
+ - lib/celerity/short_inspect.rb
102
+ - lib/celerity/util.rb
103
+ - lib/celerity/version.rb
104
+ - lib/celerity/viewer_connection.rb
105
+ - lib/celerity/watir_compatibility.rb
106
+ - lib/celerity/xpath_support.rb
107
+ - lib/celerity.rb
104
108
  - License.txt
105
109
  - Rakefile
106
110
  - README.markdown