operawatir 0.3.2-jruby → 0.3.7.pre1-jruby
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -0
- data/.yardopts +0 -3
- data/Gemfile +5 -6
- data/Rakefile +7 -2
- data/VERSION +1 -1
- data/bin/desktopwatir +86 -93
- data/bin/operawatir +3 -18
- data/lib/operadriver/commons-io-2.0.1.jar +0 -0
- data/lib/operadriver/selenium-common.jar +0 -0
- data/lib/operadriver/webdriver-opera.jar +0 -0
- data/lib/operawatir/browser.rb +93 -77
- data/lib/operawatir/compat/browser.rb +5 -0
- data/lib/operawatir/compat/element.rb +10 -17
- data/lib/operawatir/compat.rb +0 -1
- data/lib/operawatir/desktop-waiter.rb +1 -143
- data/lib/operawatir/desktop_browser.rb +80 -33
- data/lib/operawatir/desktop_enums.rb +3 -3
- data/lib/operawatir/desktop_helper.rb +84 -0
- data/lib/operawatir/element.rb +23 -4
- data/lib/operawatir/exceptions.rb +3 -0
- data/lib/operawatir/helper.rb +4 -1
- data/lib/operawatir/platform.rb +0 -38
- data/lib/operawatir/preferences.rb +164 -0
- data/lib/operawatir/quickwidgets/quick_addressfield.rb +14 -0
- data/lib/operawatir/quickwidgets/quick_button.rb +7 -1
- data/lib/operawatir/quickwidgets/quick_checkbox.rb +5 -4
- data/lib/operawatir/quickwidgets/quick_dialogtab.rb +1 -1
- data/lib/operawatir/quickwidgets/quick_editfield.rb +9 -4
- data/lib/operawatir/quickwidgets/quick_thumbnail.rb +1 -1
- data/lib/operawatir/quickwidgets/quick_treeitem.rb +2 -2
- data/lib/operawatir/quickwidgets/quick_treeview.rb +2 -1
- data/lib/operawatir/quickwidgets/quick_widget.rb +51 -21
- data/lib/operawatir/quickwidgets/quick_window.rb +34 -19
- data/lib/operawatir/spatnav.rb +38 -0
- data/lib/operawatir/window.rb +76 -12
- data/lib/operawatir.rb +20 -4
- data/operawatir.gemspec +48 -28
- data/spec/new_watirspec/browser_spec.rb +5 -84
- data/spec/new_watirspec/clipboard_spec.rb +41 -56
- data/spec/new_watirspec/collection_spec.rb +2 -2
- data/spec/new_watirspec/element_spec.rb +8 -8
- data/spec/new_watirspec/keys_spec.rb +8 -10
- data/spec/new_watirspec/preferences_spec.rb +144 -0
- data/spec/new_watirspec/screenshot_spec.rb +34 -0
- data/spec/new_watirspec/spatnav_spec.rb +62 -0
- data/utils/formatters/operahelper_formatter.rb +50 -0
- data/utils/formatters/spartan_formatter.rb +29 -0
- metadata +126 -61
- data/lib/operawatir/compat/deprecation.rb +0 -46
- data/utils/launchers/launcher-linux-i686 +0 -0
- data/utils/launchers/launcher-linux-x86_64 +0 -0
- data/utils/launchers/launcher-mac +0 -0
- data/utils/launchers/launcher-win32-i86pc.exe +0 -0
@@ -1,144 +1,2 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'rspec'
|
4
|
-
require 'rbconfig'
|
5
|
-
require 'ostruct'
|
6
|
-
|
7
|
-
class Object
|
8
|
-
def truthy?
|
9
|
-
|
10
|
-
# FIXME: Should we not check for truthfulness instead, and presume
|
11
|
-
# that anything else passed to be false? Below we are doing the
|
12
|
-
# opposite.
|
13
|
-
#self && !['false', 'no', 'n', '0', 0].include?(self)
|
14
|
-
|
15
|
-
self && [true, 'true', 'yes', 'y', '1', 1].include?(self)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
module OperaWatir::Waiter
|
21
|
-
extend self
|
22
|
-
|
23
|
-
def self.default_attr_accessor(attr, default)
|
24
|
-
define_method attr.to_sym do
|
25
|
-
default || instance_variable_get("@#{attr}") || ENV["OPERA_#{attr.to_s.upcase}"]
|
26
|
-
end
|
27
|
-
attr_writer attr.to_sym
|
28
|
-
end
|
29
|
-
|
30
|
-
def defaults
|
31
|
-
configure do |c|
|
32
|
-
c.path = nil
|
33
|
-
c.args = ''
|
34
|
-
c.files = "file://localhost/#{File.expand_path('interactive', File.dirname(RSpec.configuration.files_to_run[0]))}"
|
35
|
-
c.inspectr = false
|
36
|
-
c.terminal_size = [80,24]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def configure(*args, &block)
|
41
|
-
HelperConfig.block_to_hash(block).each do |setting, value|
|
42
|
-
default_attr_accessor setting, value
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
class HelperConfig < OpenStruct
|
47
|
-
def self.block_to_hash(block=nil)
|
48
|
-
config = self.new
|
49
|
-
if block
|
50
|
-
block.call(config)
|
51
|
-
config.to_hash
|
52
|
-
else
|
53
|
-
{}
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def to_hash
|
58
|
-
@table
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
defaults
|
63
|
-
|
64
|
-
def browser
|
65
|
-
@browser ||= OperaWatir::DesktopBrowser.new(path, *args.split(' ').to_java(:string))
|
66
|
-
end
|
67
|
-
|
68
|
-
def helper_file
|
69
|
-
File.expand_path(File.join(Dir.pwd, 'helper.rb'))
|
70
|
-
end
|
71
|
-
|
72
|
-
def configure_rspec
|
73
|
-
RSpec.configure do |config|
|
74
|
-
config.include SpecHelpers
|
75
|
-
|
76
|
-
config.after(:suite) do
|
77
|
-
# Only exit if the envrionment variable is set
|
78
|
-
if ENV["OPERA_PATH"].to_s.length > 0
|
79
|
-
OperaWatir::Waiter.browser.quit
|
80
|
-
else
|
81
|
-
# Just shutsdown the driver
|
82
|
-
OperaWatir::Waiter.browser.quit_driver
|
83
|
-
end
|
84
|
-
end
|
85
|
-
config.before(:all) do
|
86
|
-
#set_prefs
|
87
|
-
end
|
88
|
-
config.after(:all) do
|
89
|
-
#delete_prefs
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def inspectr_path
|
95
|
-
File.join File.expand_path('../../../utils', __FILE__),
|
96
|
-
(Config::CONFIG['host_os'] =~ /mswin|msys|mingw32/ ? 'inspectr.exe' : 'inspectr')
|
97
|
-
end
|
98
|
-
|
99
|
-
def spawn_inspectr
|
100
|
-
abort 'operawatir: inspectr is not supported on your operating system' unless Config::CONFIG['host_os'] =~ /linux/
|
101
|
-
abort 'operawatir: Unable to locate inspectr executable' unless File.exist?(inspectr_path)
|
102
|
-
|
103
|
-
Thread.new do
|
104
|
-
puts "Attaching inspectr to PID ##{browser.pid}"
|
105
|
-
exec inspectr_path, browser.pid.to_s
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def run!
|
110
|
-
require helper_file if File.exist?(helper_file)
|
111
|
-
spawn_inspectr if inspectr.truthy?
|
112
|
-
configure_rspec
|
113
|
-
RSpec::Core::Runner.autorun
|
114
|
-
end
|
115
|
-
|
116
|
-
|
117
|
-
# Helpers included for each Spec
|
118
|
-
|
119
|
-
module SpecHelpers
|
120
|
-
def browser
|
121
|
-
OperaWatir::Waiter.browser
|
122
|
-
end
|
123
|
-
|
124
|
-
# TODO Not sure of this
|
125
|
-
def files(new_path=nil)
|
126
|
-
if new_path
|
127
|
-
OperaWatir::Waiter.files = new_path
|
128
|
-
else
|
129
|
-
OperaWatir::Waiter.files
|
130
|
-
end
|
131
|
-
end
|
132
|
-
alias_method :files=, :files
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
# Overriding trapping in RSpec.
|
137
|
-
module RSpec
|
138
|
-
module Core
|
139
|
-
class Runner
|
140
|
-
def self.trap_interrupt; end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
2
|
+
require 'operawatir/desktop_helper'
|
@@ -8,12 +8,11 @@ module OperaWatir
|
|
8
8
|
"Open url in new window"]
|
9
9
|
|
10
10
|
# @private
|
11
|
-
def initialize
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
11
|
+
def initialize
|
12
|
+
OperaWatir.compatibility! unless OperaWatir.api >= 2
|
13
|
+
|
14
|
+
self.driver = OperaDesktopDriver.new(self.class.opera_driver_settings)
|
15
|
+
self.active_window = OperaWatir::Window.new(self)
|
17
16
|
end
|
18
17
|
|
19
18
|
# @private
|
@@ -21,15 +20,30 @@ module OperaWatir
|
|
21
20
|
# dialogs to autoclose in Dialog.cpp when then OnUrlChanged is fired
|
22
21
|
# after a dialog is opened
|
23
22
|
def goto(url = "")
|
24
|
-
super
|
23
|
+
super #active_window.url = url
|
25
24
|
sleep(1)
|
26
25
|
end
|
27
26
|
|
27
|
+
######################################################################
|
28
|
+
# Quits Opera
|
29
|
+
#
|
30
|
+
def quit_opera
|
31
|
+
driver.quitOpera
|
32
|
+
end
|
33
|
+
|
34
|
+
######################################################################
|
35
|
+
# Restarts Opera
|
36
|
+
#
|
37
|
+
def restart
|
38
|
+
driver.quitOpera
|
39
|
+
driver.startOpera
|
40
|
+
end
|
41
|
+
|
28
42
|
######################################################################
|
29
43
|
# Quits the driver without exiting Opera
|
30
44
|
#
|
31
|
-
def quit_driver
|
32
|
-
|
45
|
+
def quit_driver
|
46
|
+
driver.quitDriver
|
33
47
|
end
|
34
48
|
|
35
49
|
######################################################################
|
@@ -226,7 +240,7 @@ module OperaWatir
|
|
226
240
|
# @return [Array] Array of widgets retrieved from the window
|
227
241
|
#
|
228
242
|
def widgets(win_name)
|
229
|
-
|
243
|
+
driver.getQuickWidgetList(win_name).map do |java_widget|
|
230
244
|
case java_widget.getType
|
231
245
|
when QuickWidget::WIDGET_ENUM_MAP[:button]
|
232
246
|
QuickButton.new(self,java_widget)
|
@@ -254,13 +268,15 @@ module OperaWatir
|
|
254
268
|
end.to_a
|
255
269
|
end
|
256
270
|
|
271
|
+
alias_method :quick_widgets, :widgets
|
272
|
+
|
257
273
|
####################################################
|
258
274
|
# Retrieves an array of all windows
|
259
275
|
#
|
260
276
|
# @return [Array] Array of windows
|
261
277
|
#
|
262
|
-
def
|
263
|
-
|
278
|
+
def quick_windows
|
279
|
+
driver.getQuickWindowList.map do |java_window|
|
264
280
|
QuickWindow.new(self,java_window)
|
265
281
|
end.to_a
|
266
282
|
end
|
@@ -268,7 +284,7 @@ module OperaWatir
|
|
268
284
|
#@private
|
269
285
|
# Retrieve all tabs
|
270
286
|
def open_pages
|
271
|
-
|
287
|
+
quick_windows.select { |win| win.name == "Document Window" }
|
272
288
|
end
|
273
289
|
|
274
290
|
#@private
|
@@ -304,8 +320,8 @@ module OperaWatir
|
|
304
320
|
#
|
305
321
|
# @return [String] Name of the window
|
306
322
|
#
|
307
|
-
def
|
308
|
-
|
323
|
+
def window_name(win_id)
|
324
|
+
driver.getQuickWindowName(win_id)
|
309
325
|
end
|
310
326
|
|
311
327
|
######################################################################
|
@@ -352,8 +368,8 @@ module OperaWatir
|
|
352
368
|
#
|
353
369
|
# @return [String] Full path to the opera executable
|
354
370
|
#
|
355
|
-
def
|
356
|
-
|
371
|
+
def path
|
372
|
+
driver.getOperaPath()
|
357
373
|
end
|
358
374
|
|
359
375
|
######################################################################
|
@@ -361,8 +377,8 @@ module OperaWatir
|
|
361
377
|
#
|
362
378
|
# @return [String] Full path to the large preferences folder
|
363
379
|
#
|
364
|
-
def
|
365
|
-
|
380
|
+
def large_preferences_path
|
381
|
+
driver.getLargePreferencesPath()
|
366
382
|
end
|
367
383
|
|
368
384
|
######################################################################
|
@@ -370,8 +386,8 @@ module OperaWatir
|
|
370
386
|
#
|
371
387
|
# @return [String] Full path to the small preferences folder
|
372
388
|
#
|
373
|
-
def
|
374
|
-
|
389
|
+
def small_preferences_path
|
390
|
+
driver.getSmallPreferencesPath()
|
375
391
|
end
|
376
392
|
|
377
393
|
######################################################################
|
@@ -379,8 +395,8 @@ module OperaWatir
|
|
379
395
|
#
|
380
396
|
# @return [String] Full path to the cache preferences folder
|
381
397
|
#
|
382
|
-
def
|
383
|
-
|
398
|
+
def cache_preferences_path
|
399
|
+
driver.getCachePreferencesPath()
|
384
400
|
end
|
385
401
|
|
386
402
|
######################################################################
|
@@ -392,6 +408,11 @@ module OperaWatir
|
|
392
408
|
Config::CONFIG['target_os'] == "darwin"
|
393
409
|
end
|
394
410
|
|
411
|
+
######################################################################
|
412
|
+
# Returns true if the test is running on Linux
|
413
|
+
#
|
414
|
+
# @return [Boolean] true we the operating system is Linux, otherwise false
|
415
|
+
#
|
395
416
|
def linux?
|
396
417
|
Config::CONFIG['target_os'] == "linux"
|
397
418
|
end
|
@@ -469,13 +490,13 @@ module OperaWatir
|
|
469
490
|
# Close all open dialogs
|
470
491
|
#
|
471
492
|
def close_all_dialogs
|
472
|
-
win_id = driver.
|
493
|
+
win_id = driver.getActiveQuickWindowID()
|
473
494
|
until quick_window(:id, win_id).type != :dialog do
|
474
|
-
win = quick_window(:id, driver.
|
495
|
+
win = quick_window(:id, driver.getActiveQuickWindowID())
|
475
496
|
if win.type == :dialog
|
476
497
|
close_dialog(win.name)
|
477
|
-
if (driver.
|
478
|
-
win_id = driver.
|
498
|
+
if (driver.getActiveQuickWindowID() != win_id)
|
499
|
+
win_id = driver.getActiveQuickWindowID()
|
479
500
|
else
|
480
501
|
break
|
481
502
|
end
|
@@ -483,14 +504,40 @@ module OperaWatir
|
|
483
504
|
end
|
484
505
|
end
|
485
506
|
|
507
|
+
############################################################################
|
508
|
+
#
|
509
|
+
# Reset prefs
|
510
|
+
#
|
511
|
+
# Quits Opera and copies prefs from src to dest, then restarts Opera with the
|
512
|
+
# new Prefs
|
513
|
+
#
|
514
|
+
def reset_prefs(new_prefs)
|
515
|
+
driver.resetOperaPrefs(new_prefs)
|
516
|
+
end
|
517
|
+
|
518
|
+
##############################################################################
|
519
|
+
#
|
520
|
+
# Deletes profile for the connected Opera instance.
|
521
|
+
# Should only be called after quitting (and before starting) Opera.
|
522
|
+
#
|
523
|
+
#
|
524
|
+
def delete_profile
|
525
|
+
driver.deleteOperaPrefs
|
526
|
+
end
|
486
527
|
|
487
|
-
=begin
|
488
|
-
TODO:
|
489
|
-
def delete_cookies
|
490
|
-
def reset_main_window
|
491
|
-
=end
|
492
|
-
|
493
528
|
private
|
529
|
+
|
530
|
+
def self.opera_driver_settings
|
531
|
+
@opera_driver_settings ||= OperaDriverSettings.new.tap {|s|
|
532
|
+
s.setRunOperaLauncherFromOperaDriver true
|
533
|
+
s.setOperaLauncherBinary self.settings[:launcher]
|
534
|
+
s.setOperaBinaryLocation self.settings[:path]
|
535
|
+
s.setOperaBinaryArguments self.settings[:args] + ' -watirtest'
|
536
|
+
s.setNoQuit self.settings[:no_quit]
|
537
|
+
s.setNoRestart self.settings[:no_restart]
|
538
|
+
}
|
539
|
+
end
|
540
|
+
|
494
541
|
# Gets the parent widget name of which there is none here
|
495
542
|
def parent_widget
|
496
543
|
nil
|
@@ -17,24 +17,24 @@ module OperaWatir
|
|
17
17
|
|
18
18
|
# Enum for the widget types
|
19
19
|
WIDGET_ENUM_MAP = DesktopWmProtos::QuickWidgetInfo::QuickWidgetType.constants.inject({}) do |acc, const|
|
20
|
-
#puts const.inspect
|
21
20
|
acc[const.to_s.downcase.to_sym] = DesktopWmProtos::QuickWidgetInfo::QuickWidgetType.const_get(const)
|
22
21
|
acc
|
23
22
|
end
|
24
23
|
|
24
|
+
# Enum for window types
|
25
25
|
WINDOW_ENUM_MAP = DesktopWmProtos::DesktopWindowInfo::DesktopWindowType.constants.inject({}) do |acc, const|
|
26
|
-
#puts const.inspect
|
27
26
|
acc[const.to_s.downcase.to_sym] = DesktopWmProtos::DesktopWindowInfo::DesktopWindowType.const_get(const)
|
28
27
|
acc
|
29
28
|
end
|
30
29
|
|
30
|
+
# Enum for search types
|
31
31
|
WIDGET_SEARCHTYPE_ENUM_MAP = DesktopWmProtos::QuickWidgetSearch::QuickWidgetSearchType.constants.inject({}) do |acc, const|
|
32
32
|
acc[const.to_s.downcase.to_sym] = DesktopWmProtos::QuickWidgetSearch::QuickWidgetSearchType.const_get(const)
|
33
33
|
acc
|
34
34
|
end
|
35
35
|
|
36
|
+
# Enum for drop position types for dropping a widget onto another
|
36
37
|
DROPPOSITION_ENUM_MAP = QuickWidget::DropPosition.constants.inject({}) do |acc, const|
|
37
|
-
#puts const.inspect
|
38
38
|
acc[const.to_s.downcase.to_sym] = QuickWidget::DropPosition.const_get(const)
|
39
39
|
acc
|
40
40
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
# TODO
|
4
|
+
# You need to set the OPERA_LAUNCHER and OPERA_PATH environment variables
|
5
|
+
# for this Helper to work.
|
6
|
+
|
7
|
+
require 'operawatir'
|
8
|
+
require 'rspec'
|
9
|
+
require 'rbconfig'
|
10
|
+
|
11
|
+
module OperaWatir::DesktopHelper
|
12
|
+
extend self
|
13
|
+
|
14
|
+
def settings
|
15
|
+
OperaWatir::DesktopBrowser.settings
|
16
|
+
end
|
17
|
+
|
18
|
+
def browser
|
19
|
+
@browser ||= OperaWatir::DesktopBrowser.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_rspec!
|
23
|
+
RSpec.configure do |config|
|
24
|
+
|
25
|
+
# Set every RSpec option
|
26
|
+
settings.each do |key, value|
|
27
|
+
config.send("#{key}=", value) if config.respond_to?("#{key}=")
|
28
|
+
if key.to_s.eql?("files_to_run")
|
29
|
+
@@files = value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
config.include SpecHelpers
|
34
|
+
|
35
|
+
config.before(:all) {
|
36
|
+
if OperaWatir::DesktopHelper::settings[:no_restart] == false
|
37
|
+
unless @@files.empty?
|
38
|
+
path = File.join(Dir.getwd, @@files.shift)
|
39
|
+
filepath = path.chomp(".rb")
|
40
|
+
browser.reset_prefs(filepath)
|
41
|
+
end
|
42
|
+
else
|
43
|
+
# Must create browser object here so that none of the
|
44
|
+
# test is run before Opera has been launched
|
45
|
+
browser
|
46
|
+
end
|
47
|
+
}
|
48
|
+
|
49
|
+
config.after(:suite) {
|
50
|
+
# Use the @browser directly because we don't want
|
51
|
+
# to launch Opera here if it's not running
|
52
|
+
if @browser
|
53
|
+
|
54
|
+
if settings[:no_quit] == false
|
55
|
+
# Shutdown Opera
|
56
|
+
@browser.quit_opera
|
57
|
+
@browser.delete_profile
|
58
|
+
end
|
59
|
+
|
60
|
+
# Shutdown the driver
|
61
|
+
@browser.quit_driver
|
62
|
+
end
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def run!(settings={})
|
68
|
+
OperaWatir::DesktopBrowser.settings = settings
|
69
|
+
configure_rspec!
|
70
|
+
RSpec::Core::Runner.autorun
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
module SpecHelpers
|
76
|
+
def browser
|
77
|
+
OperaWatir::DesktopHelper.browser
|
78
|
+
end
|
79
|
+
|
80
|
+
def window
|
81
|
+
browser.active_window
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
data/lib/operawatir/element.rb
CHANGED
@@ -68,10 +68,22 @@ class OperaWatir::Element
|
|
68
68
|
|
69
69
|
alias_method :to_s, :text
|
70
70
|
|
71
|
-
def_delegator :node, :getValue, :value
|
72
71
|
def_delegator :node, :getElementName, :tag_name
|
73
72
|
def_delegator :node, :clear, :clear
|
74
73
|
|
74
|
+
# On elements of type `input`, `textarea` or `select` it will fetch
|
75
|
+
# the texteditable `value` attribute, on every other element type it
|
76
|
+
# returns the DOM attribute `value`.
|
77
|
+
#
|
78
|
+
# @return [String] Value of the element.
|
79
|
+
def value
|
80
|
+
if tag_name =~ /input|textarea|select/i
|
81
|
+
node.getValue
|
82
|
+
else
|
83
|
+
attr :value
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
75
87
|
def disabled?
|
76
88
|
!enabled?
|
77
89
|
end
|
@@ -91,7 +103,7 @@ class OperaWatir::Element
|
|
91
103
|
|
92
104
|
# Events
|
93
105
|
|
94
|
-
def click
|
106
|
+
def click(x=0, y=0)
|
95
107
|
node.click(x.to_i, y.to_i)
|
96
108
|
end
|
97
109
|
|
@@ -127,17 +139,18 @@ class OperaWatir::Element
|
|
127
139
|
|
128
140
|
def text=(string)
|
129
141
|
# Focus before typing
|
130
|
-
|
142
|
+
clear unless value.empty?
|
131
143
|
node.sendKeys(string.split('').to_java(:string))
|
132
144
|
end
|
133
145
|
|
134
146
|
alias_method :set, :text=
|
147
|
+
alias_method :value=, :text=
|
135
148
|
|
136
149
|
def send_keys(*list)
|
137
150
|
raise Exceptions::NotImplementedException
|
138
151
|
end
|
139
152
|
|
140
|
-
def
|
153
|
+
def fire_event(event, x = 0, y = 0)
|
141
154
|
loc = location
|
142
155
|
x += loc[:x]
|
143
156
|
y += loc[:y]
|
@@ -225,4 +238,10 @@ private
|
|
225
238
|
end
|
226
239
|
end
|
227
240
|
|
241
|
+
def find_elements_by_name(value)
|
242
|
+
node.findElementsByName(value).to_a.map do |n|
|
243
|
+
OperaWatir::Element.new(n)
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
228
247
|
end
|
@@ -37,5 +37,8 @@ module OperaWatir::Exceptions
|
|
37
37
|
|
38
38
|
# Raised when pressing a modifier key that doesn't exist.
|
39
39
|
class InvalidKeyException < OperaWatirException; end
|
40
|
+
|
41
|
+
# Raised when an exception occurs in Preferences.
|
42
|
+
class PreferencesException < OperaWatirException; end
|
40
43
|
|
41
44
|
end
|
data/lib/operawatir/helper.rb
CHANGED
data/lib/operawatir/platform.rb
CHANGED
@@ -1,36 +1,6 @@
|
|
1
1
|
require 'rbconfig'
|
2
2
|
|
3
3
|
class OperaWatir::Platform
|
4
|
-
def self.launcher
|
5
|
-
return ENV['OPERA_LAUNCHER'] if ENV['OPERA_LAUNCHER']
|
6
|
-
|
7
|
-
path = case os
|
8
|
-
when :windows
|
9
|
-
raise Exceptions::NotImplementedException, 'only 32-bit windows supported' if bitsize == 64
|
10
|
-
'utils/launchers/launcher-win32-i86pc.exe'
|
11
|
-
when :linux
|
12
|
-
postfix = bitsize == 64 ? 'x86_64' : 'i686'
|
13
|
-
"utils/launchers/launcher-linux-#{postfix}"
|
14
|
-
when :macosx
|
15
|
-
'utils/launchers/launcher-mac'
|
16
|
-
end
|
17
|
-
|
18
|
-
if path
|
19
|
-
File.join(root, path)
|
20
|
-
else
|
21
|
-
raise Exceptions::NotImplementedException, "no known launcher for #{os.inspect}, set OPERA_LAUNCHER to override"
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.opera
|
27
|
-
ENV['OPERA_PATH']
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.args
|
31
|
-
ENV['OPERA_ARGS'] || ''
|
32
|
-
end
|
33
|
-
|
34
4
|
def self.os
|
35
5
|
@os ||= (
|
36
6
|
host_os = RbConfig::CONFIG['host_os']
|
@@ -48,12 +18,4 @@ class OperaWatir::Platform
|
|
48
18
|
end
|
49
19
|
)
|
50
20
|
end
|
51
|
-
|
52
|
-
def self.bitsize
|
53
|
-
ENV_JAVA['sun.arch.data.model'].to_i
|
54
|
-
end
|
55
|
-
|
56
|
-
def self.root
|
57
|
-
@root ||= File.expand_path('../../..', __FILE__)
|
58
|
-
end
|
59
21
|
end
|