BSOne.SFC/EM.Lib/DelphiUIAutomation/demo/AutomationDemo.dpr

165 lines
7.9 KiB
Plaintext

{***************************************************************************}
{ }
{ DelphiUIAutomation }
{ }
{ Copyright 2015-16 JHC Systems Limited }
{ }
{***************************************************************************}
{ }
{ Licensed under the Apache License, Version 2.0 (the "License"); }
{ you may not use this file except in compliance with the License. }
{ You may obtain a copy of the License at }
{ }
{ http://www.apache.org/licenses/LICENSE-2.0 }
{ }
{ Unless required by applicable law or agreed to in writing, software }
{ distributed under the License is distributed on an "AS IS" BASIS, }
{ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. }
{ See the License for the specific language governing permissions and }
{ limitations under the License. }
{ }
{***************************************************************************}
program AutomationDemo;
{$APPTYPE CONSOLE}
{$R *.res}
uses
generics.collections,
System.SysUtils,
System.Types,
DelphiUIAutomation.Automation in '..\source\DelphiUIAutomation.Automation.pas',
DelphiUIAutomation.Base in '..\source\DelphiUIAutomation.Base.pas',
DelphiUIAutomation.Client in '..\source\DelphiUIAutomation.Client.pas',
DelphiUIAutomation.Clipboard in '..\source\DelphiUIAutomation.Clipboard.pas',
DelphiUIAutomation.Exception in '..\source\DelphiUIAutomation.Exception.pas',
DelphiUIAutomation.Keyboard in '..\source\DelphiUIAutomation.Keyboard.pas',
DelphiUIAutomation.Mouse in '..\source\DelphiUIAutomation.Mouse.pas',
DelphiUIAutomation.Processes in '..\source\DelphiUIAutomation.Processes.pas',
DelphiUIAutomation.ScreenShot in '..\source\DelphiUIAutomation.ScreenShot.pas',
DelphiUIAutomation.Utils in '..\source\DelphiUIAutomation.Utils.pas',
UIAutomationClient_TLB in '..\source\UIAutomationClient_TLB.pas',
DelphiUIAutomation.AndCondition in '..\source\Conditions\DelphiUIAutomation.AndCondition.pas',
DelphiUIAutomation.Condition in '..\source\Conditions\DelphiUIAutomation.Condition.pas',
DelphiUIAutomation.ControlTypeCondition in '..\source\Conditions\DelphiUIAutomation.ControlTypeCondition.pas',
DelphiUIAutomation.FalseCondition in '..\source\Conditions\DelphiUIAutomation.FalseCondition.pas',
DelphiUIAutomation.NameCondition in '..\source\Conditions\DelphiUIAutomation.NameCondition.pas',
DelphiUIAutomation.OrCondition in '..\source\Conditions\DelphiUIAutomation.OrCondition.pas',
DelphiUIAutomation.TrueCondition in '..\source\Conditions\DelphiUIAutomation.TrueCondition.pas',
DelphiUIAutomation.Button in '..\source\Controls\DelphiUIAutomation.Button.pas',
DelphiUIAutomation.Checkbox in '..\source\Controls\DelphiUIAutomation.Checkbox.pas',
DelphiUIAutomation.ComboBox in '..\source\Controls\DelphiUIAutomation.ComboBox.pas',
DelphiUIAutomation.Container.Intf in '..\source\controls\DelphiUIAutomation.Container.Intf.pas',
DelphiUIAutomation.Container in '..\source\Controls\DelphiUIAutomation.Container.pas',
DelphiUIAutomation.Desktop in '..\source\controls\DelphiUIAutomation.Desktop.pas',
DelphiUIAutomation.EditBox in '..\source\Controls\DelphiUIAutomation.EditBox.pas',
DelphiUIAutomation.Hyperlink in '..\source\Controls\DelphiUIAutomation.Hyperlink.pas',
DelphiUIAutomation.ListItem in '..\source\Controls\DelphiUIAutomation.ListItem.pas',
DelphiUIAutomation.Panel.Intf in '..\source\Controls\DelphiUIAutomation.Panel.Intf.pas',
DelphiUIAutomation.Panel in '..\source\Controls\DelphiUIAutomation.Panel.pas',
DelphiUIAutomation.RadioButton in '..\source\Controls\DelphiUIAutomation.RadioButton.pas',
DelphiUIAutomation.Statusbar in '..\source\Controls\DelphiUIAutomation.Statusbar.pas',
DelphiUIAutomation.StringGrid in '..\source\Controls\DelphiUIAutomation.StringGrid.pas',
DelphiUIAutomation.StringGridItem in '..\source\Controls\DelphiUIAutomation.StringGridItem.pas',
DelphiUIAutomation.Tab.Intf in '..\source\Controls\DelphiUIAutomation.Tab.Intf.pas',
DelphiUIAutomation.Tab in '..\source\Controls\DelphiUIAutomation.Tab.pas',
DelphiUIAutomation.TabItem in '..\source\Controls\DelphiUIAutomation.TabItem.pas',
DelphiUIAutomation.TextBox in '..\source\Controls\DelphiUIAutomation.TextBox.pas',
DelphiUIAutomation.ControlTypeIDs in '..\source\Ids\DelphiUIAutomation.ControlTypeIDs.pas',
DelphiUIAutomation.PatternIDs in '..\source\Ids\DelphiUIAutomation.PatternIDs.pas',
DelphiUIAutomation.PropertyIDs in '..\source\Ids\DelphiUIAutomation.PropertyIDs.pas',
DelphiUIAutomation.Menu in '..\source\Controls\Menus\DelphiUIAutomation.Menu.pas',
DelphiUIAutomation.MenuItem in '..\source\Controls\Menus\DelphiUIAutomation.MenuItem.pas',
DelphiUIAutomation.Window in '..\source\Controls\DelphiUIAutomation.Window.pas',
DelphiUIAutomation.TreeView in '..\source\Controls\DelphiUIAutomation.TreeView.pas';
var
application: IAutomationApplication;
enquiry : IAutomationWindow;
tb1, tb2 : IAutomationEditBox;
eb0: IAutomationTextBox;
Tab: IAutomationTab;
Statusbar: IAutomationStatusBar;
check: IAutomationCheckBox;
radio: IAutomationRadioButton;
// eb2 : IAutomationEditBox;
cb1: IAutomationCombobox;
cb2: IAutomationCombobox;
tv1: IAutomationTreeView;
tvi: IAutomationTreeViewItem;
exit1: IAutomationMenuItem;
menu: IAutomationMenu;
begin
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
TUIAuto.CreateUIAuto;
// First launch the application
application := TAutomationApplication.LaunchOrAttach
('C:\taskToCSG\EM.Lib\DelphiUIAutomation\demo\democlient\Win32\Debug\Project1.exe', '');
application.WaitWhileBusy;
// Now wait for a very long time for the enquiry screen to come up
enquiry := TAutomationDesktop.GetDesktopWindow('Form1');
enquiry.Focus;
// Select the correct tab
Tab := enquiry.GetTabByIndex(0);
Tab.SelectTabPage('Second Tab'); // 3 is the magic number
tb1 := Tab.GetEditBoxByIndex(0);
writeln(tb1.Text);
tb2 := enquiry.GetEditBoxByName('AutomatedEdit1');
writeln(tb2.Text);
check := enquiry.GetCheckboxByIndex(0);
check.toggle;
radio := enquiry.GetRadioButtonByIndex(2);
radio.Select;
// Now see whether we can get the statusbar
Statusbar := enquiry.Statusbar;
eb0 := Statusbar.GetTextBoxByIndex(1);
writeln('Text is ' + eb0.Text);
// Now get and set the text in an editbox, by name
cb1 := enquiry.GetComboboxByName('AutomatedCombobox1');
writeln('Combo text is ' + cb1.Text);
cb1.Text := 'Replacements';
cb1 := enquiry.GetComboboxByName('AutomatedCombobox1');
writeln('Combo text is ' + cb1.Text);
cb2 := enquiry.GetComboboxByName('AutomatedCombobox2');
writeln('Combo2 text is ' + cb2.Text);
cb2.Text := 'First';
cb2 := enquiry.GetComboboxByName('AutomatedCombobox2');
writeln('Combo2 text is ' + cb2.Text);
cb2.Text := 'No there';
cb2 := enquiry.GetComboboxByName('AutomatedCombobox2');
writeln('Combo2 text is ' + cb2.Text);
cb2.Text := 'Third';
cb2 := enquiry.GetComboboxByName('AutomatedCombobox2');
writeln('Combo2 text is ' + cb2.Text);
// Now try and get stuff from TreeView
tv1 := enquiry.getTreeViewByIndex(0);
tvi := tv1.GetItem('Sub-SubItem');
tvi.select;
menu := enquiry.GetMainMenu;
exit1 := menu.MenuItem('File|Exit');
if assigned(exit1) then
exit1.Click;
WriteLn('Press key to exit');
ReadLn;
application.Kill;
end.