operawatir 0.4.3.pre1-jruby → 0.5-jruby

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. data/.gitmodules +1 -1
  2. data/CHANGES +230 -0
  3. data/Gemfile +4 -0
  4. data/Rakefile +3 -2
  5. data/VERSION +1 -1
  6. data/bin/desktopwatir +1 -1
  7. data/bin/operawatir +16 -4
  8. data/lib/operadriver/guava-r09.jar +0 -0
  9. data/lib/operadriver/operadriver-v0.7.2.jar +0 -0
  10. data/lib/operadriver/selenium-nodeps-20100909.jar +0 -0
  11. data/lib/operawatir.rb +10 -3
  12. data/lib/operawatir/actions.rb +111 -0
  13. data/lib/operawatir/browser.rb +24 -20
  14. data/lib/operawatir/clickable_item.rb +68 -0
  15. data/lib/operawatir/compat.rb +4 -4
  16. data/lib/operawatir/compat/collection.rb +1 -1
  17. data/lib/operawatir/compat/element.rb +1 -1
  18. data/lib/operawatir/compat/window.rb +4 -3
  19. data/lib/operawatir/desktop_browser.rb +299 -95
  20. data/lib/operawatir/desktop_common.rb +88 -23
  21. data/lib/operawatir/desktop_container.rb +103 -34
  22. data/lib/operawatir/desktop_enums.rb +4 -4
  23. data/lib/operawatir/desktop_exceptions.rb +2 -2
  24. data/lib/operawatir/desktop_helper.rb +31 -8
  25. data/lib/operawatir/element.rb +6 -2
  26. data/lib/operawatir/exceptions.rb +4 -4
  27. data/lib/operawatir/helper.rb +6 -6
  28. data/lib/operawatir/keys.rb +4 -4
  29. data/lib/operawatir/preferences.rb +126 -155
  30. data/lib/operawatir/quickwidgets.rb +3 -3
  31. data/lib/operawatir/quickwidgets/quick_addressfield.rb +12 -5
  32. data/lib/operawatir/quickwidgets/quick_button.rb +39 -53
  33. data/lib/operawatir/quickwidgets/quick_checkbox.rb +6 -6
  34. data/lib/operawatir/quickwidgets/quick_dialogtab.rb +5 -5
  35. data/lib/operawatir/quickwidgets/quick_dropdown.rb +28 -4
  36. data/lib/operawatir/quickwidgets/quick_dropdownitem.rb +46 -0
  37. data/lib/operawatir/quickwidgets/quick_editfield.rb +16 -13
  38. data/lib/operawatir/quickwidgets/quick_label.rb +1 -1
  39. data/lib/operawatir/quickwidgets/quick_menu.rb +155 -0
  40. data/lib/operawatir/quickwidgets/quick_menuitem.rb +387 -0
  41. data/lib/operawatir/quickwidgets/quick_searchfield.rb +7 -4
  42. data/lib/operawatir/quickwidgets/quick_tab.rb +23 -12
  43. data/lib/operawatir/quickwidgets/quick_thumbnail.rb +4 -4
  44. data/lib/operawatir/quickwidgets/quick_toolbar.rb +1 -1
  45. data/lib/operawatir/quickwidgets/quick_treeitem.rb +45 -29
  46. data/lib/operawatir/quickwidgets/quick_treeview.rb +2 -2
  47. data/lib/operawatir/quickwidgets/quick_widget.rb +267 -77
  48. data/lib/operawatir/quickwidgets/quick_window.rb +64 -38
  49. data/lib/operawatir/screenshot.rb +1 -1
  50. data/lib/operawatir/utils.rb +31 -0
  51. data/lib/operawatir/window.rb +1 -1
  52. data/operawatir.gemspec +38 -132
  53. data/spec/operawatir/core/actions_spec.rb +202 -0
  54. data/spec/operawatir/core/browser_spec.rb +8 -8
  55. data/spec/operawatir/core/element_spec.rb +11 -2
  56. data/spec/operawatir/core/keys_spec.rb +50 -2
  57. data/spec/operawatir/core/preferences_spec.rb +44 -128
  58. data/spec/operawatir/core/spatnav_spec.rb +16 -16
  59. data/spec/operawatir/core/utils_spec.rb +47 -0
  60. data/spec/operawatir/core/window_spec.rb +1 -1
  61. data/spec/operawatir/desktop/desktopbrowser_spec.rb +191 -22
  62. data/spec/operawatir/desktop/quickbutton_spec.rb +197 -164
  63. data/spec/operawatir/desktop/quickcheckbox_spec.rb +12 -12
  64. data/spec/operawatir/desktop/quickdialogtab_spec.rb +11 -11
  65. data/spec/operawatir/desktop/quickdropdown_spec.rb +25 -25
  66. data/spec/operawatir/desktop/quickeditfield_spec.rb +31 -31
  67. data/spec/operawatir/desktop/quickmenu_spec.rb +57 -0
  68. data/spec/operawatir/desktop/quickmenuitem_spec.rb +168 -0
  69. data/spec/operawatir/desktop/quicktab_spec.rb +26 -15
  70. data/spec/operawatir/desktop/quickthumbnail_spec.rb +18 -4
  71. data/spec/operawatir/desktop/quicktreeitem_spec.rb +72 -72
  72. data/spec/operawatir/desktop/quicktreeview_spec.rb +13 -13
  73. data/spec/operawatir/desktop/quickwidget_spec.rb +51 -13
  74. data/spec/operawatir/desktop/quickwindow_spec.rb +4 -0
  75. data/spec/operawatir/desktop/shared/shared.rb +25 -9
  76. data/spec/operawatir/fixtures/draggableLists.html +67 -0
  77. data/spec/operawatir/fixtures/formSelectionPage.html +46 -0
  78. data/spec/operawatir/fixtures/js/jquery-1.4.4.min.js +167 -0
  79. data/spec/operawatir/fixtures/js/jquery-ui-1.8.10.custom.min.js +782 -0
  80. data/spec/operawatir/fixtures/keys.html +40 -0
  81. data/spec/operawatir/fixtures/label_submit.html +5 -0
  82. data/spec/operawatir/fixtures/mouse.html +59 -0
  83. data/spec/operawatir/fixtures/simple.html +10 -0
  84. data/spec/operawatir/matchers.rb +20 -19
  85. data/spec/operawatir/watirspec_desktophelper.rb +51 -3
  86. data/spec/operawatir/watirspec_helper.rb +0 -2
  87. metadata +91 -220
  88. data/lib/operadriver/client-combined-nodeps.jar +0 -0
  89. data/lib/operadriver/webdriver-opera.jar +0 -0
  90. data/spec/watir3/browser_spec.rb +0 -190
  91. data/spec/watir3/clipboard_spec.rb +0 -64
  92. data/spec/watir3/collection_spec.rb +0 -387
  93. data/spec/watir3/element_spec.rb +0 -474
  94. data/spec/watir3/guards.rb +0 -39
  95. data/spec/watir3/keys_spec.rb +0 -204
  96. data/spec/watir3/server.rb +0 -91
  97. data/spec/watir3/watirspec_helper.rb +0 -62
  98. data/spec/watir3/window_spec.rb +0 -295
data/.gitmodules CHANGED
@@ -1,3 +1,3 @@
1
1
  [submodule "spec/watir3"]
2
2
  path = spec/watir3
3
- url = git@github.com:operasoftware/watir3-spec.git
3
+ url = git://github.com/operasoftware/watir3-spec.git
data/CHANGES CHANGED
@@ -1,3 +1,233 @@
1
+ v0.5 2011-09-12
2
+
3
+ [OTHER]
4
+
5
+ * Pushed final version 0.5. (andreastt)
6
+
7
+ v0.5.pre3 2011-09-09
8
+
9
+ [BUG FIXES]
10
+
11
+ * Calling #to_s on opts, fixes `desktopwatir --help`. (andreastt)
12
+
13
+ * Removing redundant -autotestmode argument sent by
14
+ OperaWatir::DesktopBrowser. (andreastt)
15
+
16
+ [OTHER]
17
+
18
+ * Upgraded to OperaDriver v0.7.2. This will fix issues with getting location
19
+ of elements in SVG documents, among other fixes. (andreastt)
20
+
21
+ * Upgraded to latest head of selenium-client-nodeps. (andreatt)
22
+
23
+ v0.5.pre2 2011-09-06
24
+
25
+ [NEW FEATURES]
26
+
27
+ * Added browser utility service as Browser#utils, implementing the following
28
+ new method calls:
29
+
30
+ Utils#core_version, returning the core version
31
+ Utils#os, returning the browser's OS
32
+ Utils#product, returning product type (desktop/core/mobile)
33
+ Utils#binary_path, returning full path to Opera binary
34
+ Utils#user_agent, returning User-Agent string
35
+ Utils#pid, returning the browser's PID if available
36
+
37
+ (andreastt)
38
+
39
+ * Implementing ability to enable verbose logging in operawatir. Added
40
+ following new command-line switches to the operawatir binary:
41
+
42
+ --debug=LEVEL (or -d for short), for specifying logging level
43
+ --log=FILE, for specifying sending the logging to a file
44
+
45
+ Available logging levels are: SEVERE (highest), WARNING, INFO, CONFIG,
46
+ FINE, FINER, FINEST (lowest), ALL. Default is INFO. See `operawatir
47
+ --help` for more information.
48
+
49
+ (andreastt)
50
+
51
+ [ENHANCEMENTS]
52
+
53
+ * Now using DesiredCapabilities from OperaDriver v0.7 instead of
54
+ OperaDriverSettings. (andreastt)
55
+
56
+ [BUG FIXES]
57
+
58
+ * initMouseEvent in Element#fire_event is now clicking clientX and clientY
59
+ instead of relying on internal driver locators. (andreastt)
60
+
61
+ * Compat::Window#show_frames now returns a string instead of writing to
62
+ STDOUT. (andreastt)
63
+
64
+ * Browser#quit was calling OperaDriver.shutdown() which is now deprecated.
65
+ Fixed by now calling OperaDriver.quit() instead. (andreastt)
66
+
67
+ * `operawatir --help` was broken, fixed by converting OptionParse object to a
68
+ String. (andreastt)
69
+
70
+ [OTHER]
71
+
72
+ * Upgraded to OperaDriver v0.7.1. (andreastt)
73
+
74
+ * Added tests for new Utils interface. (andreastt)
75
+
76
+ v0.5.pre1 2011-08-31
77
+
78
+ [API CHANGES]
79
+
80
+ * Implemented advanced user interaction API in Watir by adding a new Actions
81
+ class. This is accessible through Browser#actions. (stuartk)
82
+
83
+ * Removed Browser#close_all since this is no longer supported in WebDriver.
84
+ The alternative approach is to get all windows, then cycle through them to
85
+ close them. (andreastt)
86
+
87
+ * Added following method calls related to performing context menu clicks:
88
+
89
+ DesktopBrowser#action_with_condition
90
+ DesktopBrowser#active_quick_window_id
91
+ DesktopBrowser#close_active_menu
92
+ DesktopBrowser#close_all_menus
93
+ DesktopBrowser#close_menu
94
+ DesktopBrowser#close_menu_with_key_press
95
+ DesktopBrowser#key_press_with_condition
96
+ DesktopBrowser#open_menu_with_key_press
97
+ DesktopBrowser#open_menu_with_rightclick
98
+ DesktopBrowser#quick_menuitems
99
+ DesktopBrowser#quick_menus
100
+ DesktopBrowser#quick_tabs
101
+ DesktopBrowser::ConditionTimeout
102
+ DesktopContainer#quick_dropdownitem
103
+ DesktopContainer#quick_menu
104
+ DesktopContainer#quick_menuitem
105
+ QuickMenu (...)
106
+ QuickMenuItem (...)
107
+
108
+ (karie)
109
+
110
+ * Added following utility methods:
111
+
112
+ DesktopBrowser#desktop?
113
+ DesktopHelper#linux?
114
+ DesktopHelper#mac?
115
+ DesktopCommon#linux_internal?
116
+ DesktopCommon#mac_internal?
117
+ DesktopCommon#wait_for_menu_closed
118
+ DesktopCommon#wait_for_menu_shown
119
+ DesktopCommon#wait_for_widget_visible
120
+ DesktopCommon#widgets
121
+
122
+ (karie)
123
+
124
+ * Added QuickButton#wait_for_visible to wait for a button to become visible.
125
+ (karie)
126
+
127
+ * Added following APIs related to QuickDropdown's:
128
+
129
+ QuickDropdown#dropped_down?
130
+ QuickDropdown#open_with_click
131
+ QuickDropdownItem (...)
132
+
133
+ * Added QuickTab#close_window_with_doubleclick. (karie)
134
+
135
+ * Added following APIs related to QuickTreeItem:
136
+
137
+ QuickTreeItem#open_dialog_with_click
138
+ QuickTreeItem#open_window_with_click
139
+
140
+ (karie)
141
+
142
+ * Added following APIs related to widgets:
143
+
144
+ QuickWidget#click_with_condition
145
+ QuickWidget#click_with_condition_internal
146
+ QuickWidget#double_click_with_condition
147
+ QuickWidget#focus_with_hover
148
+ QuickWidget#middle_click_with_condition
149
+ QuickWidget#open_menu_with_rightclick
150
+ QuickWidget#open_window_with_click_internal
151
+ QuickWidget#quick_tabs
152
+ QuickWidget#quick_widgets
153
+ QuickWidget#right_click_with_condition
154
+ QuickWidget#verify_realtext
155
+ QuickWidget::ConditionTimeout
156
+
157
+ (karie)
158
+
159
+ * Added following APIs related to QuickWindow:
160
+
161
+ QuickWindow#active?
162
+ QuickWindow#quick_widgets
163
+
164
+ (karie)
165
+
166
+ * Removed DesktopBrowser#open_dialog_with_click. (karie)
167
+
168
+ * Removed DesktopBrowser#key_down. (karie)
169
+
170
+ * Removed DesktopBrowser#key_up. (karie)
171
+
172
+ * Removed Preferences::Entry (...) and Preferences::SECTIONS; replaced by
173
+ Preferences::Section and Preferences::Section::Key. (andreastt)
174
+
175
+ * Removed QuickButton#load_page_with_click. (karie)
176
+
177
+ * Removed QuickButton#open_dialog_with_click. (karie)
178
+
179
+ * Removed QuickButton#open_window_with_click. (karie)
180
+
181
+ * Exposed WebElement.middleClick() from WebDriver as Element#middle_click.
182
+ (andreastt)
183
+
184
+ * Renamed #key_down, and #key_up in desktop_browser to avoid clash with clash
185
+ with browser#key_down and up. Fixes failures of operawatir/core spec tests.
186
+ New APIs:
187
+
188
+ DesktopCommon#key_down_direct
189
+ DesktopCommon#key_up_direct
190
+
191
+ (karie)
192
+
193
+ [NEW FEATURES]
194
+
195
+ * Access to widgets in Desktop. (karie/adamm)
196
+
197
+ * Context menus in Desktop. (karie/adamm)
198
+
199
+ [BUG FIXES]
200
+
201
+ * Fix for bug DSK-341584 concerning a regression in quick_treeitem where it
202
+ complained about wrong number of arguments. (karie)
203
+
204
+ * profile-autotest folder was not deleted in running any spec test with no
205
+ arguments, fixes DSK-333674. (karie)
206
+
207
+ * Add separator to #QuickMenuItem#to_s method. (adamm)
208
+
209
+ * Fixes to make Mac work with menus and multiple windows. (adamm)
210
+
211
+ * treeitem open window with click, fixes bug DSK-341539. (karie)
212
+
213
+ [OTHER]
214
+
215
+ * Added more desktop-related tests. (karie)
216
+
217
+ * Added preliminary tests for keys implementation in key_spec.rb.
218
+ (andreastt)
219
+
220
+ * Fixes to make core tests run. (andreastt)
221
+
222
+ * Fixes to make desktop tests run. (mariap)
223
+
224
+ v0.4.3.pre2 2011-05-25
225
+
226
+ [BUG FIXES]
227
+
228
+ * Element#click and Compat::Element#click now defaults to
229
+ coordinates [1,1], fixing WTR-354. (andreastt)
230
+
1
231
  v0.4.3.pre1 2011-05-24
2
232
 
3
233
  [OTHER]
data/Gemfile CHANGED
@@ -9,4 +9,8 @@ group :development do
9
9
  gem "sinatra", ">= 1.1"
10
10
  gem "rr"
11
11
  gem "clipboard"
12
+ gem "rspec", "~> 2.6.0"
13
+ gem "ci_reporter"
14
+ gem "deprecated"
15
+ gem "builder"
12
16
  end
data/Rakefile CHANGED
@@ -3,6 +3,7 @@ require 'rake/clean'
3
3
  require 'jeweler'
4
4
  require 'rspec/core/rake_task'
5
5
  require 'yard'
6
+ require 'ci/reporter/rake/rspec'
6
7
 
7
8
  require './lib/operawatir/version'
8
9
 
@@ -47,8 +48,8 @@ end
47
48
 
48
49
  CLEAN.add 'pkg'
49
50
 
50
- RSpec::Core::RakeTask.new do |t|
51
- end
51
+ RSpec::Core::RakeTask.new(:spec)
52
+ task :test => [:"ci:setup:rspec", :spec]
52
53
 
53
54
  YARD::Rake::YardocTask.new do |t|
54
55
  t.options = ['--no-private']
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3.pre1
1
+ 0.5
data/bin/desktopwatir CHANGED
@@ -97,7 +97,7 @@ EOS
97
97
  opts.separator 'Common options:'
98
98
 
99
99
  opts.on_tail('-h', '--help', 'Show this message') do
100
- abort opts
100
+ abort opts.to_s
101
101
  end
102
102
 
103
103
  opts.on_tail('-v', '--version', 'Show version') do
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?
Binary file
data/lib/operawatir.rb CHANGED
@@ -4,12 +4,14 @@ require 'deprecated'
4
4
  require 'java'
5
5
  include Java
6
6
 
7
- %w(commons-jxpath-1.3.jar protobuf-java-2.3.0.jar client-combined-nodeps.jar
8
- webdriver-opera.jar commons-io-2.0.1.jar).each { |jar| require "operadriver/#{jar}" }
7
+ %w(commons-jxpath-1.3.jar protobuf-java-2.3.0.jar selenium-nodeps-20100909.jar
8
+ operadriver-v0.7.2.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
- include_class org.openqa.selenium.RenderedWebElement
11
+ include_class org.openqa.selenium.remote.RemoteWebElement
12
12
  include_class org.openqa.selenium.NoSuchElementException
13
+ include_class org.openqa.selenium.interactions.Actions
14
+ include_class org.openqa.selenium.remote.DesiredCapabilities
13
15
  include_class com.opera.core.systems.OperaDriver
14
16
  include_class com.opera.core.systems.OperaWebElement
15
17
  include_class com.opera.core.systems.settings.OperaDriverSettings
@@ -19,6 +21,8 @@ include_class com.opera.core.systems.OperaDesktopDriver
19
21
  include_class com.opera.core.systems.scope.protos.DesktopWmProtos
20
22
  include_class com.opera.core.systems.scope.protos.SystemInputProtos
21
23
  include_class com.opera.core.systems.QuickWidget
24
+ include_class com.opera.core.systems.QuickMenu
25
+ include_class com.opera.core.systems.QuickMenuItem
22
26
 
23
27
  $KCODE = 'u' # UTF-8 support
24
28
 
@@ -56,6 +60,8 @@ require 'operawatir/keys'
56
60
  require 'operawatir/screenshot'
57
61
  require 'operawatir/preferences'
58
62
  require 'operawatir/spatnav'
63
+ require 'operawatir/actions'
64
+ require 'operawatir/utils'
59
65
 
60
66
  require 'operawatir/exceptions'
61
67
  require 'operawatir/selector'
@@ -69,6 +75,7 @@ require 'operawatir/compat'
69
75
  # Desktop stuff
70
76
  require 'operawatir/desktop_enums'
71
77
  require 'operawatir/desktop_common'
78
+ require 'operawatir/clickable_item'
72
79
  require 'operawatir/desktop_container'
73
80
  require 'operawatir/desktop_browser'
74
81
  require 'operawatir/quickwidgets'
@@ -0,0 +1,111 @@
1
+ include_class org.openqa.selenium.interactions.Actions
2
+ #include_class java.util.lang.CharSequence
3
+
4
+ class OperaWatir::Actions
5
+
6
+ attr_accessor :browser
7
+ attr_accessor :driver
8
+ attr_accessor :actions
9
+
10
+ def initialize(browser)
11
+ self.browser, self.driver = browser, browser.driver
12
+ self.actions = Java::OrgOpenqaSeleniumInteractions::Actions.new(@driver)
13
+
14
+ @sym_key_map = {}
15
+ end
16
+
17
+ # If only one argument is given then it is the key, and so we call the
18
+ # method that accepts only the key
19
+ def key_down(element, key = nil)
20
+ if not key
21
+ @actions.keyDown(sym_to_key(element))
22
+ else
23
+ @actions.keyDown(element.node, sym_to_key(key))
24
+ end
25
+ self
26
+ end
27
+
28
+ # If only one argument is given then it is the key, and so we call the
29
+ # method that accepts only the key
30
+ def key_up(element, key = nil)
31
+ if not key
32
+ @actions.keyUp(sym_to_key(element))
33
+ else
34
+ @actions.keyUp(element.node, sym_to_key(key))
35
+ end
36
+ self
37
+ end
38
+
39
+ # If only one argument is given then it is the key, and so we call the
40
+ # method that accepts only the key
41
+ def send_keys(element, keys_to_send = nil)
42
+ if not keys_to_send
43
+ @actions.sendKeys(element)
44
+ else
45
+ @actions.sendKeys(element.node, keys_to_send)
46
+ end
47
+ self
48
+ end
49
+
50
+ def click_and_hold(element)
51
+ @actions.clickAndHold(element.node)
52
+ self
53
+ end
54
+
55
+ def release(element)
56
+ @actions.release(element.node)
57
+ self
58
+ end
59
+
60
+ def click(element = nil)
61
+ element ? @actions.click(element.node) : @actions.click()
62
+ self
63
+ end
64
+
65
+ def double_click(element = nil)
66
+ element ? @actions.double_click(element.node) : @actions.double_click()
67
+ self
68
+ end
69
+
70
+ def move_to_element(element, x_offset = 0, y_offset = 0)
71
+ @actions.moveToElement(element.node, x_offset, y_offset)
72
+ self
73
+ end
74
+
75
+ def move_by_offset(x_offset, y_offset)
76
+ @actions.moveByOffset(x_offset, y_offset)
77
+ self
78
+ end
79
+
80
+ def context_click(element)
81
+ @actions.contextClick(element.node)
82
+ self
83
+ end
84
+
85
+ def drag_and_drop(source, target)
86
+ @actions.dragAndDrop(source.node, target.node)
87
+ self
88
+ end
89
+
90
+ def drag_and_drop_by(source, x_offset, y_offset)
91
+ @actions.dragAndDrop(source, x_offset, y_offset)
92
+ self
93
+ end
94
+
95
+ def perform()
96
+ @actions.perform()
97
+ end
98
+
99
+ private
100
+
101
+ def sym_to_key(sym)
102
+ if @sym_key_map.empty?
103
+ Java::OrgOpenqaSelenium::Keys.values().each do |k|
104
+ @sym_key_map[k.name().downcase.to_sym] = k
105
+ end
106
+ end
107
+
108
+ @sym_key_map[sym]
109
+ end
110
+
111
+ end