Sikuli verwenden, um Text zu verifizieren

Ich benutze die Sikuli IDE, um eine Anwendung zu testen, die Daten in einem Textfeld zurückgibt. Zum Beispiel suche ich das Namensfeld für meinen Testwert 'FirstName01', die Applikation gibt den Namen und die Adresse in verschiedenen Textfeldern zurück.

Ich überprüfe dann die Daten mit der Funktion existiert () in Sikuli. Um dies zu tun, klicke ich auf die vorhandene Funktion oben links in der IDE und benutze das + Werkzeug, um den Text auszuwählen, den ich überprüfen möchte. In diesem Fall sind FirstName01 und Location01. Ich setze dann die Ähnlichkeitseinstellung auf der Registerkarte MatchingPreview auf .98 (ich finde, wenn ich es auf 1.0 Sikuli schreibe den Test, auch wenn ich die richtigen Daten zurück bekomme).

Wenn ich den Test auf der Suche nach FirstName01 laufe, bekomme ich korrekte Ergebnisse zurück und Sikuli wirft keinen Fehler auf. Mein Problem ist, wenn ich suche und zurückkehren FirstName02 in einem Versuch, die Fehlerbedingung zu generieren, die die vorhandene Funktion übergibt, obwohl sie nach FirstName01 sucht. Es scheint, dass Sikuli das letzte Zeichen der Daten nicht überprüft. Es scheint, andere Zeichen zu verifizieren, denn wenn ich nach FirstName21 suche, existiert die Funktion, die ein Fehler auslöst, wie es sollte. Ist jemand auf dieses Problem gestoßen und wenn ja, wie hast du es gelöst?

Mein Code ist unten

If exists(FirstName01): popup('passed') else: popup('failed') 

Gibt es eine andere Möglichkeit, Daten zu überprüfen?

2 Solutions collect form web for “Sikuli verwenden, um Text zu verifizieren”

Anstatt die Verwendung von Exists () zu verwenden, um Text zu verifizieren (weil die OCR in sikulis IDE ziemlich unzuverlässig ist), wenn es irgendeine Möglichkeit gibt, den Text zu erhalten, den du in die Zwischenablage auswerten möchtest, kannst du Env.getClipboard () verwenden, um sie auszuwerten Mit viel mehr genauigkeit

Um es in die Zwischenablage zu bringen, können Sie mehrere Ansätze verwenden:

  1. DragDrop (), um den Text hervorzuheben
  2. Vielleicht markiert man in den Textfeld den Text für Sie automatisch
  3. Verwenden Sie doubleClick () auf den Text (je nachdem, was Sie versuchen zu markieren, also könnte es nicht alles)
  4. Vielleicht der zuverlässigste Weg, um es zu markieren – Tab in das Textfeld oder klicken Sie () innerhalb des Textfeldes und wählen Sie alle:

.

 click(someImageNearTextBox).offset() #get your cursor inside the textbox type("a",KeyModifier.CTRL) #select all to highlight the text 

Sobald Ihr Text hervorgehoben ist, können Sie so fortfahren:

 type("c",KeyModifier.CTRL) #copy selection to the clipboard firstName = Env.getClipboard().strip() #assign contents of clipboard to a variable 

Dann können Sie es für alle Vergleiche verwenden, die Sie wollen:

 if firstName == "FirstName01": popup('passed') else: popup('failed') 

Die Schwäche dieses Ansatzes ist, dass, wenn Sie irgendwelche Sonderzeichen in der Textbox haben, kann es nicht richtig auswerten.

Ok, vierte Auflage auf diese Antwort … Entschuldigung. Heute ist mein zweiter Tag auf Sikuli und ich bin auf Python anfangen.

Ich habe die autoKarma Antwort angepasst. Auf meinem Textfeld (mehrzeilig) STRG + A funktioniert nicht, um den ganzen Text auszuwählen. Ich benutze STRG + Home, um zum Anfang des Textfeldes zu gelangen und STRG + UMSCHALT + Ende, um das Ende zu wählen, das den Text auswählt.

Typ (Key.HOME, KeyModifier.CTRL)

Typ (Key.END, KeyModifier.CTRL | KeyModifier.SHIFT)

Also bekomme ich ein Problem. Es funktioniert von Hand, aber nicht auf Sikuli. Ich sehe den Grund, dass ich das gefunden habe: Es gibt einen Bug auf Sikuli (auf Java in der Tat), aber es ist ein workaroud.

KeyDown (Key.SHIFT) funktioniert nicht bei Win mit Num-Lock an – schalte es aus 😉

https://answers.launchpad.net/sikuli/+question/143874

Python ist die beste Programmiersprache der Welt.