Browser kopflos / headless steuern

  • Hallo zusammen,

    ich würde gerne auf einem Rechner einen Browser nutzen, um im Minutentakt den Inhalt einer Webseite abzurufen und als Bild zu speichern. Auf diesem Rechner läuft XIBO, eine Software zur Darstellung diverser Bilder, Texte und Videos. Es ist ein Informationssystem, das wir inhouse nutzen, um internas und Anwesenheitsinformationen darzustellen.

    Da ich keinen Weg gefunden habe, die aktuelle Anwesenheitsinformation ununterbrochen auf diesem Bildschirm darzustellen, läuft derzeit ein zweiter Rechner, der die Anwesenheitsinformation mit dem Browser anzeigt, einen Screenshot erzeugt, das Bild beschneidet und auf ein Netzlaufwerk schiebt. Der erste Rechner holt jede Minute das Bild und stellt es dar. Das ist natürlich fehleranfällig, weil die Rechner hundert km voneinander entfernt sind und remote bedient werden müssen. WLAN ist bei dem einen unzuverlässig, Ethernet gibt es nicht und die Datenmenge, die über die SIM-Karte übertragen wird, ist mehr, als gebucht wurde. Nach ein paar Tagen fällt die Geschwindigkeit auf Modemzeiten zurück und bis zum Rest des Monats ist der Rechner nicht mehr ansprechbar. Insofern wäre es mit sehr recht, die Bilder des Anwesenheitsstatus direkt auf diesem ersten Rechner zu erzeugen.

    Wäre es denkbar, mit dem UDF Web driver eine Steuerung des Browsers soweit hinzubekommen, dass ein Screenshot gemacht werden kann, ohne dessen Screen im Vordergrund zu haben? Es soll ja immer nur die Oberfläche von XIBO zu sehen sein.

  • Rechner 1 zeigt andauernd etwas bildschirmfüllend auf dem Bildschirm an. Das soll nicht unterbrochen werden und es soll auch nix anderes zu sehen sein.

    Im Prinzip wäre es so, als wollte man auf einem Werbebildschirm wie sie überall zu sehen sind, während die Werbung gezeigt wird, einen Screenshot von einem Browserfenster gemacht werden - und dieses Browserfenster soll natürlich NICHT zu sehen sein. Es soll immer nur die Werbung angezeigt werden.

    Insofern glaube ich, dass _ScreenCapture_CaptureWnd nicht geeignet ist; wenn ich es recht verstehe, wird nur vom sichtbaren Bereich ein Screenshot gemacht - und dort ist ja nur Werbung zu sehen.

  • Ich verstehe dich nicht. Der Browser im Vollbild (nicht mit "maximiert" verwechseln!) zeigt nichts anderes an, als die aktive Webseite.

    Wenn du Chrome hast, drück mal "F11".

    Und mehr brauchst du doch gar nicht. Browser starten (gewünschte Webseite kann ja als Parameter übergeben werden), Vollbild einschalten und gelegentlich mit "F5" aktualisieren.

    Fertig.

    Oder ist auf der Webseite selber mehr zu sehen als nur der Anwesenheitsstatus?

    • Offizieller Beitrag

    Ethernet gibt es nicht und die Datenmenge, die über die SIM-Karte übertragen wird, ist mehr, als gebucht wurde. Nach ein paar Tagen fällt die Geschwindigkeit auf Modemzeiten zurück

    Und weshalb soll dann ein Bild!! übertragen werden, noch dazu im Minutentakt? Das ist doch eine völlig unnütze Verschwendung eurer raren Onlinekapazität. Dafür reichen doch ein paar Byte in Textform. Zu einer Grafik kann man das dann nach Empfang ja wieder aufhübschen.

  • Und weshalb soll dann ein Bild!! übertragen werden, noch dazu im Minutentakt? Das ist doch eine völlig unnütze Verschwendung eurer raren Onlinekapazität. Dafür reichen doch ein paar Byte in Textform. Zu einer Grafik kann man das dann nach Empfang ja wieder aufhübschen.

    Ich gehe davon aus, das er nicht weiß, wie er die Daten aus dem Browser bekommt und macht deswegen Screenshots.

  • Die Daten aus der Webseite zu lesen schaffe ich schon; das Thema ist ein anderes:

    Um einen Screenshot machen zu können, muss der Browser im Vordergrund stehen - ob als kleines Fenster oder bildschirmfüllend. Und genau das soll ja nicht sein. Auf dem gesamten Bildschirm laufen immer und ohne Ausnahme durchgehend die Informationsbilder; in den oberen zwei Dritteln meist Unternehmensfilme, die sich mit irgendwelchen Verhaltensanweisungen oder Kennzahlen abwechseln und im unteren Drittel sieht man immer die Namen der Mitarbeiter und ob diese gerade anwesend und in welchem Gebäude sie sind. Da kann ich nicht alle Minuten mal kurz den Browser aufblitzen lassen und einen Screenshot machen.

    Warum ein Screenshot? Sehr wahrscheinlich kann jemand die Tabellen mit dem Anwesenheitsstatus aus den Webseiten extrahieren und dann eben nur daraus eine Webseite oder ein Bild machen. Mir selber gelingt das leider nicht. Es reicht nicht aus, einfach nur die Bereiche von <table> bis </table> zu kopieren; im <head> Bereich der Seite sind Verweise auf Javascript Kendo, ohne die die Darstellung nur Plain Text wird. Dann werden alle Mitarbeiter als eine lange Liste untereinander angezeigt; das nutzt mir nix.

    Letzten Endes ist ein Screenshot von 72 kB für ein Bild nicht sonderlich groß; alleine die html Seite ohne die passende Formatierung hat schon 50 kB. Insofern spare ich da wahrscheinlich nicht sonderlich viel.

    Das Programm Xibo, welches die Darstellung der Inhalte auf dem Bildschirm übernimmt, kann zwar Webseiten darstellen, aber die müsste ich wie vorgenannt passend aufbereiten. Bereiche von existierenden Webseiten ausschneiden ist damit nicht wirklich machbar. Zudem muss man sich bei der Webseite einloggen, um überhaupt den Anwesenheitsstatus abrufen zu können. Damit bleiben mir nur Screenshots.

    Ich meine, es gibt grundsätzlich die Möglichkeit mit bestimmten Browsern ohne Bildschirm zu arbeiten, was man üblicherweise für Tests oder Webscraping macht. Was ich da bisher gesehen habe, war etwas fernab meines Verständnisses.

    Daher meine Frage, ob das mit dem ursprünglich erwähnten UDF Web driver funktionieren könnte, denn mit AutoIt bin ich zwar nicht gerade eine helle Kerze, aber es fällt mir etwas einfacher.

  • Muss wohl am Montag liegen, aber 100% genau weiß ich immer noch nicht, was Du möchtest ^^.

    Du könntest mal folgendes probieren (Quelle : web-screenshot von KaFu )

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Prima, das geht schon in die richtige Richtung:-)

    Jetzt muss ich noch ein paar Daten in Felder einfüllen lassen, damit die Anmeldung automatisiert wird.

    Dazu muss ich sehen, was gerade abläuft. Wie schalte ich die Darstellung des Browsers während des Testens ein?

    Ich vermute, das wird hier gemacht?

    $oIViewObject2.Draw(1, -1, 0, 0, $hDC, $hMemDC, $sRECT, 0, 0, 0)

  • Nein da fehlt einfach nur ein

    Code
    ; Display the GUI.
        GUISetState(@SW_SHOW, $hGUI)

    Bzw. wenn du noch was sehen willst musst du natürlich auch das guidelete und Programmende verhindern.