Website automatisieren mit Pixel

  • Hallo,

    ich möchte einen breich einer website automatisieren eigentlich ist soweit auch alles fertig. Mein Script sucht aus einer Tabelle über pixelsearch grüne Felder und klickt diesen an (dann wird dort was gemacht) wenn er fertig ist wird das gerade bearbeitet feld schwarz und er macht mit dem nächsten grünen weiter so lange bis alle schwarz werden.

    bis jetzt kein problem

    aber es kann aber passieren das er ein grünes Feld anklickt. Dort nicht weiter arbeitet (ist so gewollt) und dann klickt er sich halt immer wieder selber an weil das Feld nicht schwarz wird - obwohl er eigentlich beim nächsten schwarzen weiter machen sollte. Versteht ihr was ich meine?

    es sieht z.B. so aus

    ______________________|
    |_1_(grün)_____________|
    |_2_(schwarz)__________|
    |_3_(schwarz)__________|
    |_4_(schwarz)__________|
    |_5_(grün)_____________|

    anstatt jetzt mit zeile 3 weiter zu machen (weil auf 2 nichts ausgeführt wird) bleibt er logischer weise auf Zeile 2 hängen weil Pixelsearch immer von links nach rechts und von oben nach unten sucht.

    Habe ich die Möglichtkeit, das der gerade angeklickte bereich übersprungen wird? Oder das ich auch mal von unten nach oben suchen kann?

    • Offizieller Beitrag

    Hallo,

    Du kannst dir doch die letzte Position merken und erst danach weiter machen!

  • @doc Das Programm bricht nicht ab es ist so vorgesehen das er unter gewissen umstanden auf der seite nichts machen soll. Daher bleibt diese logischerweise weiterhin schwarz und es ist ein ewiger kreislauf.

    [autoit]


    $coord = PixelSearch( 151, 432, 265, 505, 0x000000 )
    If Not @error Then
    MouseClick("", $coord[0], $coord[1])
    Sleep(2000)
    MouseClick("", 161, 225)
    Sleep(2000)

    $rot = PixelSearch( 486, 413, 833, 473, 0xBB0000, 10 )
    If Not @error Then
    $weiss2 = PixelSearch( 848, 585, 924, 744, 0xDDDDDD,50 )
    If Not @error Then
    MouseClick("", $weiss2[0], $weiss2[1])
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Else
    $weiss = PixelSearch( 848, 413, 924, 744, 0xDDDDDD,50 )
    If Not @error Then
    MouseClick("", $weiss[0], $weiss[1])
    EndIf
    EndIf

    [/autoit]

    aber der Code ist eher nicht so Interessant. Mir geht es darum, wie ich die Reihenfolge beim suchen von Pixelsearch ändern kann damit er nicht immer bei einem hängen bleibt. Ich könnte natürlich auch sagen aktuelle Y achse + 10 Pixel aber das wäre wieder sehr fehleranfällig und er würde am Ende der Tabelle über das Ziel hinaus schießen