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

Moderator: MVogt

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

Beitragvon Theo_Gottwald » 22. Okt 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: Alles auswählen
AFO\42\Deutscher Name||English name


3) AGR\
Mit dem Befehl AGR\ kann man nun unbegrenzt viele Internationalisierungen umsetzen. Zum Beispiel:

Code: Alles auswählen
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: Alles auswählen
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: Alles auswählen
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: Alles auswählen
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: Alles auswählen
: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: Alles auswählen
{&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: Alles auswählen
{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: Alles auswählen
{{{Text1&ORText2}&ANDTHEN:{Text1&ORText4}}&ANDTHEN:Text2}


Neu hinzugekommen ist der fortschrittliche "Tippfehler-Operator"
Beispiel:

Code: Alles auswählen
{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: Alles auswählen
{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: Alles auswählen
' 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: Alles auswählen
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}}
Benutzeravatar
Theo_Gottwald
 
Beiträge: 248
Registriert: 03. Okt 2009, 08:57
Wohnort: Herrenstr.11 * 76706 Dettenheim

Zurück zu Package Robot

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste