2010-01-09 7 views
8

Ich muss eine Software testen, die einige Mausbewegungen als "Gesten" behandelt. Für solch eine Aufgabe muss ich die Mausbewegung von Punkt A nach Punkt B emulieren, nicht in gerader Linie, sondern wie eine echte Maus sich bewegt - mit Kurven, ein bisschen Jaggedy etc. Gibt es eine verfügbare Lösung (Algorithmus/Code selbst, nicht eine Bibliothek/exe), die ich benutzen kann?Algorithmus zur Emulation der Mausbewegung als Mensch?

Natürlich kann ich eine einfache sinusförmige Mathematik selbst schreiben, aber das wäre eine sehr krude Nachahmung einer menschlichen Hand, die eine Maus führt. Vielleicht wurde eine solche Aufgabe schon mehrfach gelöst, und ich kann mir einfach einen vorhandenen Code ausleihen. :)

Antwort

7

Werfen Sie einen Blick auf die Mouse.simba Datei, die Teil der SRL Framework ist, ein Makro-Programm entwickelt, um mit Online-Spielen wie Runescape zu arbeiten. Runescape hat umfangreiche Makro-Erkennungsfunktionen, so dass alle Teile des SRL-Frameworks entwickelt wurden, um so menschlich wie möglich zu aussehen - insbesondere die Mausfunktionen.

Der Code ist in Pascal, sollte aber ziemlich einfach zu lesen sein. Sehen Sie sich die MMouse() Prozedur von BenLand100 an. Sie bewegt sich sehr realistisch und macht fortgeschrittene Bewegungen wie Schleifen und Überschießen ihres Ziels sowie kontinuierlich variierende Beschleunigungen und Richtungen (hat jetzt auch Laptop Touchpad Bewegungen). Wenn Sie es testen möchten, müssen Sie SIMBA und enable the SRL-include herunterladen.

+0

Ist Pascal case sensitive oder nicht? :) – grigoryvp

+2

Nein, es ist nicht Groß-und Kleinschreibung. Der Standard besteht darin, alle Wörter in Prozeduren/Funktionsnamen (wie ThisIsAProcedure und AndSoIsThis) groß zu schreiben und diesen Typ der Kapitalisierung für Variablen zu verwenden. Viele der Funktionen, die verwendet werden, beziehen sich auf den Rest des Frameworks oder sind in SCAR wie GetMousePos integriert. –

4

Wie wäre es, einige echte Gesten aufzunehmen und einen Weg zu finden, sie wiederzugeben? Das wird so real sein wie alles, was man synthetisieren kann, und es wäre wiederholbar (was zum Testen gut ist).

+0

Es ist ein guter Weg, aber es wird nur sicherstellen, dass das Programm in einigen vordefinierten Bewegungen arbeitet. Und ich möchte es eine Million verschiedener Bewegungen zu testen :). – grigoryvp

+0

Dann sollten Sie vielleicht mit ein paar aufgezeichneten Pfaden beginnen und Fuzz-Tests anwenden, um Millionen von Varianten zu generieren. –

1

Erstellen Sie eine einfache Test-App, die alle zwei Sekunden einen zufällig positionierten Punkt anzeigt. Folgen Sie dem Punkt selbst und zeichnen Sie Ihre natürlichen Mausbewegungen auf.

1

Eine Möglichkeit, dieses Verhalten zu erfassen, könnte darin bestehen, ein unsichtbares "Raster" auf dem Bildschirm zu definieren, in dem Sie verfolgen, auf welchen Quadraten sich die Maus auf ihrer Reise bewegt.

Wenn dieser Teil ordnungsgemäß funktioniert und aufzeichnet, müssen Sie ihn nicht mit Tests bombardieren, da Sie wissen, dass jedes Rasterquadrat seine Aufgabe erfüllt. Die Interpretation der Geste wird dadurch ebenfalls erleichtert.