Automatische Konfiguration eines Druckers über die Weboberfläche

  • Hallo zusammen,

    ich bin seid kurzem dabei mich mit AutoIt auseinander zu setzten. Mit viel Tutorials anschauen/lesen habe ich soweit alles hinbekommen was ich benötige, nur habe ich gerade aktuell ein Problem welches mich gerade nerven kostet.

    Ich möchte die Konfiguration eines HP Druckers völlig automatisieren, d.h.
    1. Firmware Update
    2. Konfigurations-Datei übertragen
    3. Variable Daten eintragen

    Punkt 2 und 3 ist erledigt und es läuft

    Bei Punkt 1 läd er mir die passende Seite und öffnet mir auch das Fenster wo ich den Pfad der Firmware Datei angeben muss und dann geht es einfach nicht weiter.

    Ich habe versucht mit "ControlClick" in der Adresszeile den Pfad anzugeben, aber es passiert nichts.
    Auch dann mit dem "Send" Befehl das er mir gleich etwas eingibt passiert nichts.

    Mir kommt es so vor, dass er bei der IE Oberfläche hängen bleibt und nicht erkennt das sich das Fenster öffnet mit der Pfad Angabe. Mit WinActive habe ich es auch versucht aber das hat auch nichts gebracht.
    Hat jemand eine Idee bzw. Lösungsansatz für mich?

    lg

    Chris

  • Poste mal einen Screenshot damit wir wissen, wovon die Rede ist (1 Bild sagt mehr als 1000 Worte - so erspart man sich viele Rückfragen).
    Der nächste Schritt ist dann, dass Du Deinen Code postest oder besser einen sogenannten "Reproducer" mit dem sich das Problem nachstellen lässt.

  • Hallo Water,

    stimmt hätte ich auch gleich machen können.
    Ich habe den Screen mal als Dateianhang hochgeladen. Hier sieht man die Weboberfläche und wenn man unten Links auf Durchsuchen klickt öffnet sich das Fenster Datei zum Hochladen auswählen. Die Window Info zeigt das Feld an wo man den Dateinamen angeben kann.

    Hier auch nochmal ein Teil vom Script:

    #include <IE.au3>

    $oIE =_IECreate ("http://10.10.10.147/hp/device/FirmwareUpgrade") ;Öffnet die Website zum FW Update
    _IELinkClickByText ($oIE, "Laden dieser Website fortsetzen (nicht empfohlen).") ;Ignoriert die Zertifikatsfehler abfrage

    $firmwareauswahl = _IEGetObjById ($oIE, "bundleFile")
    _IEAction ($firmwareauswahl, "click") ;Simuliert Maus Klick auf den FW Button

    ;An diesem Punkt Stoppt das Script. Wenn ich das PopUp Fenster schließe und in den 5 Sekunden wieder öffne macht er ganz normal weiter und schreibt auch den gewünschten Text in das FeldSleep ( 5000 )
    ControlClick("", "", "[CLASS:Edit; INSTANCE:1]")
    Sleep ( 2000 )
    Send ("TEST")

  • Ich würde das so angehen:

    Code
    $hFirmware = WinWait("Datei zum Hochladen auswählen") ; Warten auf das Fenster zur Dateiauswahl
    WinActivate($hFirmware) ; Sicherstellen, dass es aktiv ist
    ControlClick($hFirmware, "", "[CLASS:Edit; INSTANCE:1]")
  • Hallo Water,

    danke für die schnelle Antwort.
    Leider habe ich wieder das gleiche Problem. Wenn ich wieder Sleep Pausen rein mache, dass Fenster schließe und manuell öffne geht es erst dann weiter.

    Habe das auch mal testweise ausprobiert mir WinRar auf ein anderen Pfad zu installieren. Dies hat aber problemlos geklappt.

    Hast du vlt. noch eine andere Idee

    lg

    Chris

    Nachtrag:

    Ich glaub ich bin dem Problem nun ein Schritt näher gekommen. Das Problem liegt in Zeile 5-6. Dieser bewirkt das sich das Fenster "Datei zum Hochladen auswählen" öffnet und dann macht das Script nicht mehr weiter bis ich dieses Fenster wieder schließe.
    In dem Quellcode hier habe ich mal zum test gesagt das er eine Install Exe starten soll. das macht er auch nur wenn ich das besagte Fenster schließe.

    Hier habe ich noch mal den Code vom Seiten Quelltext worauf sich Zeile 5-6 bezieht:

    Code
    <div class="line">
        <div class="control file">
            <input type="file" name="bundleFile" id="bundleFile" size="50" js-button="Datei auswählen" />
        </div>

    Einmal editiert, zuletzt von calbrecht (9. Dezember 2015 um 13:28)

  • Hallo zusammen,

    es scheint wohl nicht möglich zu sein diesen Button mit den genannten Befehlen anzusteuern. Ich habe das nun mit "Send" Befehlen erstmal gemacht und dies funktioniert.

    Jetzt stehe ich aber vor dem nächsten Problem:

    Der Drucker installiert die Firmware und in der Mitte der Seite erscheint ein Ladebalken. Nach ca. 5 Minuten ist der Ladebalken durchgelaufen und es tut sich nichts mehr bis man den IE aktualisiert.
    Der Drucker brauch dann noch weitere 10 Minuten bis er die Firmware installiert hat und wieder über die Web-Oberfläche erreichbar ist.

    Ich wollte das nun so machen das er nachdem die Firmware zu dem Drucker geschickt wurde (1.) 5 Minuten Wartet dann den (2.) Explorer schließt dann (3.) versucht wieder auf die Weboberfläche vom Drucker zu kommen. und sollte die Webseite nicht erreichbar sein soll er wieder zu Punkt (2.) springen bis die Seite wieder erreichbar und geladen ist.
    Wenn der Drucker noch nicht vollständig wieder hochgefahren ist, wird nach einiger Zeit die Seite "Die Seite kann nicht angezeigt werden" geladen. Ich möchte die Seite über Text oder Titel identifizieren und falls dies zutrifft, soll die Schleife greifen. Ich weiß aber nicht wie ich dies abfragen/vergleichen kann.

    Hinzukommt noch das wenn ich auf die Weboberfläche vom Drucker zu greifen will, immer erst eine HTTPs Zertifikatfehlermeldung kommt. Dies erscheint immer auch wenn das Gerät nicht am Netzwerk ist.

    Kann mir da jemand helfen? :-/