Der WEB- und Office-Elemente Suchbefehl AGR\ des MPR

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Der WEB- und Office-Elemente Suchbefehl AGR\ des MPR

Post by Theo_Gottwald » 22. Oct 2017, 13:19

AGR\ ermöglicht die Steuerung von WEB- und Office-Anwendungen mit dem Matrix42 Package Robot.

AGR\ gehört zu einer Familie von "8er" Befehlen. Siese sind eine Weiterentwicklung der "Fenster-basierten" Suchbefehle die früher hauptsächlich verwendet wurden, die jedoch in Browser- und Office-Anwendungen nicht mehr überall funktionieren.
Weitere Befehle aus dieser Gruppe sind u.a. AFT\ (Text-Suchbefehl) und AFV\.
Wer Skripte zur nativen Steuerung von Browser und Office machen will, kann diese Befehle dafür verwenden.

1) Internationale Skripte (Skripte die auf Masken in mehreren Sprachen reagieren)
Nebenbei werden mit AGR\ an vielen Stellen beliebig viele Internationalisierungen möglich, wo der Standard MPR nur 2 Sprachen parallel unterstützt.

2) Suchpattern
Man kann mit dem MPR fast in jedem Befehl durch Verwendung der Suchpatterns 2 Internationalisierungen vornehmen, zum Beispiel:

Code: Select all

AFO\42\Deutscher Name||English name
3) AGR\
Mit dem Befehl AGR\ kann man nun unbegrenzt viele Internationalisierungen umsetzen. Zum Beispiel:

Code: Select all

AGR\42\Deutscher Name&OR:English name&OR:Spanisch nombre etc.
Es gibt bei AGR\ im Bezug auf die Patterns fast keine Beschränkungen wie unten zu sehen ist.

Wird AGR\zum Suchen von Buttons eingesetzt und nur eine begrenzte Anzahl Buttons stehen zur Verfügung, könnte man europäische Sprachen sogar mit einem FUZZY-Logic-Pattern erfassen:

Wenige Zeichen wie hier:

Code: Select all

AGR\42\Name&FUZZY:45
genügen um alle Dialekte einzuschliessen.

4) AGR\ statt AFO\

AGR\ ersetzt auch den MPR-Befehl AFO\ in den Fällen, wo eine einfache und schnelle Suche benötigt wird, die so schnell wie möglich ausgeführt werden soll.

Dies ist zum Beispiel auf großen, sich ändernden HTML-Seiten oder in ASP-Anwendungen der Fall.

Das AGR\ stammt aus dem SPR und verwendet intern eine andere Pattern-Engine als alle anderen MPR Befehle.
Daher müssen hier andere Jokerzeichen/Wildcards verwendet werden als in den übrigen MPR-Befehlen. Auch deshalb kann AGR\ in der Version 8.5 nicht mit der "gelben Liste" aufgezeichnet werden, sondern muss manuell codiert werden.

Die Syntax lautet:

Code: Select all

AGR\Role\Name\Value\Number[\Flag][:Label]
Als Suchfenster wird intern das zuletzt lokalisierte Fenster eingesetzt.

5) Abfragen ob etwas gefunden wurde
Ob das gesuchte Element gefunden wurde, kann mit dem Befehl IIF\ festgestellt werden.
Um mit AGR\ auf das Erscheinen eines Elementes auf einer WEB-Seite zu warten würde man so vorgehen:

Code: Select all

Beispiel:

CAW\ieframe\theo
BOP\www.fa2.de
WSC\
SWP\12,2|775,932
HTV\$$MYW

:Lab
' Fenster lokalisieren
SCW\$$MYW
AGR\42\Login
IIF\
TDL\100
 GOTO Lab
EIF\
' Fortfahren, wenn Element vorhanden ist
MMV\
oder einfacher:

Code: Select all

:Lab
TDL\120
' Fenster lokalisieren
SCW\$$MYW
AGR\42\Login\\\:Lab
' Fortfahren wenn Element vorhanden ist
MMV\
Bei der Befehlsausführung wird der aktuelle Punkt gesetzt und das gefundene Element in die Bildmitte gescrollt.

6) Die Such-Patterns für AGR\
Das AGR\ verwendet anstelle der MPR-Standard-Suchmuster diese weiterentwickelten Suchmuster:

Code: Select all

{&DOCAPS:}             {&0:}             {&DOCAPS:ExPE} -> Gross-
Kleinschreibung beachten.
 {&OR:}                 {&1:}             {Text1&OR:Text2} -> A oder B oder beides
 {&XOR:}                {&2:}             {Text1&XOR:Text2} -> A oder B
 {&AND:}                {&3:}             {Text1&AND:Text2} -> A und B Reihefolge egal
 {&ANDTHEN:}            {&4:}             {Text1&ANDTHEN:Text2} -> A dann B
 {&FUZZY:}              {&5:}             {{Text1}&FUZZY:[value]} -> ungefähr A
 {&TOLERANT:}           {&6:}             {{Text1}&TOLERANT:[value]} -> A zu min. X% 
 {&NOT:}                {&7:}             {&NOT:{Text1}} -> Darf nicht vorkommen
 {&EXACT:}              {&8:}             {&EXACT:Text1} -> genau A (Ohne Grossklein)
 {&NOTEXT:}             {&9:}             {&9:} 

 {&t:}     - Always True
 {&f:}     - Always False
7) Die Regeln für die Patterns
Die einfachen Operatoren können beliebig oft wiederholt werden, also:

Code: Select all

{Text1&OR:Text2&OR:Text2&OR:Text2&OR:Text2... usw.}
Es gibt keine Beschränkung auf 2 Operatoren, wie bei den bisherigen MPR-Suchmustern , also bei AFO\(?), STW\ etc.
Dadurch sind beliebig viele Internationalisierungen im gleichen Script denkbar.

Das {&EXACT:Text1}-Pattern ersetzt das MPR Standard-Suchmuster "Text1&&" (&& am Ende).

Prinzipiell sind auch Verschachtelungen möglich, solange man die Klammern korrekt setzt,

Also zum Beispiel:

Code: Select all

{{{Text1&ORText2}&ANDTHEN:{Text1&ORText4}}&ANDTHEN:Text2}
Neu hinzugekommen ist der fortschrittliche "Tippfehler-Operator"
Beispiel:

Code: Select all

{Text1&FUZZY:5} 


Die Zahl hinter dem "&FUZZY:" gibt an, wie oft man sich vertippen darf, so dass der Text trotzdem erkannt wird.

Ebenso neu hinzugekommen ist der "TOLERANT" Operator.
Hierbei wird ein %-Zahl angegeben, die die Wortähnlichkeit angibt, ab der Text der Bedingung entspricht oder nicht.

Beispiel:

Code: Select all

{Text1&TOLERANT:89}
Bei allen Operatoren kann jeweils das &DOCAPS: verwendet werden. Dadurch wird die jeweilige Klammerebene auf Gross/Klein-Schrift umgeschaltet, berücksichtigt dann also Gross- und Kleinschreibung.

Beispiele:

Code: Select all

' Ein Button mit der Beschriftung "Senden" soll lokalisiert werden, es genügt die Angabe eines Teils
' der Beschriftung um den Button zu lokalisieren
STW\opusapp\ - nachricht|w30
GCW\0\3\#32770\*|w30
AGR\43\Sende
MMV\

' Der Button heißt "Senden" ohne Groß- Kleinschreibung zu unterschieden.
' Ein Button mit der Beschriftung "Senden" soll lokalisiert werden
' Würden wir hier auch nur "Sende" angeben (ohne "n") würde der Button nicht gefunden!
STW\opusapp\ - nachricht|w30
GCW\0\3\#32770\*|w30
AGR\43\&EXACT:Senden
MMV\

' In diesem Beispiel wollen wir dass auch Gross- Kleinschreibung berücksichtigt wird.
' Dazu verwenden wir den "&DOCAPS: -Operator.
' Würden wir hier &EXACT:&DOCAPS:SEnden angeben als Parameter, würde der Button nicht gefunden!
STW\opusapp\ - nachricht|w30
GCW\0\3\#32770\*|w30
AGR\43\&EXACT:&DOCAPS:Senden
MMV\

' Nun wenden wir uns einer WEB-Seite zu, sicherlich ein Haupteinsatzgebiet für AGR\
' Hier suchen wir einen Text (Role 42), der die Worte "Hardware" und "Journal" enthält.
' Dabei achten wir nicht auf Gross-/Kleinschreibung

CAW\ieframe\theo
BOP\www.fa2.de
WSC\
SWP\12,2|775,932
AGR\42\Hardware&AND:Journal
MMV\


' Allerdings würde im vorigen Beispiel auch ein Text "Journal der aktuellen Hardware" gefunden werden.
' das wollen wir nicht, daher nehmen wir den &ANDTHEN: Operator.
' Nun muss der zweite Term nach dem ersten im Text stehen!

CAW\ieframe\theo
BOP\www.fa2.de
WSC\
SWP\12,2|775,932
AGR\42\manager&ANDTHEN:magazin
MMV\

Diese Operatoren können auch aneinandergereiht werden, zum Beispiel wenn wir "Computer Partner News" suchen:

Code: Select all

CAW\ieframe\theo
BOP\www.fa2.de
WSC\
SWP\12,2|775,932
AGR\42\ompu&ANDTHEN:ner&ANDTHEN:ews
MMV\

' Oder auch mit Berücksichtigung der Gross- und Kleinschreibung im jeweiligen Term:
AGR\42\ompu&ANDTHEN: &DOCAPS:ner&ANDTHEN:&DOCAPS:ews

oder auch komplexer:
AGR\42\{&DOCAPS:Computer&AND:{ompu&ANDTHEN:&DOCAPS:ner&ANDTHEN:&DOCAPS:ews}}

' Die AGR\Suchpattern kann man abkürzen, um Schreibarbeit zu sparen.
' Im Fall oben würde das so aussehen, wäre allerdigns schlechter verständlich.
AGR\42\{&0:Computer&3:{ompu&4:&0:ner&4:&0:ews}}

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 2 guests