Hilfe bei einem kleinen Projekt

  • Hallo,


    ich stelle mich mal kurz vor, denn ich bin neu hier im Forum und erhoffe mir vielleicht die Hilfe einiger erfahrener AutoIT Programmierer. :)


    Ich heisse Stefan und mache eine Ausbildung zum IT-Kaufmann. Ich habe ein kleines Projekt bekommen und bin nun auf eure Hilfe/Unterstützung angewiesen. :S


    Folgende Situation.


    ich soll aus einer Textdatei Zahlen in ein Webseile in eine bestimmte Zeile eintragen. Dieser Eintrag gibt mir einen Wert in Form von einer URL wieder. Ist der Wert richtig soll das Script die Zahl aus der Textdatei löschen, ist der Wert falsch soll dieser dann die Zahl in eine andere Textdatei schreiben.


    Soweit sogut, da ich das nicht von Hand machen will kam meinem Ausbilder die Idee mich mit AutoIT zu beschäftigen, tja und nun bin ich hier und hoffe auf eure Unterstützung.


    Vielleicht gibt es auch sowas schon. ?(


    Viele Grüße,

    Stefan

  • Mal ne beiläufige Frage wieso hilft dir dein Ausbilder nicht dabei, ist der nicht für sowas zuständig???

    Also was du brauchst (an Befehlen)
    FileRead, FileOpen (evt. FileReadLine)
    Kannst du die Textdatei mal hochladen? Kann mir das grad schwer vorstellen. Ist jede Zahl in einer neuen Zeile oder wie?


    Dann brauchst du noch die _IE funktionen (stehen alle in der Hilfe) welche davon, das kommt darauf an wie die webseite aufgebaut ist.

    Der Rest ist Standard zeugs If Else usw. Hast du schonmal programmiert?
    An sonsten am besten ein paar Tutorials machen.

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Hallo und danke für die schnelle Rückmeldung.

    Naja mein Ausbilder weiss zwar das es sowas wie AutoIT gibt, aber wie das geht weiss er nicht. Die Aussage "schau doch mal im Internet, gibt ja sowas wie autoit oder so"

    Programmiert habe ich leider noch nicht, werde aber mal schauen inwiefern ich eure Hilfe schon umsetzten kann :)

    vielen Dank an der Stelle.

    Gruß
    Stefan


    Edit: Das mit der testdate ist eigentlich recht einfach da stehen ca 10-Stelliger Code einfach untereinander weg.

    Also:
    1111122222
    3333344444
    5555566666

  • Okay dann kannst du FileReadLine benutzen schau einfach mal in der Hilfe dazu da gibts ein gutes beispiel.
    Ist die Webseite öffentlich (das mit der URL) oder hast nur du zugriff darauf. Evt. kannst du auch mit AutoIt die URL herausfinden dann brauchst du garnet auf die Webseite gehn ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Also die URL ist im Intranet bei denen. Dort aber für jeden zugänglich.

    Mit dem Code hab ich mal angefangen, stelle mir aber die Frage wie ich nun jede einzelne Zeile abfrühstücke :(

    mit dem Beispiel lese öffne ich eine Datei und lese bis zum Ende aus ... bei dem Beispiel habe ich das ja in eine MsgBox ausgegeben, aber ichi benötige dort sicher eine Variable, oder?
    hmmm, gar ned so einfach wenn man davon keine Ahnung hat :(

  • Hallo erstmal,

    Zitat

    ich soll aus einer Textdatei Zahlen in ein Webseile in eine bestimmte Zeile eintragen


    ok, die Zahlen aus der Textdatei hast du ja schon. Diese Zeile (deine Ziffern) befinden sich schon in der Variablen $line !
    Statt diese nun in der MsgBox auszugeben, kannst du diese Variable weiterverarbeiten.
    Beispielsweise in ein Inputfeld einer Webseite übertragen. Oder sollen die Zahlen in den Quellcode der Seite eingetragen werden?
    ciao
    Andy

  • Hallo Andy,

    Ja, also die Zahlen habe ich in meiner line$ ... aber halt alle. :(

    ich muss ja nur die erste Zahl haben, die dann in einem Inputfeld ausgeben (denke da an ein send, wenn das geht) und dann ein ok von der webseite erwarten. Wenn das da ist muss ja die erste Zahl gelöscht werden und ich muss die 2 zahl in meine Variable packen und das spiel beginnt von vorne ...

    :( je länger ich mir das anschaue umso komplizierter wird das, habe ich das Gefühl ....

    • Offizieller Beitrag
    Zitat

    Ja, also die Zahlen habe ich in meiner line$ ... aber halt alle. :(


    Falsch !!
    Du liest doch die Datei in einer Schleife ein.

    [autoit]

    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Zeile gelesen:", $line)
    Wend

    [/autoit]

    Die Bearbeitung müßte dann bei der MsgBox beginnen und vor der Wend Anweisung stehen . Du liest ja bei jedem Schleifendurchauf nur 1 Wert ein und der steht somit in der Variable $line .

  • Edit:
    kurze Zwischenfrage. Wieviel Zahlen kann man in einer VAR einlesen?
    Soweit ich mich erinnere sind das verdammt hohe Zahlen :( gibt es dort eine Obergrenze? Oder muss ich dann sogar einen anderen Weg wählen?

    • Offizieller Beitrag

    Schau dir dazu mal das an : http://www.autoit.de/dokumentation_…itsDefaults.htm

    Edit: Wenn du die Werte in Variablen einlesen willst, dann solltest du dazu ein Array benutzen . Ein Array ist um es für meine Laien verständlich zu machen eine Ansammlung von Variablen oder auch ein Kontainer für diese. Und zum Thema Array kann ich nur an BugFix verweisen. In seiner Signatur findest du auch ein gutes Array-Tut.http://www.bug-fix.info/array_tut.htm

  • haaa !
    toll und super Hilfe hier bei euch :)

    Also ich schaffe es eine Zahl aus einer Datei auszulesen in ein Textfeld einzugben, ich probiere das gerade bei google aus :)

    [autoit]

    While 1
    $line = FileReadLine ($file)
    If @error = -1 Then ExitLoop
    send ($line)
    send ("{ENTER}")
    Sleep (40000)
    Wend

    [/autoit]

    nun müsste ich das ergebnis auslesen (also die URL die mir oben wieder gegeben wurde), dort mir ein bestimmtes Wort rauslesen und schauen was ich mit dem ergebnis machen...
    Bei "http://url.de/fehler.php" müsste ich aus der Schleife raus und die Zahl die ich meiner $line habe in eine Textdatei schreiben, bei "http://url.de/richtig.php" müsste ich wieder in die Schleife und mir die nächste zahl greifen ...

    wie lese ich nun die URL aus und verwerte die?

  • Wie schon von mir gesagt benutze die _IE oder _FF funktionen
    Ich hab dir mal ein kleines Beispielscript erstellt. Ebenfalls mit Google.
    Es öffnet den Internet explorer und geht auf https://autoit.de/www.google.de (_IECreate)
    In dem Array $array sind die suchbegriffe enthalten.

    Mit _IEFormGetObjByName bekommst du das Formular zurück (im HTML Code: <form (hier kann noch was stehen muss aber nicht) name="f" (hier kann wieder was stehen muss aber nicht) >(hier kann sehr viel drin stehn)</form>)
    In diesem Formular muss es dann irgendwo ein Input geben (das ist die Zeile wo man den Suchbegriff einträgt) das sieht so aus im Code:
    <input type="text" name="q" /> (wiederrum kann zwischen name und type etc. noch mehr stehen.
    in beiden fällen ist der Name wichtig denn diesen brauchen wir für Autoit

    _IENavigate($ie, "www.google.de") Damit kommen wir am Anfang der Schleife wieder auf die "hauptseite" zurück um von vorne zu beginnen

    $form = _IEFormGetObjByName($ie, "f") ($ie bedeutet die rückgabe aus _IECreate d.h. er muss mit diesem InetExplorer Fenster suchen, "f" ist der name des Formulars)
    $element = _IEFormElementGetObjByName($form, "q") ($form ist das was oben zurückgegeben wird es sagt autoit das es das Input innerhalb dieses Formulares suchen soll, und zwar nach dem Namen "q"

    _IEFormElementSetValue($element, $array[$i]) (hiermit schreiben wir in das $element das gefunden wurde einen neuen Wert rein nämlich $array[$i])
    ;wenn du hier ein Sleep(2000) einbaust kannst du den text sogar sehen.
    mit _IEFormSubmit($form) (hiermit wird das formular abgesendet das hat den gleichen effekt wie wenn du auf den Knopf "Google-Suche" drückst)
    $return = _IEPropertyGet($ie, "locationurl") (hiermit wird wiederrum die adresszeile des Browsers abgefragt und der Wert in $return zurückgegeben)
    Welcher dann in einer MsgBox angezeigt wird.

    Spoiler anzeigen
    [autoit]

    #include<IE.au3>
    $ie = _IECreate("www.google.de")
    Dim $array[2] = ["autoit", "autoit forum"]
    $form = _IEFormGetObjByName($ie, "f")
    $element = _IEFormElementGetObjByName($form, "q")

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

    For $i = 0 To UBound($array) -1
    _IENavigate($ie, "www.google.de")
    $form = _IEFormGetObjByName($ie, "f")
    $element = _IEFormElementGetObjByName($form, "q")
    _IEFormElementSetValue($element, $array[$i])
    ;wenn du hier ein Sleep(2000) einbaust kannst du den eingegebenen text besser sehen.
    _IEFormSubmit($form)
    $return = _IEPropertyGet($ie, "locationurl")
    MsgBox(0, "Return", "Bei "&$array[$i]&" kam als returnwert: "&$return)
    Next

    [/autoit]

    So jetzt kommt für dich die Aufgabe dir den Quelltext deiner Seite anzuschauen wenn sie auch so einfach aufgebaut ist wie die google startseite sollte das kein größeres problem sein. Durchsuche lediglich den Quelltext deiner seite nach "<form" und dann noch nach "<input"
    Das richtige Input muss aber den type="text" haben.

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D