Automatisierte Interaktion mit Google Chrome

9

Alles klar SU, ich habe eine lustige Nuss zu knacken.

Ich habe 8 Bildschirme in einer Reihe eingerichtet, die alle an einen bulligen G5 mit Snow Leopard angeschlossen sind (ja, 4 Grafikkarten; ungefähr 15.000 Pixel breit!). Ich richte eine Demo ein, die 8 Vollbild-Chrome-Browserfenster verwendet, von denen jedes auf eine andere URL verweist. Es ist eine Qual, dies jedes Mal manuell zu tun, wenn der Computer neu gestartet wird.

Angesichts dieser Einstellung möchte ich automatisch ein Skript schreiben:

  1. Öffnen Sie ein Chrome-Fenster für einen bestimmten Bildschirm
  2. Zeigen Sie in diesem Fenster auf eine bestimmte URL
  3. Vollbild dieses Fensters (Befehl-F ist die Tastenkombination)

Ich habe keinen Automator verwendet und bin mit Shell-Skripten nicht besonders vertraut, aber ich habe mich gefragt, ob es irgendwelche ausgefallenen Vorschläge von der Menge gibt.

Update: Auch wenn ich Automator für die Funktionen auf hoher Ebene verwenden muss, hoffe ich letztendlich auf eine Möglichkeit, das Skript über eine Befehlszeile / ein Skript auszulösen. Ich möchte diese Demo bei Bedarf über eine Shell aus der Ferne aktivieren können.

schlampig
quelle
Ich denke, Automater ist ein großartiger Anfang. Obwohl ich es auch nicht so oft benutzt habe. Ich habe früher ein Produkt "Egg Plant Purple" verwendet, das Sie möglicherweise dafür verwenden können - obwohl ich gerne glauben würde, dass es weitaus bessere Optionen gibt.
James T Snell
Ich denke, der spezifische Bildschirm ist das, was schwer zu erreichen sein wird.
Slhck

Antworten:

8

Ich habe es herausgefunden!

Applescript ist eine großartige Ressource, und Chrome verfügt über ein Wörterbuch (Sie können es im "Applescript-Editor" anzeigen und dann "Wörterbuch öffnen" auswählen und Chrome in der Liste finden).

Der Code:

set screenCount to 8
set screenWidth to 1950
set baseURL to "http://localhost:8000"

tell application "Google Chrome"
    activate
    repeat while window 1 exists
        close window 1
    end repeat
    repeat with x from 1 to screenCount

        set w to make new window with properties {bounds:{screenWidth * (x - 1), 500, 500 + screenWidth * (x - 1), 1000}}
        tell application "System Events" to keystroke "F" using {command down, shift down}
        set URL of active tab of w to (baseURL & "/" & "#" & (x - 1))

    end repeat
end tell

Das Skript führt Folgendes aus:

  1. Aktivieren Sie Chrome (entweder öffnet es oder wenn es geöffnet ist, wird es zum Fokus)
  2. Schließen Sie alle geöffneten Browserfenster
  3. Erstellen Sie [screenCount] -Browserfenster und öffnen Sie sie an einer bestimmten Koordinate (die ersten beiden Begriffe in den {Grenzen} sind das x, y oben links. Die zweiten beiden Begriffe in den {Grenzen} sind das x, y der unteren Recht)
  4. Senden Sie nach dem Öffnen jedes Browserfensters einen "Vollbild" -Befehl (Befehl + Umschalt + F).
  5. Nachdem jedes Browserfenster vollständig angezeigt wurde, stellen Sie die URL auf den gewünschten Speicherort ein.

Beachten Sie, dass meine URLs einer bestimmten Formel entsprechen (z. B. http: // localhost: 8000 / # 0 ), sodass es einfach war, sie dynamisch zu generieren. Für alle mit zufällig ähnlichen Bedürfnissen können Sie dies als Ausgangspunkt verwenden.

Schließlich können Sie für die Terminalanforderung Applescript auf dem Terminal mithilfe der folgenden Zeile ausführen:

osascript [Skriptname]

schlampig
quelle