rautomation 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +34 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +24 -0
- data/History.rdoc +21 -0
- data/LICENSE +1 -1
- data/README.rdoc +8 -7
- data/Rakefile +22 -32
- data/VERSION +1 -1
- data/ext/UiaDll/Release/UiaDll.dll +0 -0
- data/ext/UiaDll/UiaDll.suo +0 -0
- data/ext/UiaDll/UiaDll/UiaDll.cpp +236 -10
- data/lib/rautomation/adapter/autoit/locators.rb +1 -1
- data/lib/rautomation/adapter/autoit/text_field.rb +10 -1
- data/lib/rautomation/adapter/autoit/window.rb +50 -23
- data/lib/rautomation/adapter/helper.rb +6 -6
- data/lib/rautomation/adapter/ms_uia.rb +22 -0
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/button.rb +3 -2
- data/lib/rautomation/adapter/ms_uia/button_helper.rb +25 -0
- data/lib/rautomation/adapter/ms_uia/checkbox.rb +27 -0
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/constants.rb +20 -5
- data/lib/rautomation/adapter/ms_uia/control.rb +180 -0
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/functions.rb +24 -26
- data/lib/rautomation/adapter/ms_uia/keystroke_converter.rb +122 -0
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/label.rb +3 -2
- data/lib/rautomation/adapter/ms_uia/list_box.rb +91 -0
- data/lib/rautomation/adapter/ms_uia/list_item.rb +49 -0
- data/lib/rautomation/adapter/ms_uia/locators.rb +23 -0
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/radio.rb +2 -2
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/select_list.rb +41 -7
- data/lib/rautomation/adapter/ms_uia/table.rb +86 -0
- data/lib/rautomation/adapter/{win_ffi → ms_uia}/text_field.rb +5 -4
- data/lib/rautomation/adapter/ms_uia/uia_dll.rb +62 -0
- data/lib/rautomation/adapter/ms_uia/window.rb +364 -0
- data/lib/rautomation/adapter/win_32.rb +21 -0
- data/lib/rautomation/adapter/win_32/button.rb +14 -0
- data/lib/rautomation/adapter/{win_ffi → win_32}/button_helper.rb +1 -1
- data/lib/rautomation/adapter/win_32/checkbox.rb +14 -0
- data/lib/rautomation/adapter/win_32/constants.rb +68 -0
- data/lib/rautomation/adapter/{win_ffi → win_32}/control.rb +30 -23
- data/lib/rautomation/adapter/win_32/functions.rb +313 -0
- data/lib/rautomation/adapter/win_32/keys.rb +121 -0
- data/lib/rautomation/adapter/win_32/label.rb +10 -0
- data/lib/rautomation/adapter/win_32/list_box.rb +40 -0
- data/lib/rautomation/adapter/{win_ffi → win_32}/locators.rb +2 -2
- data/lib/rautomation/adapter/win_32/radio.rb +11 -0
- data/lib/rautomation/adapter/win_32/select_list.rb +97 -0
- data/lib/rautomation/adapter/win_32/table.rb +22 -0
- data/lib/rautomation/adapter/win_32/text_field.rb +42 -0
- data/lib/rautomation/adapter/{win_ffi → win_32}/window.rb +79 -62
- data/lib/rautomation/element_collections.rb +9 -1
- data/lib/rautomation/window.rb +17 -9
- data/rautomation.gemspec +24 -0
- data/spec/adapter/autoit/window_spec.rb +71 -0
- data/spec/adapter/{win_ffi → ms_uia}/button_spec.rb +1 -1
- data/spec/adapter/{win_ffi → ms_uia}/checkbox_spec.rb +9 -3
- data/spec/adapter/ms_uia/control_spec.rb +28 -0
- data/spec/adapter/ms_uia/keystroke_converter_spec.rb +50 -0
- data/spec/adapter/{win_ffi → ms_uia}/label_spec.rb +2 -2
- data/spec/adapter/ms_uia/list_item_spec.rb +14 -0
- data/spec/adapter/{win_ffi → ms_uia}/listbox_spec.rb +18 -5
- data/spec/adapter/{win_ffi → ms_uia}/radio_spec.rb +3 -1
- data/spec/adapter/ms_uia/select_list_spec.rb +109 -0
- data/spec/adapter/{win_ffi → ms_uia}/table_spec.rb +12 -1
- data/spec/adapter/{win_ffi → ms_uia}/text_field_spec.rb +2 -1
- data/spec/adapter/ms_uia/window_spec.rb +89 -0
- data/spec/adapter/win_32/button_spec.rb +30 -0
- data/spec/adapter/win_32/checkbox_spec.rb +48 -0
- data/spec/adapter/win_32/label_spec.rb +15 -0
- data/spec/adapter/win_32/listbox_spec.rb +42 -0
- data/spec/adapter/win_32/radio_spec.rb +32 -0
- data/spec/adapter/{win_ffi → win_32}/select_list_spec.rb +16 -16
- data/spec/adapter/win_32/table_spec.rb +28 -0
- data/spec/adapter/win_32/text_field_spec.rb +24 -0
- data/spec/adapter/{win_ffi → win_32}/window_spec.rb +19 -14
- data/spec/button_spec.rb +1 -0
- data/spec/buttons_spec.rb +4 -4
- data/spec/spec_helper.rb +30 -4
- data/spec/text_field_spec.rb +6 -7
- data/spec/window_spec.rb +12 -0
- data/spec/windows_spec.rb +19 -0
- metadata +116 -97
- data/lib/rautomation/adapter/win_ffi.rb +0 -21
- data/lib/rautomation/adapter/win_ffi/checkbox.rb +0 -19
- data/lib/rautomation/adapter/win_ffi/keystroke_converter.rb +0 -67
- data/lib/rautomation/adapter/win_ffi/list_box.rb +0 -60
- data/lib/rautomation/adapter/win_ffi/ms_uia/uia_dll.rb +0 -36
- data/lib/rautomation/adapter/win_ffi/table.rb +0 -57
- data/spec/adapter/win_ffi/keystroke_converter_spec.rb +0 -47
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "MsUia::Table", :if => SpecHelper.adapter == :ms_uia do
|
4
4
|
before :each do
|
5
5
|
window = RAutomation::Window.new(:title => "MainFormWindow")
|
6
6
|
window.button(:value => "Data Entry Form").click { RAutomation::Window.new(:title => "DataEntryForm").exists? }
|
@@ -16,7 +16,18 @@ describe "WinFfi::Table", :if => SpecHelper.adapter == :win_ffi do
|
|
16
16
|
to raise_exception(RAutomation::UnknownWindowException)
|
17
17
|
end
|
18
18
|
|
19
|
+
it "check for table class" do
|
20
|
+
RAutomation::Window.new(:title => "DataEntryForm").table(:id => "deleteItemButton").should_not exist
|
21
|
+
RAutomation::Window.new(:title => "DataEntryForm").table(:id => "personListView").should exist
|
22
|
+
end
|
23
|
+
|
19
24
|
it "#strings" do
|
25
|
+
table = RAutomation::Window.new(:title => "MainFormWindow").table(:id => "FruitListBox")
|
26
|
+
|
27
|
+
table.strings.should == ["Apple", "Orange", "Mango"]
|
28
|
+
end
|
29
|
+
|
30
|
+
it "#strings with nested elements" do
|
20
31
|
table = RAutomation::Window.new(:title => "DataEntryForm").table(:id => "personListView")
|
21
32
|
|
22
33
|
table.strings.should == [
|
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "MsUia::TextField", :if => SpecHelper.adapter == :ms_uia do
|
4
4
|
|
5
5
|
it "check for text field class" do
|
6
6
|
RAutomation::Window.new(:title => "MainFormWindow").text_field(:id => "checkBox").should_not exist
|
7
|
+
RAutomation::Window.new(:title => "MainFormWindow").text_field(:id => "textField").should exist
|
7
8
|
end
|
8
9
|
|
9
10
|
it "enabled/disabled" do
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "MsUia::Window", :if => SpecHelper.adapter == :ms_uia do
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
it "move and click" do
|
8
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
9
|
+
window.maximize
|
10
|
+
window.move_mouse(62,46)
|
11
|
+
sleep 1
|
12
|
+
window.click_mouse
|
13
|
+
sleep 1
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
=begin
|
18
|
+
it "control by focus" do
|
19
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
20
|
+
|
21
|
+
button = window.button(:value => "Reset")
|
22
|
+
button.set_focus
|
23
|
+
control = window.control(:id => "button1", :focus => "")
|
24
|
+
|
25
|
+
box2 = button.bounding_rectangle
|
26
|
+
box1 = control.bounding_rectangle
|
27
|
+
|
28
|
+
box1.should == box2
|
29
|
+
end
|
30
|
+
|
31
|
+
it "#child" do
|
32
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
33
|
+
window.should exist
|
34
|
+
|
35
|
+
# buttons are windows too. so let's find the button for now
|
36
|
+
child = window.child(:title => /About/i)
|
37
|
+
child.should exist
|
38
|
+
child.title.should == "&About"
|
39
|
+
# child.text.should include "About"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "send tab keystrokes to move focus between elements" do
|
43
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
44
|
+
window.button(:value => "&About").set_focus
|
45
|
+
window.button(:value => "&About").should have_focus
|
46
|
+
|
47
|
+
window.send_keys("{tab}{tab}{tab}")
|
48
|
+
button = window.button(:value => "Close")
|
49
|
+
button.should exist
|
50
|
+
button.should have_focus
|
51
|
+
end
|
52
|
+
|
53
|
+
it "send keystrokes to a text field" do
|
54
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
55
|
+
text_field = RAutomation::Window.new(:title => "MainFormWindow").text_field(:id => "textField")
|
56
|
+
text_field.set_focus
|
57
|
+
window.send_keys("abc123ABChiHI!\#@$%^&*()\"/-,'&_<>")
|
58
|
+
text_field.value.should == "abc123ABChiHI!\#@$%^&*()\"/-,'&_<>"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "sending keystrokes does not change argument string" do
|
62
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
63
|
+
|
64
|
+
text_field = RAutomation::Window.new(:title => "MainFormWindow").text_field(:id => "textField")
|
65
|
+
text_field.set_focus()
|
66
|
+
|
67
|
+
an_important_string = "Don't lose me"
|
68
|
+
window.send_keys(an_important_string)
|
69
|
+
an_important_string.should == "Don't lose me"
|
70
|
+
end
|
71
|
+
|
72
|
+
it "#control" do
|
73
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
74
|
+
window.control(:id => "aboutButton").should exist
|
75
|
+
end
|
76
|
+
|
77
|
+
it "has controls" do
|
78
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
79
|
+
window.controls(:class => /BUTTON/i).size.should == 12
|
80
|
+
end
|
81
|
+
|
82
|
+
it "window coordinates" do
|
83
|
+
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
84
|
+
|
85
|
+
window.maximize
|
86
|
+
window.bounding_rectangle.should == [-4, -4, 1444, 874]
|
87
|
+
end
|
88
|
+
=end
|
89
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::Button", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
it "enabled/disabled" do
|
5
|
+
window = RAutomation::Window.new(:title => SpecHelper::DATA[:window1_title])
|
6
|
+
window.button(:value => "Enabled").should be_enabled
|
7
|
+
window.button(:value => "Enabled").should_not be_disabled
|
8
|
+
|
9
|
+
window.button(:value => "Disabled").should be_disabled
|
10
|
+
window.button(:value => "Disabled").should_not be_enabled
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#focus" do
|
14
|
+
button = RAutomation::Window.new(:title => SpecHelper::DATA[:window1_title]).button(:value => "Enabled")
|
15
|
+
button.should_not be_focused
|
16
|
+
button.focus
|
17
|
+
button.should be_focused
|
18
|
+
end
|
19
|
+
|
20
|
+
it "cannot click disabled button" do
|
21
|
+
window = RAutomation::Window.new(:title => SpecHelper::DATA[:window1_title])
|
22
|
+
lambda { window.button(:value => "Disabled").click }.should raise_error
|
23
|
+
end
|
24
|
+
|
25
|
+
it "cannot set focus to disabled button" do
|
26
|
+
window = RAutomation::Window.new(:title => SpecHelper::DATA[:window1_title])
|
27
|
+
lambda { window.button(:value => "Disabled").focus }.should raise_error
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::Checkbox", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
it "#checkbox" do
|
5
|
+
RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBox").should exist
|
6
|
+
|
7
|
+
RAutomation::Window.wait_timeout = 0.1
|
8
|
+
expect { RAutomation::Window.new(:title => "non-existing-window").checkbox(:value => "Something") }.
|
9
|
+
to raise_exception(RAutomation::UnknownWindowException)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "#set? & #set" do
|
13
|
+
checkbox = RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBox")
|
14
|
+
checkbox.should_not be_set
|
15
|
+
|
16
|
+
checkbox.set
|
17
|
+
checkbox.should be_set
|
18
|
+
end
|
19
|
+
|
20
|
+
it "#value" do
|
21
|
+
checkbox = RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBox")
|
22
|
+
checkbox.value.should == "checkBox"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "#clear" do
|
26
|
+
checkbox = RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBox")
|
27
|
+
checkbox.set
|
28
|
+
checkbox.should be_set
|
29
|
+
|
30
|
+
checkbox.clear
|
31
|
+
checkbox.should_not be_set
|
32
|
+
end
|
33
|
+
|
34
|
+
it "enabled/disabled" do
|
35
|
+
RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBox").should be_enabled
|
36
|
+
RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBox").should_not be_disabled
|
37
|
+
|
38
|
+
RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBoxDisabled").should_not be_enabled
|
39
|
+
RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBoxDisabled").should be_disabled
|
40
|
+
end
|
41
|
+
|
42
|
+
it "cannot check a disabled checkbox" do
|
43
|
+
lambda {
|
44
|
+
RAutomation::Window.new(:title => "MainFormWindow").checkbox(:value => "checkBoxDisabled").set
|
45
|
+
}.should raise_error
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::Label", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
it "#exist?" do
|
5
|
+
window = RAutomation::Window.new(:title => "MainFormWindow")
|
6
|
+
|
7
|
+
window.label(:value => "This is a sample text").should exist
|
8
|
+
window.label(:value => "This label should not exist").should_not exist
|
9
|
+
end
|
10
|
+
|
11
|
+
it "#label" do
|
12
|
+
window = RAutomation::Window.new(:title => "MainFormWindow")
|
13
|
+
window.label(:value => "This is a sample text").value.should == "This is a sample text"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::ListBox", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
|
5
|
+
it "#exists" do
|
6
|
+
RAutomation::Window.new(:title => "MainFormWindow").list_box(:index => 0).should exist
|
7
|
+
end
|
8
|
+
|
9
|
+
it "#count" do
|
10
|
+
list_box = RAutomation::Window.new(:title => "MainFormWindow").list_box(:index => 0)
|
11
|
+
list_box.count.should == 3
|
12
|
+
end
|
13
|
+
|
14
|
+
it "lists items" do
|
15
|
+
list_box = RAutomation::Window.new(:title => "MainFormWindow").list_box(:index => 0)
|
16
|
+
list_box.items[0].should == "Apple"
|
17
|
+
list_box.items[1].should == "Orange"
|
18
|
+
list_box.items[2].should == "Mango"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "#selected?" do
|
22
|
+
list_box = RAutomation::Window.new(:title => "MainFormWindow").list_box(:index => 0)
|
23
|
+
list_box.should_not be_selected(2)
|
24
|
+
list_box.select(2)
|
25
|
+
list_box.should be_selected(2)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "#select" do
|
29
|
+
list_box = RAutomation::Window.new(:title => "MainFormWindow").list_box(:index => 0)
|
30
|
+
list_box.select(1)
|
31
|
+
list_box.should be_selected(1)
|
32
|
+
list_box.select(0)
|
33
|
+
list_box.should be_selected(0)
|
34
|
+
list_box.select(2)
|
35
|
+
list_box.should be_selected(2)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "#strings" do
|
39
|
+
list_box = RAutomation::Window.new(:title => "MainFormWindow").list_box(:index => 0)
|
40
|
+
list_box.strings.should == ["Apple", "Orange", "Mango"]
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::RadioButton", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
it "#exist?" do
|
5
|
+
RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option 1").should exist
|
6
|
+
|
7
|
+
RAutomation::Window.wait_timeout = 0.1
|
8
|
+
expect {RAutomation::Window.new(:title => "non-existent-window").
|
9
|
+
radio(:value => "Option 1")}.
|
10
|
+
to raise_exception(RAutomation::UnknownWindowException)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#set? & #set" do
|
14
|
+
radio = RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option 1")
|
15
|
+
radio.should_not be_set
|
16
|
+
|
17
|
+
radio.set
|
18
|
+
radio.should be_set
|
19
|
+
end
|
20
|
+
|
21
|
+
it "enabled/disabled" do
|
22
|
+
RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option 1").should be_enabled
|
23
|
+
RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option 1").should_not be_disabled
|
24
|
+
|
25
|
+
RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option Disabled").should_not be_enabled
|
26
|
+
RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option Disabled").should be_disabled
|
27
|
+
end
|
28
|
+
|
29
|
+
it "cannot set a disabled radio button" do
|
30
|
+
lambda { RAutomation::Window.new(:title => "MainFormWindow").radio(:value => "Option Disabled").set }.should raise_error
|
31
|
+
end
|
32
|
+
end
|
@@ -1,21 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "Win32::SelectList", :if => SpecHelper.adapter == :win_32 do
|
4
4
|
it "#select_list" do
|
5
|
-
RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
5
|
+
RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1).should exist
|
6
6
|
|
7
7
|
RAutomation::Window.wait_timeout = 0.1
|
8
8
|
expect {RAutomation::Window.new(:title => "non-existent-window").
|
9
|
-
select_list(:class => /
|
9
|
+
select_list(:class => /combobox/i, :index => 1)}.
|
10
10
|
to raise_exception(RAutomation::UnknownWindowException)
|
11
11
|
end
|
12
12
|
|
13
|
-
it "check for select list class" do
|
14
|
-
RAutomation::Window.new(:title => "MainFormWindow").select_list(:id => "textField").should_not exist
|
15
|
-
end
|
16
|
-
|
17
13
|
it "#options" do
|
18
|
-
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
14
|
+
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1)
|
19
15
|
select_list.options.size.should == 5
|
20
16
|
|
21
17
|
expected_options = ["Apple", "Caimito", "Coconut", "Orange", "Passion Fruit"]
|
@@ -23,14 +19,21 @@ describe "WinFfi::SelectList", :if => SpecHelper.adapter == :win_ffi do
|
|
23
19
|
end
|
24
20
|
|
25
21
|
it "#selected? & #select" do
|
26
|
-
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
22
|
+
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1)
|
27
23
|
select_list.options(:text => "Apple")[0].should_not be_selected
|
28
24
|
select_list.options(:text => "Apple")[0].select.should be_true
|
29
25
|
select_list.options(:text => "Apple")[0].should be_selected
|
30
26
|
end
|
31
27
|
|
28
|
+
it "#set" do
|
29
|
+
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1)
|
30
|
+
select_list.options(:text => "Apple")[0].should_not be_selected
|
31
|
+
select_list.set("Apple")
|
32
|
+
select_list.options(:text => "Apple")[0].should be_selected
|
33
|
+
end
|
34
|
+
|
32
35
|
it "#value" do
|
33
|
-
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
36
|
+
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1)
|
34
37
|
|
35
38
|
#default empty state
|
36
39
|
select_list.value.should == ""
|
@@ -43,15 +46,12 @@ describe "WinFfi::SelectList", :if => SpecHelper.adapter == :win_ffi do
|
|
43
46
|
end
|
44
47
|
|
45
48
|
it "enabled/disabled" do
|
46
|
-
RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
47
|
-
RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
48
|
-
|
49
|
-
RAutomation::Window.new(:title => "MainFormWindow").select_list(:id => "comboBoxDisabled").should_not be_enabled
|
50
|
-
RAutomation::Window.new(:title => "MainFormWindow").select_list(:id => "comboBoxDisabled").should be_disabled
|
49
|
+
RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1).should be_enabled
|
50
|
+
RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1).should_not be_disabled
|
51
51
|
end
|
52
52
|
|
53
53
|
it "#option" do
|
54
|
-
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:
|
54
|
+
select_list = RAutomation::Window.new(:title => "MainFormWindow").select_list(:class => /combobox/i, :index => 1)
|
55
55
|
|
56
56
|
select_list.option(:text => "Apple").should_not be_selected
|
57
57
|
select_list.option(:text => "Apple").set
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::Table", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
before :each do
|
5
|
+
window = RAutomation::Window.new(:title => "MainFormWindow")
|
6
|
+
window.button(:value => "Data Entry Form").click { RAutomation::Window.new(:title => "DataEntryForm").exists? }
|
7
|
+
end
|
8
|
+
|
9
|
+
it "#table" do
|
10
|
+
table = RAutomation::Window.new(:title => "DataEntryForm").table
|
11
|
+
table.should exist
|
12
|
+
|
13
|
+
RAutomation::Window.wait_timeout = 0.1
|
14
|
+
expect {RAutomation::Window.new(:title => "non-existent-window").
|
15
|
+
table(:class => /SysListView32/i)}.
|
16
|
+
to raise_exception(RAutomation::UnknownWindowException)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "#select" do
|
20
|
+
table = RAutomation::Window.new(:title => "DataEntryForm").table
|
21
|
+
|
22
|
+
table.should_not be_selected(2)
|
23
|
+
table.select(2)
|
24
|
+
table.should be_selected(2)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Win32::TextField", :if => SpecHelper.adapter == :win_32 do
|
4
|
+
|
5
|
+
it "enabled/disabled" do
|
6
|
+
RAutomation::Window.new(:title => "MainFormWindow").text_field(:index => 1).should be_enabled
|
7
|
+
RAutomation::Window.new(:title => "MainFormWindow").text_field(:index => 1).should_not be_disabled
|
8
|
+
end
|
9
|
+
|
10
|
+
it "cannot set a value to a disabled text field" do
|
11
|
+
lambda { RAutomation::Window.new(:title => "MainFormWindow").text_field.set "abc" }.should raise_error
|
12
|
+
lambda { RAutomation::Window.new(:title => "MainFormWindow").text_field.clear }.should raise_error
|
13
|
+
end
|
14
|
+
|
15
|
+
it "#send_keys" do
|
16
|
+
text_field = RAutomation::Window.new(:title => "MainFormWindow").text_field(:index => 1)
|
17
|
+
text_field.send_keys "abc"
|
18
|
+
text_field.value.should == "abc"
|
19
|
+
|
20
|
+
text_field.send_keys [:control, "a"], :backspace
|
21
|
+
text_field.value.should be_empty
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "Win32::Window", :if => SpecHelper.adapter == :win_32 do
|
4
4
|
it "#child" do
|
5
5
|
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
6
6
|
window.should exist
|
@@ -9,35 +9,40 @@ describe "WinFfi::Window", :if => SpecHelper.adapter == :win_ffi do
|
|
9
9
|
child = window.child(:title => /About/i)
|
10
10
|
child.should exist
|
11
11
|
child.title.should == "&About"
|
12
|
-
# child.text.should include "About"
|
13
12
|
end
|
14
13
|
|
15
14
|
it "send tab keystrokes to move focus between elements" do
|
16
15
|
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
17
|
-
window.button(:value => "&About").
|
18
|
-
window.button(:value => "&About").should
|
16
|
+
window.button(:value => "&About").focus
|
17
|
+
window.button(:value => "&About").should be_focused
|
19
18
|
|
20
|
-
window.send_keys(
|
19
|
+
window.send_keys(:tab, :tab, :tab)
|
21
20
|
button = window.button(:value => "Close")
|
22
21
|
button.should exist
|
23
|
-
button.should
|
22
|
+
button.should be_focused
|
24
23
|
end
|
25
24
|
|
26
|
-
|
25
|
+
it "#send_keys" do
|
27
26
|
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
28
|
-
text_field =
|
29
|
-
text_field.
|
30
|
-
window.send_keys
|
31
|
-
text_field.value.should == "abc123ABChiHI"
|
32
|
-
|
27
|
+
text_field = window.text_field(:index => 1)
|
28
|
+
text_field.focus
|
29
|
+
window.send_keys "abc123ABChiHI!"
|
30
|
+
text_field.value.should == "abc123ABChiHI!"
|
31
|
+
|
32
|
+
window.send_keys :space, "X"
|
33
|
+
text_field.value.should == "abc123ABChiHI! X"
|
34
|
+
|
35
|
+
window.send_keys [:control, "a"], :backspace
|
36
|
+
text_field.value.should be_empty
|
37
|
+
end
|
33
38
|
|
34
39
|
it "#control" do
|
35
40
|
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
36
|
-
window.control(:
|
41
|
+
window.control(:value => "&About").should exist
|
37
42
|
end
|
38
43
|
|
39
44
|
it "has controls" do
|
40
45
|
window = RAutomation::Window.new(:title => /MainFormWindow/i)
|
41
|
-
window.controls(:class => /
|
46
|
+
window.controls(:class => /button/i).size.should == 12
|
42
47
|
end
|
43
48
|
end
|