Der MPR mit deutsch/englisch/französischen OS

Moderator: MVogt

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

Der MPR mit deutsch/englisch/französischen OS

Post by Theo_Gottwald » 23. Sep 2013, 10:42

Hat man mit dem InstaRec eine Installation oder Deinstallation aufgezeichnet und läßt diese ablaufen,
sieht man wie der MPR die Buttons klickt.

Auch wenn man die Fenster verschiebt findet der MPR trotzdem die richtigen Buttons und klickt genau diese.

Das tut er in dem er sich nicht etwas irgendwelche Koordinaten merkt, sondern in der Regel den Text der auf den Buttons steht - also den Text den wir als "menschliche Benutzer" auch verwenden. Wenn da auf dem Button "Weiter" steht, dann steht typischerweise in dem MPR-Script auch so ein Befehl:

Code: Select all

GCW\\2\TBitBtn\Weiter|w45
Davon ist einiges doppelt gemoppelt, um einfach den Button "Weiter" zu klicken würde auch das hier ausreichen:

Code: Select all

SAC\button\Weiter
MLC\
oder

Code: Select all

STW\#32\Setup
' Das hier findet den Button im lokalisierten Fenster.
AFT\Weiter
MLC\ 
Der MPR zeichnet etliche Redundanz auf um ganz sicher zu gehen, dass auch wirklich der genau richtige Button lokalisiert wird. Meistens wäre das unnötig, es sei denn man hat mehrere passende Fenster zur Zeit geöffnet.

Was passiert nun, wenn wir unser Skript auf ein anderssprachiges OS umziehen?
Da steht ja "Suche den Button mit dem Text 'Weiter'."
Auf einem englischen OS würde da vielleicht "Next" stehen, statt "Weiter".

Dafür bietet der MPR verschiedene Lösungsmöglichkeiten (ODER-Pattern, Baumsuche, SWN\, Fenster-ID,Acc.-Engine).

Das einfachste ist oft, dass man den englischen und den deutschen Text angibt, und dazwischen ein "ODER" Zeichen "||" schreibt. Also so:

Code: Select all

SAC\button\Weiter||Next
MLC\
Und schon findet der Befehl sowohl im englischen als auch im deutschen Windows den richtigen Button.
"Suche 'Weiter' ODER 'Next' bedeutet das dann.

Man findet dieses "ODER" Pattern in der Hilfe unter "Suchbegriffe". Und dort steht dann:
1.4. Angabe von zwei Zeichenfolgen, verbunden durch "||" (z.B. "command||button" für die Fensterklasse bzw. den Suchbegriff). Dann wird nach einem Fenster gesucht, in dessen Klassenbezeichnung entweder die erste oder die zweite Zeichenfolge vorkommt ("thundercommandbutton" würde auch diese Vorgabe erfüllen).
Gleiches gilt für die Fensterbeschriftung.
Was auch zeigt dass dieses Verfahren nicht nur für Fenstersuche sondern auch für viele andere Befehle zur Verfügung steht. Wenn man nun Texte hat, die gemeinsame Komponenten beinhalten hat man es einfacher. Zum Beispiel:

"English Language Setup Program" und "Deutschsprachiges Setup Programm".
Hier kann man die Tatsache ausnutzen, dass man ja nie den gesamten Text benötigt sondern immer nur einen Teil davon. Und kann so einfach schreiben:

Code: Select all

STW\*\Setup 
und hat beide Fälle zugleich abgedeckt. Und vielleicht auch noch alle anderen Sprachen. Im Umgekehrten Fall, also wenn man so etwas hat:

"Setup Version 3.24 german" und "Setup Version $.10 german" kann man stattdessen die UND Funktion verwenden um beide Fälle abzudecken. Sie wird in der Hilfe wie folgt erklärt:
1.2. Angabe von zwei Zeichenfolgen, verbunden durch "&&" (z.B. "thunder&&button" für die Fensterklasse bzw. den Suchbegriff). Dann wird nach einem Fenster gesucht, in dessen Klassenbezeichnung beide Zeichenfolgen enthalten sind ("thundercommandbutton" würde diese Vorgabe erfüllen). Gleiches gilt für die Fensterbeschriftung.
Auf diese Weise lassen sich "Internationalisierte" Skripte komfortabel erstellen, wenn man weiß, was in den jeweiligen Sprachen auf den Buttons geschrieben steht.

Und dadurch dass der Robot jeweils mit ODER auf beide reagiert sind auch gemischtsprachige Skripte kein Problem.
Diese hat man, wenn man während dem Setup das in einer bestimmten Sprache abläuft, Dialoge bekommt, die vom OS stammen, welches ggf. eine andere Sprache haben kann.

So weit so gut. Hier noc hder Hinweis, dass die Befehle um AGR\ also auch unser AFT\ (oben) auch diese Patterns verstehen, und darüberhinaus noch weitere:

Code: Select all

Pattern   	Abkürzung	Beispiel
{&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 beliebig
{&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:} 
Hier ein Auszug aus der Hilfe:
Prinzipiell sind auch Verschachtelungen möglich, solange die Klammern korrekt gesetzt werden, also zum Beispiel:

{{{Text1&ORText2}&ANDTHEN:{Text1&ORText4}}&ANDTHEN:Text2}

Neu hinzugekommen ist der fortschrittliche "Tippfehler-Operator"; Beispiel:
{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 eine %-Zahl angegeben, die die Wortähnlichkeit angibt, ab der Text der Bedingung entspricht oder nicht.

Beispiel:
{text1&TOLERANT:89}
{text1&TOLERANT:&DOCAPS:89}
Zum Abschluß noch drei wichtige Hinweise zu dem Thema:

1. Der MPR bietet auch Möglichkeiten Elemente textunabhängig zu lokalisieren. Dieses sind zum Beispiel: die Baumsuche, SWN\, Fenster-ID,Acc.-Engine. Diese (Baumsuche, SWN\) werden jedoch meistens nur genutzt um solche Elemente zu ermitteln, deren Text sich ändert.

2. Mehr Details zu den Such-Patterns finden Sie in der Hilfe unter "Suchbegriffe".

3. Es hat in älteren Versionen ein Problem gegeben, wobei ausgerechnet der oft genutzte GCW\-Befehl mit dem OR-Operator nicht funktioniert hatte. Dieser Fehler ist jetzt beseitigt worden. Wenn Sie das nutzen möchten, holen Sie sich das Neueste MPR Update.

Hier ein Beispielskript, mit dfem Sie testen können ob sie die aktuellste Version haben:

Code: Select all

EXX\?exepfad\testapp.exe

STW\#32770\$sp$sample application|w165
GCW\1000\1\but||zak\tonx||button1|w165
MLC\ 
Der "Button1" in der TestApp muß angefahren werden. Ansonsten holen Sie sich einfach das aktuellste Update beim Support.

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 5 guests