operawatir 0.4-jruby → 0.4.1-jruby
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -3
- data/AUTHORS +1 -0
- data/CHANGES +454 -0
- data/README.md +67 -50
- data/Rakefile +6 -10
- data/VERSION +1 -1
- data/bin/desktopwatir +52 -29
- data/bin/operawatir +50 -18
- data/lib/operadriver/client-combined-nodeps.jar +0 -0
- data/lib/operadriver/webdriver-opera.jar +0 -0
- data/lib/operawatir.rb +8 -1
- data/lib/operawatir/browser.rb +35 -15
- data/lib/operawatir/collection.rb +2 -2
- data/lib/operawatir/compat.rb +3 -2
- data/lib/operawatir/compat/browser.rb +0 -5
- data/lib/operawatir/compat/collection.rb +15 -0
- data/lib/operawatir/compat/element.rb +72 -21
- data/lib/operawatir/compat/element_finders.rb +6 -0
- data/lib/operawatir/compat/selector.rb +7 -0
- data/lib/operawatir/compat/window.rb +49 -0
- data/lib/operawatir/desktop_browser.rb +88 -14
- data/lib/operawatir/desktop_common.rb +0 -2
- data/lib/operawatir/desktop_container.rb +82 -29
- data/lib/operawatir/desktop_helper.rb +2 -0
- data/lib/operawatir/element.rb +49 -25
- data/lib/operawatir/helper.rb +5 -3
- data/lib/operawatir/keys.rb +19 -6
- data/lib/operawatir/preferences.rb +315 -78
- data/lib/operawatir/quickwidgets.rb +2 -1
- data/lib/operawatir/quickwidgets/quick_addressfield.rb +12 -0
- data/lib/operawatir/quickwidgets/quick_button.rb +8 -2
- data/lib/operawatir/quickwidgets/quick_checkbox.rb +5 -5
- data/lib/operawatir/quickwidgets/quick_editfield.rb +8 -5
- data/lib/operawatir/quickwidgets/quick_find.rb +11 -0
- data/lib/operawatir/quickwidgets/quick_griditem.rb +11 -0
- data/lib/operawatir/quickwidgets/quick_gridlayout.rb +11 -0
- data/lib/operawatir/quickwidgets/quick_searchfield.rb +7 -1
- data/lib/operawatir/quickwidgets/quick_tab.rb +0 -1
- data/lib/operawatir/quickwidgets/quick_treeitem.rb +22 -1
- data/lib/operawatir/quickwidgets/quick_widget.rb +62 -23
- data/lib/operawatir/quickwidgets/quick_window.rb +32 -2
- data/lib/operawatir/screenshot.rb +46 -0
- data/lib/operawatir/version.rb +6 -4
- data/lib/operawatir/window.rb +53 -67
- data/operawatir.gemspec +310 -245
- data/spec/operawatir/README.md +4 -0
- data/spec/operawatir/core/browser_spec.rb +82 -0
- data/spec/operawatir/core/element_spec.rb +88 -0
- data/spec/operawatir/core/preferences_spec.rb +438 -0
- data/spec/operawatir/core/screenshot_spec.rb +76 -0
- data/spec/{new_watirspec → operawatir/core}/spatnav_spec.rb +3 -3
- data/spec/operawatir/core/window_spec.rb +76 -0
- data/spec/operawatir/desktop/desktopbrowser_spec.rb +316 -0
- data/spec/operawatir/desktop/quickaddressfield_spec.rb +59 -0
- data/spec/operawatir/desktop/quickbutton_spec.rb +248 -0
- data/spec/operawatir/desktop/quickcheckbox_spec.rb +36 -0
- data/spec/operawatir/desktop/quickdialogtab_spec.rb +30 -0
- data/spec/operawatir/desktop/quickdropdown_spec.rb +39 -0
- data/spec/operawatir/desktop/quickeditfield_spec.rb +51 -0
- data/spec/operawatir/desktop/quickfind_spec.rb +30 -0
- data/spec/operawatir/desktop/quickgriditem_spec.rb +16 -0
- data/spec/operawatir/desktop/quickgridlayout_spec.rb +15 -0
- data/spec/operawatir/desktop/quicklabel_spec.rb +28 -0
- data/spec/operawatir/desktop/quickradiobutton_spec.rb +24 -0
- data/spec/operawatir/desktop/quicksearchfield_spec.rb +26 -0
- data/spec/operawatir/desktop/quicktab_spec.rb +86 -0
- data/spec/operawatir/desktop/quickthumbnail_spec.rb +37 -0
- data/spec/operawatir/desktop/quicktreeitem_spec.rb +135 -0
- data/spec/operawatir/desktop/quicktreeview_spec.rb +30 -0
- data/spec/operawatir/desktop/quickwidget_spec.rb +101 -0
- data/spec/operawatir/desktop/quickwindow_spec.rb +108 -0
- data/spec/operawatir/desktop/shared/shared.rb +138 -0
- data/spec/operawatir/fixtures/boxes.html +22 -0
- data/spec/operawatir/fixtures/browsers.svg +367 -0
- data/spec/operawatir/fixtures/frames.html +13 -0
- data/spec/operawatir/fixtures/grid.html +29 -0
- data/spec/operawatir/fixtures/input_fields_value.html +6 -0
- data/spec/operawatir/fixtures/onclick.html +20 -0
- data/spec/operawatir/fixtures/paragraphs.html +15 -0
- data/spec/operawatir/fixtures/two_input_fields.html +6 -0
- data/spec/{new_watirspec → operawatir}/guards.rb +0 -0
- data/spec/operawatir/matchers.rb +68 -0
- data/spec/{legacy_watirspec → operawatir}/server.rb +0 -0
- data/spec/operawatir/watirspec.rake +43 -0
- data/spec/operawatir/watirspec_desktophelper.rb +14 -0
- data/spec/operawatir/watirspec_helper.rb +62 -0
- data/spec/{legacy_watirspec → watir2}/area_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/areas_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/browser_spec.rb +2 -0
- data/spec/{legacy_watirspec → watir2}/button_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/buttons_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/checkbox_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/checkboxes_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/collections_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dd_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dds_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/del_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dels_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/div_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/divs_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dl_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dls_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dt_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/dts_spec.rb +0 -0
- data/spec/watir2/element_spec.rb +155 -0
- data/spec/{legacy_watirspec → watir2}/em_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/ems_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/filefield_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/filefields_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/2000_spans.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/bug_duplicate_attributes.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/bug_javascript_001.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/buttons_with_duplicate_ids.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/collections.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/definition_lists.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/euc-jp_text.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/forms_with_input_elements.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/frame_1.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/frame_2.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/frames.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/iframes.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/1.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/2.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/3.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/button.jpg +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/circle.jpg +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/map.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/map2.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/minus.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/originaltriangle.jpg +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/plus.gif +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/square.jpg +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/images/triangle.jpg +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/iso-2022-jp_text.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/javascript/helpers.js +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/jquery.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/latin1_text.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/multiple_ids.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/non_control_elements.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/parser_bug_001.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/prevent_form_submit.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/right_click.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/shift_jis_text.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/tables.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/timeout.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/timeout_window_location.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/tiny_mce.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/utf8_text.html +0 -0
- data/spec/{legacy_watirspec → watir2}/fixtures/watirspec.css +0 -0
- data/spec/{legacy_watirspec → watir2}/form_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/forms_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/frame_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/frames_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/guards.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/hidden_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/hiddens_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/hn_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/hns_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/image_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/images_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/ins_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/inses_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/label_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/labels_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/li_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/link_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/links_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/lis_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/map_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/maps_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/meta_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/metas_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/ol_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/ols_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/option_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/p_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/pre_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/pres_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/ps_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/radio_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/radios_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/select_list_spec.rb +84 -71
- data/spec/{legacy_watirspec → watir2}/select_lists_spec.rb +0 -0
- data/spec/{new_watirspec → watir2}/server.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/span_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/spans_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/spec_helper.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/strong_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/strongs_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_bodies_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_body_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_cell_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_cells_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_footer_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_footers_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_header_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_headers_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_row_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_rows_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/table_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/tables_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/text_field_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/text_fields_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/ul_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/uls_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/watir_compatibility_spec.rb +0 -0
- data/spec/{legacy_watirspec → watir2}/watirspec_helper.rb +0 -0
- data/spec/{new_watirspec → watir3}/browser_spec.rb +11 -21
- data/spec/{new_watirspec → watir3}/clipboard_spec.rb +2 -2
- data/spec/{new_watirspec → watir3}/collection_spec.rb +0 -0
- data/spec/{new_watirspec → watir3}/element_spec.rb +30 -12
- data/spec/watir3/guards.rb +39 -0
- data/spec/{new_watirspec → watir3}/keys_spec.rb +0 -0
- data/spec/watir3/server.rb +91 -0
- data/spec/{new_watirspec → watir3}/watirspec_helper.rb +0 -0
- data/spec/{new_watirspec → watir3}/window_spec.rb +8 -83
- metadata +315 -280
- data/lib/operadriver/selenium-common.jar +0 -0
- data/spec/legacy_watirspec/element_spec.rb +0 -86
- data/spec/new_watirspec/preferences_spec.rb +0 -144
- data/spec/new_watirspec/screenshot_spec.rb +0 -34
@@ -1,3 +1,4 @@
|
|
1
1
|
%w(quick_widget quick_button quick_checkbox quick_editfield
|
2
2
|
quick_dropdown quick_dialogtab quick_label quick_radiobutton quick_treeview quick_addressfield
|
3
|
-
quick_searchfield quick_toolbar quick_window quick_tab quick_treeitem quick_thumbnail
|
3
|
+
quick_searchfield quick_toolbar quick_window quick_tab quick_treeitem quick_thumbnail
|
4
|
+
quick_find quick_griditem quick_gridlayout).each {|widget| require "operawatir/quickwidgets/#{widget}"}
|
@@ -14,7 +14,11 @@ module OperaWatir
|
|
14
14
|
# @param [String] URL to load
|
15
15
|
# @return [String] text in the address field after the page is loaded
|
16
16
|
# or a blank string
|
17
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
18
|
+
# using the specified method
|
17
19
|
def load_page_with_url(url)
|
20
|
+
# Must focus field before calling enter_text...
|
21
|
+
focus_with_click
|
18
22
|
# Enters text in a field and then hits enter
|
19
23
|
enter_text_and_hit_enter(url)
|
20
24
|
end
|
@@ -22,6 +26,10 @@ module OperaWatir
|
|
22
26
|
#
|
23
27
|
# Gets the visible text in the address field
|
24
28
|
#
|
29
|
+
# @return [String] visible text in address field
|
30
|
+
#
|
31
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
32
|
+
# using the specified method
|
25
33
|
def visible_text
|
26
34
|
element.getVisibleText()
|
27
35
|
end
|
@@ -29,6 +37,10 @@ module OperaWatir
|
|
29
37
|
#
|
30
38
|
# Gets the highlighted text in the address field
|
31
39
|
#
|
40
|
+
# @return [String] higlighted text in address field, if any, else empty
|
41
|
+
#
|
42
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
43
|
+
# using the specified method
|
32
44
|
def highlighted_text
|
33
45
|
element.getAdditionalText()
|
34
46
|
end
|
@@ -89,7 +89,8 @@ module OperaWatir
|
|
89
89
|
# Clicks a button or expand control and toggles it state
|
90
90
|
#
|
91
91
|
# @return [int] the new state of the button or expand control,
|
92
|
-
# 0 for not pressed, or 1 for pressed
|
92
|
+
# 0 for not pressed, or 1 for pressed,
|
93
|
+
# nil if the element does no longer exist
|
93
94
|
#
|
94
95
|
# @raise [DesktopExceptions::WidgetNotVisibleException] if the button
|
95
96
|
# is not visible
|
@@ -100,7 +101,12 @@ module OperaWatir
|
|
100
101
|
# Cheat since we don't have an event yet
|
101
102
|
sleep(0.1)
|
102
103
|
|
103
|
-
element
|
104
|
+
# Note: click might have made this element dissapear ...
|
105
|
+
begin
|
106
|
+
element(true).getValue
|
107
|
+
rescue Exceptions::UnknownObjectException
|
108
|
+
nil
|
109
|
+
end
|
104
110
|
end
|
105
111
|
|
106
112
|
######################################################################
|
@@ -21,7 +21,7 @@ module OperaWatir
|
|
21
21
|
######################################################################
|
22
22
|
# Clicks a radio button or checkbox and toggles it state
|
23
23
|
#
|
24
|
-
# @return [
|
24
|
+
# @return [Boolean] the new state of the radio button or checkbox,
|
25
25
|
# false for not checked, or true for checked
|
26
26
|
#
|
27
27
|
# @raise [DesktopExceptions::WidgetNotVisibleException] if the checkbox
|
@@ -33,6 +33,7 @@ module OperaWatir
|
|
33
33
|
# Cheat since we don't have an even yet
|
34
34
|
sleep(0.1)
|
35
35
|
|
36
|
+
# is this guaranteed to be same as getValue?
|
36
37
|
element(true).isSelected
|
37
38
|
end
|
38
39
|
|
@@ -49,10 +50,9 @@ module OperaWatir
|
|
49
50
|
# is not visible
|
50
51
|
#
|
51
52
|
def open_dialog_with_click(win_name)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
#wait_for_window_shown(win_name)
|
53
|
+
wait_start
|
54
|
+
click
|
55
|
+
wait_for_window_shown(win_name)
|
56
56
|
end
|
57
57
|
|
58
58
|
end
|
@@ -20,7 +20,7 @@ module OperaWatir
|
|
20
20
|
######################################################################
|
21
21
|
# Types a text string into the edit field
|
22
22
|
#
|
23
|
-
# @note Only
|
23
|
+
# @note Only characters that appear on the keyboard that is currently
|
24
24
|
# selected can be typed, and the edit field must have focus.
|
25
25
|
#
|
26
26
|
# @param [String] text text string to type in
|
@@ -45,9 +45,9 @@ module OperaWatir
|
|
45
45
|
######################################################################
|
46
46
|
# Clears the contents of the edit field
|
47
47
|
#
|
48
|
-
# @note The edit field must have focus for this method to work
|
49
|
-
#
|
50
48
|
def clear
|
49
|
+
focus_with_click
|
50
|
+
|
51
51
|
key_press_direct("a", :ctrl)
|
52
52
|
key_press_direct("backspace")
|
53
53
|
|
@@ -96,10 +96,13 @@ module OperaWatir
|
|
96
96
|
def enter_text_and_hit_enter(text)
|
97
97
|
loaded_url = ""
|
98
98
|
|
99
|
+
# OBS: only caller should set focus, if not this will happily type
|
100
|
+
# away in the incorrect field, if for example called from subclass address_field
|
99
101
|
# Set focus
|
100
|
-
focus_with_click
|
102
|
+
# focus_with_click
|
103
|
+
|
101
104
|
# Clear the field
|
102
|
-
clear
|
105
|
+
clear
|
103
106
|
# Type in the text
|
104
107
|
typed_text = type_text(text) #Opens dropdown window
|
105
108
|
# Check that some text was typed, note the text might be changed in the
|
@@ -17,8 +17,14 @@ module OperaWatir
|
|
17
17
|
# or a blank string
|
18
18
|
#
|
19
19
|
def search_with_text(search_text)
|
20
|
+
# Must focus field before calling enter_text...
|
21
|
+
focus_with_click
|
22
|
+
|
20
23
|
# Enters text in a field and then hits enter
|
21
|
-
enter_text_and_hit_enter(search_text)
|
24
|
+
t = enter_text_and_hit_enter(search_text)
|
25
|
+
|
26
|
+
# return text in addressfield (in same window as search field)
|
27
|
+
driver.findWidgetByName(WIDGET_ENUM_MAP[:addressfield], @window_id, "tba_address_field", "Document Toolbar").getText
|
22
28
|
end
|
23
29
|
|
24
30
|
end
|
@@ -10,8 +10,10 @@ module OperaWatir
|
|
10
10
|
######################################################################
|
11
11
|
# Set focus to the tree item by clicking on it
|
12
12
|
#
|
13
|
-
# @raise [DesktopExceptions::WidgetNotVisibleException] if the treeview
|
13
|
+
# @raise [DesktopExceptions::WidgetNotVisibleException] if the treeview
|
14
14
|
# the treeitem is in is not visible
|
15
|
+
# @raise [DesktopExceptions::WidgetDisabledException] if the treeitem
|
16
|
+
# is disabled
|
15
17
|
#
|
16
18
|
def focus_with_click
|
17
19
|
# First scroll the item into view
|
@@ -29,6 +31,8 @@ module OperaWatir
|
|
29
31
|
# For now there is no difference to focusing
|
30
32
|
focus_with_click
|
31
33
|
end
|
34
|
+
|
35
|
+
alias_method :collapse_with_click, :expand_with_click
|
32
36
|
|
33
37
|
######################################################################
|
34
38
|
# Expands a tree item when it is double clicked
|
@@ -111,6 +115,23 @@ module OperaWatir
|
|
111
115
|
end
|
112
116
|
|
113
117
|
alias_method :open_dialog_with_double_click, :open_window_with_double_click
|
118
|
+
|
119
|
+
######################################################################
|
120
|
+
# Double clicks the tree item, and waits for the window with
|
121
|
+
# window name win_name to be loaded with the url of the treeitem
|
122
|
+
#
|
123
|
+
# @param [String] win_name name of the window that will be loaded (Pass a blank string for any window)
|
124
|
+
#
|
125
|
+
# @return [int] Window ID of the window shown or 0 if no window is shown
|
126
|
+
#
|
127
|
+
# @raise [DesktopExceptions::WidgetNotVisibleException] if the treeitem
|
128
|
+
# is not visible
|
129
|
+
#
|
130
|
+
def load_window_with_double_click(win_name)
|
131
|
+
wait_start
|
132
|
+
click(:left, 2)
|
133
|
+
wait_for_window_loaded(win_name)
|
134
|
+
end
|
114
135
|
|
115
136
|
|
116
137
|
private
|
@@ -2,17 +2,20 @@ module OperaWatir
|
|
2
2
|
class QuickWidget
|
3
3
|
include DesktopCommon
|
4
4
|
include DesktopContainer
|
5
|
+
include Deprecated
|
5
6
|
|
6
7
|
# @private
|
7
8
|
# window_id is set if constructor is called on a (parent) window
|
8
9
|
# location is set is this is called on a (parent) widget
|
9
|
-
def initialize(container, method, selector=nil, location=nil, window_id=-1)
|
10
|
+
def initialize(container, method, selector=nil, location=nil, window_id=-1, type=nil)
|
10
11
|
@container = container
|
11
12
|
|
12
13
|
if method.is_a? Java::ComOperaCoreSystems::QuickWidget
|
13
14
|
@elm = method
|
15
|
+
@type = WIDGET_ENUM_MAP.invert[method.getType]
|
14
16
|
else
|
15
17
|
@method = method
|
18
|
+
@type = type
|
16
19
|
@selector = selector
|
17
20
|
@location = location
|
18
21
|
@window_id = window_id
|
@@ -70,8 +73,7 @@ module OperaWatir
|
|
70
73
|
# Gets the text of the widget
|
71
74
|
#
|
72
75
|
# @note This method should not be used to check the text in a widget if
|
73
|
-
# the text is in the Opera language file. Use verify_text
|
74
|
-
# verify_includes_text instead
|
76
|
+
# the text is in the Opera language file. Use verify_text instead
|
75
77
|
#
|
76
78
|
# @return [String] text of the widget
|
77
79
|
#
|
@@ -121,6 +123,7 @@ module OperaWatir
|
|
121
123
|
######################################################################
|
122
124
|
# Checks that the text in the widget matches the text as loaded
|
123
125
|
# from the current language file in Opera using the string_id
|
126
|
+
# (Strips &'s from the string before comparing)
|
124
127
|
#
|
125
128
|
# @param [String] string_id String ID to use to load the string from the current
|
126
129
|
# language file (e.g. "D_NEW_PREFERENCES_GENERAL")
|
@@ -131,10 +134,17 @@ module OperaWatir
|
|
131
134
|
# using the specified method
|
132
135
|
#
|
133
136
|
def verify_text(string_id)
|
134
|
-
|
137
|
+
text = driver.getString(string_id, true) #true => stripAmpersands from string
|
138
|
+
if text.include? "%"
|
139
|
+
text.gsub!(/%[csduoxefg0-9]/, ".*")
|
140
|
+
res = /#{text}/ =~ element.getText()
|
141
|
+
res == nil ? false: true
|
142
|
+
else
|
143
|
+
element.verifyText(string_id)
|
144
|
+
end
|
135
145
|
end
|
136
146
|
|
137
|
-
alias_method :
|
147
|
+
alias_method :has_ui_string?, :verify_text
|
138
148
|
|
139
149
|
######################################################################
|
140
150
|
# Checks that the text in the widget includes the text as loaded
|
@@ -153,6 +163,8 @@ module OperaWatir
|
|
153
163
|
end
|
154
164
|
|
155
165
|
alias_method :includes_text?, :verify_includes_text
|
166
|
+
deprecated :verify_includes_text
|
167
|
+
deprecated :includes_text?
|
156
168
|
|
157
169
|
######################################################################
|
158
170
|
# Prints out all of the row/col information in single lines. Used to
|
@@ -187,8 +199,35 @@ module OperaWatir
|
|
187
199
|
def position
|
188
200
|
return [row, col] if type == :treeitem
|
189
201
|
return col if type == :tabbutton
|
202
|
+
return col if type == :button
|
190
203
|
false
|
191
204
|
end
|
205
|
+
|
206
|
+
########################################################################
|
207
|
+
#
|
208
|
+
# @return width of widget
|
209
|
+
#
|
210
|
+
def width
|
211
|
+
element.getRect().width
|
212
|
+
end
|
213
|
+
|
214
|
+
########################################################################
|
215
|
+
#
|
216
|
+
# @return height of widget
|
217
|
+
#
|
218
|
+
def height
|
219
|
+
element.getRect().height
|
220
|
+
end
|
221
|
+
|
222
|
+
#@private
|
223
|
+
def x
|
224
|
+
element.getRect().x
|
225
|
+
end
|
226
|
+
|
227
|
+
#@private
|
228
|
+
def y
|
229
|
+
element.getRect().y
|
230
|
+
end
|
192
231
|
|
193
232
|
######################################################################
|
194
233
|
# Prints out all of the internal information about the widget. Used
|
@@ -244,7 +283,7 @@ module OperaWatir
|
|
244
283
|
def value
|
245
284
|
return element.getValue
|
246
285
|
end
|
247
|
-
|
286
|
+
|
248
287
|
protected
|
249
288
|
#@private
|
250
289
|
# Return the element
|
@@ -256,8 +295,8 @@ protected
|
|
256
295
|
raise(Exceptions::UnknownObjectException, "Element #{@selector} not found using #{@method}") unless @elm
|
257
296
|
@elm
|
258
297
|
end
|
259
|
-
|
260
|
-
|
298
|
+
|
299
|
+
|
261
300
|
private
|
262
301
|
|
263
302
|
def drag_and_drop_on(other, drop_pos)
|
@@ -303,16 +342,16 @@ private
|
|
303
342
|
|
304
343
|
# Click widget
|
305
344
|
def click(button = :left, times = 1, *opts)
|
306
|
-
raise
|
307
|
-
|
345
|
+
raise DesktopExceptions::WidgetDisabledException, "Element #{@selector} is disabled" unless enabled?
|
346
|
+
|
308
347
|
#Some buttons etc. aren't visible until hovering them
|
309
348
|
if (visible? == false and type != :dialogtab)
|
310
349
|
element.hover
|
311
350
|
element(true)
|
312
351
|
end
|
313
|
-
|
352
|
+
|
314
353
|
# Dialog tabs are always visible even if the page they are connected to isn't
|
315
|
-
if visible? == true or type == :dialogtab
|
354
|
+
if visible? == true or type == :dialogtab
|
316
355
|
button = DesktopEnums::MOUSEBUTTON_ENUM_MAP[button]
|
317
356
|
list = Java::JavaUtil::ArrayList.new
|
318
357
|
opts.each { |mod| list << DesktopEnums::KEYMODIFIER_ENUM_MAP[mod] }
|
@@ -321,12 +360,12 @@ private
|
|
321
360
|
raise(DesktopExceptions::WidgetNotVisibleException, "Widget #{name.length > 0 ? name : text} not visible")
|
322
361
|
end
|
323
362
|
end
|
324
|
-
|
363
|
+
|
325
364
|
# Right click a widget
|
326
365
|
def right_click
|
327
366
|
click(:right, 1)
|
328
367
|
end
|
329
|
-
|
368
|
+
|
330
369
|
# double click widget
|
331
370
|
def double_click
|
332
371
|
click(:left, 2)
|
@@ -361,31 +400,31 @@ private
|
|
361
400
|
if @selector == nil && @elm != nil
|
362
401
|
set_selector
|
363
402
|
end
|
364
|
-
#puts "<find> Find Widget by " + @method.to_s + " " + @window_id.to_s + ", " + @selector.to_s + ", " + @location.to_s
|
403
|
+
#puts "\n<find> Find Widget by " + @method.to_s + " " + @window_id.to_s + ", " + @selector.to_s + ", " + @location.to_s + ", " + @type.to_s
|
365
404
|
case @method
|
366
405
|
when :name
|
367
406
|
if @location != nil
|
368
|
-
@element = driver.findWidgetByName(@window_id, @selector, @location)
|
407
|
+
@element = driver.findWidgetByName(WIDGET_ENUM_MAP[@type], @window_id, @selector, @location)
|
369
408
|
else
|
370
|
-
@element = driver.findWidgetByName(@window_id, @selector)
|
409
|
+
@element = driver.findWidgetByName(WIDGET_ENUM_MAP[@type], @window_id, @selector)
|
371
410
|
end
|
372
411
|
when :string_id
|
373
412
|
if @location != nil
|
374
|
-
@element = driver.findWidgetByStringId(@window_id, @selector, @location)
|
413
|
+
@element = driver.findWidgetByStringId(WIDGET_ENUM_MAP[@type], @window_id, @selector, @location)
|
375
414
|
else
|
376
|
-
@element = driver.findWidgetByStringId(@window_id, @selector)
|
415
|
+
@element = driver.findWidgetByStringId(WIDGET_ENUM_MAP[@type], @window_id, @selector)
|
377
416
|
end
|
378
417
|
when :text
|
379
418
|
if @location != nil
|
380
|
-
@element = driver.findWidgetByText(@window_id, @selector, @location)
|
419
|
+
@element = driver.findWidgetByText(WIDGET_ENUM_MAP[@type], @window_id, @selector, @location)
|
381
420
|
else
|
382
|
-
@element = driver.findWidgetByText(@window_id, @selector)
|
421
|
+
@element = driver.findWidgetByText(WIDGET_ENUM_MAP[@type], @window_id, @selector)
|
383
422
|
end
|
384
423
|
when :pos
|
385
424
|
if @location != nil
|
386
|
-
@element = driver.findWidgetByPosition(@window_id, @selector[0], @selector[1], @location)
|
425
|
+
@element = driver.findWidgetByPosition(WIDGET_ENUM_MAP[@type], @window_id, @selector[0], @selector[1], @location)
|
387
426
|
else
|
388
|
-
@element = driver.findWidgetByPosition(@window_id, @selector[0], @selector[1])
|
427
|
+
@element = driver.findWidgetByPosition(WIDGET_ENUM_MAP[@type], @window_id, @selector[0], @selector[1])
|
389
428
|
end
|
390
429
|
end
|
391
430
|
if @window_id < 0 && @element != nil
|
@@ -32,6 +32,8 @@ module OperaWatir
|
|
32
32
|
#
|
33
33
|
# @return [Symbol] type of the window (e.g. :dropdown, :button)
|
34
34
|
#
|
35
|
+
# @raise [Exceptions::UnknownObjectException] if the widget could not be found
|
36
|
+
# using the specified method
|
35
37
|
def type
|
36
38
|
return WINDOW_ENUM_MAP.invert[@elm.getType] unless @elm == nil
|
37
39
|
return WINDOW_ENUM_MAP.invert[element.getType]
|
@@ -104,7 +106,33 @@ module OperaWatir
|
|
104
106
|
def print_window_info
|
105
107
|
puts window_info_string
|
106
108
|
end
|
109
|
+
|
110
|
+
########################################################################
|
111
|
+
#
|
112
|
+
# @return width of widget
|
113
|
+
#
|
114
|
+
def width
|
115
|
+
element.getRect().width
|
116
|
+
end
|
107
117
|
|
118
|
+
########################################################################
|
119
|
+
#
|
120
|
+
# @return height of widget
|
121
|
+
#
|
122
|
+
def height
|
123
|
+
element.getRect().height
|
124
|
+
end
|
125
|
+
|
126
|
+
#@private
|
127
|
+
def x
|
128
|
+
element.getRect().x
|
129
|
+
end
|
130
|
+
|
131
|
+
#@private
|
132
|
+
def y
|
133
|
+
element.getRect().y
|
134
|
+
end
|
135
|
+
|
108
136
|
######################################################################
|
109
137
|
# Returns a string of the internal information about the window. Used
|
110
138
|
# to discover the names of widgets and windows to use in the tests.
|
@@ -149,8 +177,10 @@ private
|
|
149
177
|
case @method
|
150
178
|
when :name
|
151
179
|
# Use active window when specifying by name "Document Window"
|
152
|
-
# and not the first if there are more than one
|
153
|
-
|
180
|
+
# and not the first if there are more than one
|
181
|
+
active_window_id = driver.getActiveQuickWindowID()
|
182
|
+
name = driver.getQuickWindowName(active_window_id);
|
183
|
+
if (@selector == "Document Window" && name == "Document Window")
|
154
184
|
@element = driver.findWindowById(driver.getActiveQuickWindowID())
|
155
185
|
else
|
156
186
|
@element = driver.findWindowByName(@selector)
|