btApplication Automation
- Leistungsmerkmale
-
Die Anwendung btApplication Automation (btAppAutomation) ermöglicht es Anwendungsabläufe automatisiert ablaufen zulassen. Dies erfolgt wahlweise einmalig oder in wiederkehrenden Arbeitsabläufen. Alsunterstützendes Werkzeug wird auf die Bibliothek von Selenium zurückgegriffen. Die Anwendungen können dabei als Webanwendung oder Standard API vorliegen.
Die Anwendung besteht aus den Teilwerkzeugen:
- Automationsprogramm (btAppAutomation - siehe Bild unten) und einem
- Recorder (btAppAutomationRecorder).
- (FREEWARE)
- Systemvoraussetzungen
-
Architektur der Hardware
Spezifikation
Prozessor
2x Logische Prozessoren
Hauptspeicher [GB]
2
Festplattenspeicher [MB]
50
Architektur der Software
Spezifikation
Betriebssystem
Windows 10/11 (x86 & x64)
SDK
Microsoft .NET Framework Version 4.8.1
Redistributable Package
Die Anwendung btApplication Automation (btAppAutomation) ermöglicht es Anwendungsabläufe automatisiert ablaufen zulassen. Dies erfolgt wahlweise einmalig oder in wiederkehrenden Arbeitsabläufen. Alsunterstützendes Werkzeug wird auf die Bibliothek von Selenium zurückgegriffen. Die Anwendungen können dabei als Webanwendung oder Standard API vorliegen.
Die Anwendung besteht aus den Teilwerkzeugen:
- Automationsprogramm (btAppAutomation - siehe Bild unten) und einem
- Recorder (btAppAutomationRecorder).
- (FREEWARE)
Architektur der Hardware |
Spezifikation |
---|---|
Prozessor |
2x Logische Prozessoren |
Hauptspeicher [GB] |
2 |
Festplattenspeicher [MB] |
50 |
Architektur der Software |
Spezifikation |
---|---|
Betriebssystem |
Windows 10/11 (x86 & x64) |
SDK |
Microsoft .NET Framework Version 4.8.1 |
INI File Configuration
The configuration file supports the following functions:
Key name |
Value |
Description |
[General] |
||
ProcessTakeOver |
False |
By setting the value to “True” the application can hire an existing process from an application enforced to run in automation mode. A value of “False” creates a new process. |
DateTimeFormatMeasure |
dd.MM.yyy HH:mm:ss.fffffff |
For the log file analysis |
DefaultWebBrowser |
Firefox |
The browser which will be used for web automation. |
OpenFolder |
C:\LastOpenFolder |
Last used folder for the automation configuration files. |
ConfigurationFile |
Automation_ITSM_Login_DE.ini |
The last used automation configuration file. |
UseAutoSizeForm |
False |
The own application can be stretched by setting the value to “True”. |
[Pfade] |
||
PfadTemp |
AppData.Path\TMP\ |
Folder where screenshots are stored in case of failures. |
Automation Configuration INI File
The configuration file supports the following functions. The function description is made by example.
Key name |
Value |
Description |
[General] |
||
ApplPath |
..\..\CryptoCalc\bin\Debug |
API automation path |
ApplName |
CryptoCalc.exe |
API automation application |
ApplHeader |
CryptoCalc |
API header information |
ControlSequenceLoop |
True |
Controls whether the application is running in specified loops. |
WebPath |
http://onbmc/arsys |
HTTP path for application |
WebDriverWaitGlobal |
3 |
Time delay to compensate timing issues between web server and web browser. |
WebDriverKeepOpen |
False |
Keep the web browser open after the last automation run. |
[ControlSequenceLoop] |
||
LoopStart |
0 |
Start with ControlSequence0 |
LoopEnd |
3 |
End with ControlSequence3 and then go to ControlSequence0 |
LoopInterval |
3 |
After 3 time go to next Control Sequence = ControlSequence4 |
[ControlSequence] |
|
AutomationId;Increment;IncrementBy |
ControlSequence0 |
Textbox1;True;5 |
Go to [Textbox1], increment value by “5” and continue as described in target group. |
ControlSequence1 |
Radiobutton2;False;0 |
Go to [Radiobutton2], don’t increment value and continue as described in target group. |
ControlSequence2 |
Button3;False;0 |
Go to [Button3], don’t increment value and continue as described in target group. |
ControlSequence3 |
Textbox4;False;0 |
Go to [Textbox4], don’t increment value and continue as described in target group. |
ControlSequence4 |
Menu4;False;0 |
Go to [Menu4], don’t increment value and continue as described in target group. |
[Textbox1] |
|
AutomationId;<value to enter> |
Textbox0 |
textBox1;Hello! |
Go to “textBox1” and enter “Hello!” |
[Radiobutton2] |
|
AutomationId;<label> |
Radiobutton0 |
radioButton1;DES Encrypt |
Go to “radioButton1” which is labeled as “DES Encrypt” and select it. |
[Button3] |
|
AutomationId;<label> |
Button0 |
button1;Compute |
Go to “button1” which is labeled as “Compute” and select it. |
[Textbox4] |
|
AutomationId;<output text> |
Textbox0 |
textBox2;<WAIT_FOR_OUTPUT> |
<OUTPUT> - output in object field <WAIT_FOR_OUTPUT> - wait until output in object field has been executed |
[Menu4] |
|
Name;<label> |
Menu0 |
File;File |
Go to “File” which is labeled as “File” and select it |
Menu1 |
Exit;Exit |
Go to “Exit” which is labeled as “Exit” and select it |
[ControlSequenceLoopWeb] |
||
LoopStart |
0 |
Start with ControlSequence0 |
LoopEnd |
8 |
End with ControlSequence8and then go to ControlSequence0 |
LoopInterval |
3 |
After 3 time go to next Control Sequence = ControlSequence4 |
[ControlSequence] |
|
AutomationId;Increment;IncrementBy |
ControlSequence0 |
FindElementBy1;False;0; |
Go to [FindElementBy1], don’t increment value and continue as described in target group. |
ControlSequence1 |
FindElementBy2;False;0; |
Go to [FindElementBy2], don’t increment value and continue as described in target group. |
ControlSequence2 |
FindElementBy3;False;0; |
Go to [FindElementBy3], don’t increment value and continue as described in target group. |
ControlSequence3 |
WebDriverWait4;False;0; |
Go to [WebDriverWait4], don’t increment value and continue as described in target group. |
ControlSequence4 |
WebDriverWait5;False;0; |
Go to [WebDriverWait5], don’t increment value and continue as described in target group. |
ControlSequence5 |
FindElementBy6;False;0; |
Go to [FindElementBy6], don’t increment value and continue as described in target group. |
ControlSequence6 |
WebDriverWait7;False;0; |
Go to [WebDriverWait7], don’t increment value and continue as described in target group. |
ControlSequence7 |
FindElementBy8;False;0; |
Go to [FindElementBy8], don’t increment value and continue as described in target group. |
ControlSequence8 |
WebDriverWait9;False;0; |
Go to [WebDriverWait9], don’t increment value and continue as described in target group. |
[FindElementBy1] |
|
Function;Id;<value to enter> |
FindElementById_TextField0 |
n/a;username-id; |
Only go to field “username-id” |
FindElementById_TextField1 |
Clear;username-id;n/a |
Clear dialog field |
FindElementById_TextField2 |
SendKeys;username-id; |
Enter the username “Allen” into the dialog field. |
[FindElementBy2] |
|
Function;Id;<value to enter> |
FindElementById_TextField0 |
n/a;pwd-id; |
Only go to field “pwd-id” |
FindElementById_TextField1 |
Clear;pwd-id;n/a |
Clear dialog field |
FindElementById_TextField2 |
SendKeys;pwd-id; |
Enter the password “password” into the dialog field. |
[FindElementBy3] |
|
Function;AutomationId;<label> |
FindElementByXPath_Button0 |
n/a;//input[@value= Log In]; |
Go to button “Log In” |
FindElementByXPath_Button1 |
Click;//input[@value= Log In]; |
Click on button “Log In” |
[WebDriverWait4] |
|
Function;AutomationId;<label> |
WebDriverWaitForPageToLoad_ |
n/a;n/a;10 |
Wait max. 10 seconds before continue. |
[WebDriverWait5] |
|
Function;AutomationId;<label> |
WebDriverWaitById_Id0 |
n/a;WIN_0_300000044;30 |
Wait max. 30 seconds for object “WIN_0_300000044” continue |
[FindElementBy6] |
|
Function;AutomationId;<label> |
FindElementById_Link0 |
n/a;WIN_0_300000044; |
Go to object “WIN_0_300000044” |
FindElementById_Link1 |
Click;WIN_0_300000044;n/a |
Click on object “WIN_0_300000044” |
[WebDriverWait7] |
|
Function;AutomationId;<label> |
WebDriverWaitClassName_ |
n/a;ReturnHome;10 |
Wait max. 10 seconds before continue. |
[FindElementBy8] |
|
Function;AutomationId;<label> |
FindElementByClassName_Link0 |
n/a;ReturnHome; |
Go to link “ReturnHome” |
FindElementByClassName_Link1 |
Click;ReturnHome;n/a |
Click on link “ReturnHome” |
[WebDriverWait9] |
||
WebDriverWaitForPageToLoad_ |
n/a;n/a;10 |
Wait max. 10 seconds before continue. |
API Application
Configuration file
- Configuration file for the automation execution (either API or Web)
Output
- Text Box – The output text is in sequential order
- Tree View - The output text is in sequential order, but build in tree view
Application Type
- API application automation execution
- Web application automation execution
Take over running application
- By setting the check mark the application can hire an existing process from an application enforced to run in automation mode.
Show Chart by Loop
- The chart analysis is considering loop sequences.
How to collect API information for automation INI file
Usually use one of the following tools “inspect_x86.exe” or “inspect_x64.exe” provided by the Microsoft Windows SDK package.
Sample from automation INI file:
;=== API Section starts here ==========================
[ControlSequence]
;---------------|AutomationId;Increment;IncrementBy
;Increment is only valid for Textboxes
ControlSequence0=Textbox1;True;5
ControlSequence1=Radiobutton2;False;0
ControlSequence2=Button3;False;0
ControlSequence3=Textbox4;False;0
ControlSequence4=Menu4;False;0
[Textbox1]
;-------|AutomationId;<value to enter>
Textbox0=textBox1;Hello!
How the element names were identified by using the API inspect tool:
- Start tool “inspect_x64.exe”
- Then click on element, which should be part of the automation.
- Collect the name
Web application
Keep Web Browser open
- By setting the check mark the web browser kept open after the last automation run.
How to collect Web element information for automation INI file
The process to collect the element names from browser page and to put it into the automation INI file.
Sample from automation INI file:
;=== Web Browser Section starts here ==========================
[ControlSequenceWeb]
;---------------|AutomationId;Increment;IncrementBy
;Increment is only valid for TextFields
ControlSequence0=FindElementBy1;False;0;IdTextField
ControlSequence1=FindElementBy2;False;0;IdTextField
ControlSequence2=FindElementBy3;False;0;Button
ControlSequence3=WebDriverWait4;False;0;WaitForPageToLoad
ControlSequence4=WebDriverWait5;False;0;Id
ControlSequence5=FindElementBy6;False;0;IdLink
ControlSequence6=WebDriverWait7;False;0;ClassName
ControlSequence7=FindElementBy8;False;0;ClassNameLink
ControlSequence8=WebDriverWait9;False;0;WaitForPageToLoad
[FindElementBy1]
;-------------------------|Id;<value to enter>
FindElementById_TextField0=Clear;username-id;IdentifyObjectFirst
FindElementById_TextField1=SendKeys;username-id;Allen
How the element names were identified by using the web browser debug function:
- Set Web Browser into debug mode – in Firefox use press [F12]
- Got to [Inspector] and click on [Animation]
- Then click on element, which should be part of the automation.
- Collect the name