operawatir 0.5.pre1-jruby → 0.5.pre2-jruby

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,4 +1,57 @@
1
- v0.5.pre1 2011-09-31
1
+ v0.5.pre2 2011-09-06
2
+
3
+ [NEW FEATURES]
4
+
5
+ * Added browser utility service as Browser#utils, implementing the following
6
+ new method calls:
7
+
8
+ Utils#core_version, returning the core version
9
+ Utils#os, returning the browser's OS
10
+ Utils#product, returning product type (desktop/core/mobile)
11
+ Utils#binary_path, returning full path to Opera binary
12
+ Utils#user_agent, returning User-Agent string
13
+ Utils#pid, returning the browser's PID if available
14
+
15
+ (andreastt)
16
+
17
+ * Implementing ability to enable verbose logging in operawatir. Added
18
+ following new command-line switches to the operawatir binary:
19
+
20
+ --debug=LEVEL (or -d for short), for specifying logging level
21
+ --log=FILE, for specifying sending the logging to a file
22
+
23
+ Available logging levels are: SEVERE (highest), WARNING, INFO, CONFIG,
24
+ FINE, FINER, FINEST (lowest), ALL. Default is INFO. See `operawatir
25
+ --help` for more information.
26
+
27
+ (andreastt)
28
+
29
+ [ENHANCEMENTS]
30
+
31
+ * Now using DesiredCapabilities from OperaDriver v0.7 instead of
32
+ OperaDriverSettings. (andreastt)
33
+
34
+ [BUG FIXES]
35
+
36
+ * initMouseEvent in Element#fire_event is now clicking clientX and clientY
37
+ instead of relying on internal driver locators. (andreastt)
38
+
39
+ * Compat::Window#show_frames now returns a string instead of writing to
40
+ STDOUT. (andreastt)
41
+
42
+ * Browser#quit was calling OperaDriver.shutdown() which is now deprecated.
43
+ Fixed by now calling OperaDriver.quit() instead. (andreastt)
44
+
45
+ * `operawatir --help` was broken, fixed by converting OptionParse object to a
46
+ String. (andreastt)
47
+
48
+ [OTHER]
49
+
50
+ * Upgraded to OperaDriver v0.7.1. (andreastt)
51
+
52
+ * Added tests for new Utils interface. (andreastt)
53
+
54
+ v0.5.pre1 2011-08-31
2
55
 
3
56
  [API CHANGES]
4
57
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.pre1
1
+ 0.5.pre2
data/bin/operawatir CHANGED
@@ -27,7 +27,7 @@ begin
27
27
  Usage: operawatir [-m|--manual] [-l|--launcher=BINARY] [--binary=BINARY]
28
28
  [-a|--args=ARGUMENTS] [-q|--no-quit] [--opera-idle] [-b|--backtrace]
29
29
  [--no-color] [-t|--tag=TAG] [-f|--format=FORMAT] [-o|--out=FILE]
30
- [-h|--help] [-v|--version] FILES
30
+ [-d|--debug=LEVEL] [--log=FILE] [-h|--help] [-v|--version] FILES
31
31
  EOS
32
32
 
33
33
  opts.separator ''
@@ -90,16 +90,28 @@ EOS
90
90
  opts.separator ''
91
91
  opts.separator 'Common options:'
92
92
 
93
+ opts.on_tail('-d', '--debug=LEVEL', 'The logging level to use. Available levels: SEVERE',
94
+ '(highest), WARNING, INFO (default), CONFIG, FINE,',
95
+ 'FINER, FINEST (lowest), ALL') do |l|
96
+ available_levels = ['SEVERE', 'WARNING', 'INFO', 'CONFIG', 'FINE', 'FINER', 'FINEST', 'ALL']
97
+ raise OptionParser::InvalidArgument, l.to_s.inspect unless available_levels.include?(l)
98
+ @options[:logging_level] = l
99
+ end
100
+
101
+ opts.on_tail('--log=FILE', 'Output the log to a file') do |f|
102
+ @options[:logging_file] = f
103
+ end
104
+
93
105
  opts.on_tail('-h', '--help', 'Show this message') do
94
- abort opts
106
+ abort opts.to_s
95
107
  end
96
108
 
97
109
  opts.on_tail('-v', '--version', 'Show version') do
98
110
  abort "OperaWatir version #{OperaWatir.version}"
99
111
  end
100
112
  end.parse!(ARGV)
101
- rescue OptionParser::InvalidOption => e
102
- abort "operawatir: Unknown option `#{e.to_s.sub(/invalid option:\s+/, '')}'"
113
+ rescue OptionParser::ParseError => e
114
+ abort "operawatir: #{e}"
103
115
  end
104
116
 
105
117
  if ARGV.empty?
data/lib/operawatir.rb CHANGED
@@ -5,12 +5,13 @@ require 'java'
5
5
  include Java
6
6
 
7
7
  %w(commons-jxpath-1.3.jar protobuf-java-2.3.0.jar selenium-java-head.jar
8
- operadriver-v0.6.1.jar commons-io-2.0.1.jar guava-r09.jar).each { |jar| require "operadriver/#{jar}" }
8
+ operadriver-v0.7.1.jar commons-io-2.0.1.jar guava-r09.jar).each { |jar| require "operadriver/#{jar}" }
9
9
 
10
10
  include_class org.openqa.selenium.WebDriver
11
11
  include_class org.openqa.selenium.remote.RemoteWebElement
12
12
  include_class org.openqa.selenium.NoSuchElementException
13
13
  include_class org.openqa.selenium.interactions.Actions
14
+ include_class org.openqa.selenium.remote.DesiredCapabilities
14
15
  include_class com.opera.core.systems.OperaDriver
15
16
  include_class com.opera.core.systems.OperaWebElement
16
17
  include_class com.opera.core.systems.settings.OperaDriverSettings
@@ -60,6 +61,7 @@ require 'operawatir/screenshot'
60
61
  require 'operawatir/preferences'
61
62
  require 'operawatir/spatnav'
62
63
  require 'operawatir/actions'
64
+ require 'operawatir/utils'
63
65
 
64
66
  require 'operawatir/exceptions'
65
67
  require 'operawatir/selector'
@@ -2,10 +2,10 @@
2
2
  class OperaWatir::Browser
3
3
  include Deprecated
4
4
 
5
- attr_accessor :driver, :active_window, :preferences, :keys, :spatnav
5
+ attr_accessor :driver, :active_window, :preferences, :keys, :spatnav, :utils
6
6
 
7
7
  def self.settings=(settings={})
8
- @opera_driver_settings = nil # Bust cache
8
+ @desired_capabilities = nil # Bust cache
9
9
  @settings = settings
10
10
  end
11
11
 
@@ -22,11 +22,12 @@ class OperaWatir::Browser
22
22
  def initialize
23
23
  OperaWatir.compatibility! unless OperaWatir.api >= 3
24
24
 
25
- self.driver = OperaDriver.new(self.class.opera_driver_settings)
25
+ self.driver = OperaDriver.new(self.class.desired_capabilities)
26
26
  self.active_window = OperaWatir::Window.new(self)
27
27
  self.preferences = OperaWatir::Preferences.new(self)
28
28
  self.keys = OperaWatir::Keys.new(self)
29
29
  self.spatnav = OperaWatir::Spatnav.new(self)
30
+ self.utils = OperaWatir::Utils.new(self)
30
31
  end
31
32
 
32
33
  alias_method :window, :active_window
@@ -48,7 +49,7 @@ class OperaWatir::Browser
48
49
 
49
50
  # Instruct the browser instance to quit and shut down.
50
51
  def quit
51
- driver.shutdown
52
+ driver.quit
52
53
  end
53
54
 
54
55
  # Get the version number of the driver. This _is not_ the same as
@@ -99,6 +100,7 @@ class OperaWatir::Browser
99
100
  def opera_action(name, *args)
100
101
  driver.operaAction(name, args.to_java(:string))
101
102
  end
103
+
102
104
  deprecated :opera_action
103
105
 
104
106
  # Full list of available Opera actions in the Opera build you're
@@ -111,6 +113,7 @@ class OperaWatir::Browser
111
113
  def opera_action_list
112
114
  driver.getOperaActionList.to_a
113
115
  end
116
+
114
117
  deprecated :opera_action_list
115
118
 
116
119
  # Selects all content in the currently focused element. Equivalent
@@ -196,14 +199,16 @@ class OperaWatir::Browser
196
199
 
197
200
  private
198
201
 
199
- def self.opera_driver_settings
200
- @opera_driver_settings ||= OperaDriverSettings.new.tap { |s|
201
- s.setAutostart false if self.settings[:manual]
202
- s.setOperaLauncherBinary self.settings[:launcher] if self.settings[:launcher]
203
- s.setOperaBinaryLocation self.settings[:path] if self.settings[:path]
204
- s.setOperaBinaryArguments self.settings[:args].to_s if self.settings[:args]
205
- s.setNoQuit true if self.settings[:no_quit]
206
- s.setUseOperaIdle true if self.settings[:opera_idle] or ENV['OPERA_IDLE'].truthy?
202
+ def self.desired_capabilities
203
+ @desired_capabilities ||= DesiredCapabilities.new.tap { |s|
204
+ s.setCapability('opera.logging.level', self.settings[:logging_level]) if self.settings[:logging_level]
205
+ s.setCapability('opera.logging.file', self.settings[:logging_file]) if self.settings[:logging_file]
206
+ s.setCapability('opera.autostart', false) if self.settings[:manual]
207
+ s.setCapability('opera.launcher', self.settings[:launcher]) if self.settings[:launcher]
208
+ s.setCapability('opera.binary', self.settings[:path]) if self.settings[:path]
209
+ s.setCapability('opera.arguments', self.settings[:args].to_s) if self.settings[:args]
210
+ s.setCapability('opera.no_quit', true) if self.settings[:no_quit]
211
+ s.setCapability('opera.idle', true) if self.settings[:opera_idle] or ENV['OPERA_IDLE'].truthy?
207
212
  }
208
213
  end
209
214
 
@@ -67,8 +67,9 @@ module OperaWatir
67
67
 
68
68
  def show_frames
69
69
  frames = driver.list_frames
70
- puts "There are #{frames.length.to_s} frames"
71
- frames.each_with_index { |frame, i| puts "frame index: #{(i.to_i + 1).to_s} name: #{frame.to_s}" }
70
+ text = "There are #{frames.length.to_s} frames\n"
71
+ frames.each_with_index { |frame, i| text << "frame index: #{(i.to_i + 1).to_s} name: #{frame.to_s}\n" }
72
+ text
72
73
  end
73
74
 
74
75
  end
@@ -200,7 +200,7 @@ class OperaWatir::Element
200
200
  init = "initEvent(\"#{event.to_s}\", true, true)"
201
201
  when :click, :dblclick, :mousedown, :mousemove, :mouseout, :mouseover, :mouseup
202
202
  type = 'MouseEvents'
203
- init = "initMouseEvent(\"#{event.to_s}\", true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null)"
203
+ init = "initMouseEvent(\"#{event.to_s}\", true, true, window, 1, 0, 0, #{x}, #{y}, false, false, false, false, 0, null)"
204
204
  else
205
205
  raise Exceptions::NotImplementedException, "Event on#{event} is not a valid ECMAscript event for OperaWatir."
206
206
  end
@@ -0,0 +1,31 @@
1
+ class OperaWatir::Utils
2
+
3
+ def initialize(browser)
4
+ @utils = browser.driver.utils
5
+ end
6
+
7
+ def core_version
8
+ @utils.getCoreVersion
9
+ end
10
+
11
+ def os
12
+ @utils.getOS
13
+ end
14
+
15
+ def product
16
+ @utils.getProduct
17
+ end
18
+
19
+ def binary_path
20
+ @utils.getBinaryPath
21
+ end
22
+
23
+ def user_agent
24
+ @utils.getUserAgent
25
+ end
26
+
27
+ def pid
28
+ @utils.getPID
29
+ end
30
+
31
+ end
data/operawatir.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{operawatir}
8
- s.version = "0.5.pre1"
8
+ s.version = "0.5.pre2"
9
9
  s.platform = %q{jruby}
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Andreas Tolf Tolfsen", "Chris Lloyd", "Stuart Knightley", "Deniz Turkoglu"]
13
- s.date = %q{2011-08-31}
13
+ s.date = %q{2011-09-06}
14
14
  s.description = %q{ OperaWatir is a part of the Watir (pronounced water) family of
15
15
  free software Ruby libraries for automating web browsers.
16
16
  OperaWatir provides a querying engine and Ruby bindings for a
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
40
40
  "lib/operadriver/commons-io-2.0.1.jar",
41
41
  "lib/operadriver/commons-jxpath-1.3.jar",
42
42
  "lib/operadriver/guava-r09.jar",
43
- "lib/operadriver/operadriver-v0.6.1.jar",
43
+ "lib/operadriver/operadriver-v0.7.1.jar",
44
44
  "lib/operadriver/protobuf-java-2.3.0.jar",
45
45
  "lib/operadriver/selenium-java-head.jar",
46
46
  "lib/operawatir.rb",
@@ -94,6 +94,7 @@ Gem::Specification.new do |s|
94
94
  "lib/operawatir/screenshot.rb",
95
95
  "lib/operawatir/selector.rb",
96
96
  "lib/operawatir/spatnav.rb",
97
+ "lib/operawatir/utils.rb",
97
98
  "lib/operawatir/version.rb",
98
99
  "lib/operawatir/window.rb",
99
100
  "operawatir.gemspec",
@@ -117,6 +118,7 @@ Gem::Specification.new do |s|
117
118
  "spec/operawatir/core/preferences_spec.rb",
118
119
  "spec/operawatir/core/screenshot_spec.rb",
119
120
  "spec/operawatir/core/spatnav_spec.rb",
121
+ "spec/operawatir/core/utils_spec.rb",
120
122
  "spec/operawatir/core/window_spec.rb",
121
123
  "spec/operawatir/desktop/desktopbrowser_spec.rb",
122
124
  "spec/operawatir/desktop/quickaddressfield_spec.rb",
@@ -0,0 +1,47 @@
1
+ require File.expand_path('../../watirspec_helper', __FILE__)
2
+
3
+ describe OperaWatir::Utils do
4
+
5
+ before(:all) { @utils = browser.utils }
6
+
7
+ describe '#core_version' do
8
+ it 'it matches a core version number' do
9
+ @utils.core_version.should match /\d+\.\d+\.\d+/
10
+ end
11
+ end
12
+
13
+ describe '#os' do
14
+ it 'is not empty' do
15
+ @utils.os.should_not be_empty
16
+ end
17
+ end
18
+
19
+ describe '#product' do
20
+ it 'is not unknown' do
21
+ @utils.product.should_not include 'unknown'
22
+ end
23
+
24
+ it 'is known' do
25
+ @utils.product.should match /core-gogi|desktop/
26
+ end
27
+ end
28
+
29
+ describe '#binary_path' do
30
+ it 'is not empty' do
31
+ @utils.binary_path.should_not be_empty
32
+ end
33
+ end
34
+
35
+ describe '#user_agent' do
36
+ it 'is a User-Agent string' do
37
+ @utils.user_agent.should match /Opera\/\d+\.\d+.+/
38
+ end
39
+ end
40
+
41
+ describe '#pid' do
42
+ it 'is greater than zero' do
43
+ @utils.pid.should > 0
44
+ end
45
+ end
46
+
47
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: operawatir
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 4
5
- version: 0.5.pre1
5
+ version: 0.5.pre2
6
6
  platform: jruby
7
7
  authors:
8
8
  - Andreas Tolf Tolfsen
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2011-08-31 00:00:00 +02:00
16
+ date: 2011-09-06 00:00:00 +02:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
@@ -288,7 +288,7 @@ files:
288
288
  - lib/operadriver/commons-io-2.0.1.jar
289
289
  - lib/operadriver/commons-jxpath-1.3.jar
290
290
  - lib/operadriver/guava-r09.jar
291
- - lib/operadriver/operadriver-v0.6.1.jar
291
+ - lib/operadriver/operadriver-v0.7.1.jar
292
292
  - lib/operadriver/protobuf-java-2.3.0.jar
293
293
  - lib/operadriver/selenium-java-head.jar
294
294
  - lib/operawatir.rb
@@ -342,6 +342,7 @@ files:
342
342
  - lib/operawatir/screenshot.rb
343
343
  - lib/operawatir/selector.rb
344
344
  - lib/operawatir/spatnav.rb
345
+ - lib/operawatir/utils.rb
345
346
  - lib/operawatir/version.rb
346
347
  - lib/operawatir/window.rb
347
348
  - operawatir.gemspec
@@ -365,6 +366,7 @@ files:
365
366
  - spec/operawatir/core/preferences_spec.rb
366
367
  - spec/operawatir/core/screenshot_spec.rb
367
368
  - spec/operawatir/core/spatnav_spec.rb
369
+ - spec/operawatir/core/utils_spec.rb
368
370
  - spec/operawatir/core/window_spec.rb
369
371
  - spec/operawatir/desktop/desktopbrowser_spec.rb
370
372
  - spec/operawatir/desktop/quickaddressfield_spec.rb