Interaction automatisée avec Google Chrome

9

Très bien SU, j'ai un écrou amusant à casser.

J'ai 8 écrans configurés en ligne, tous connectés à un G5 costaud exécutant Snow Leopard (oui, 4 cartes graphiques; environ 15 000 pixels de large!). Je mets en place une démo qui utilise 8 fenêtres de navigateur Chrome en plein écran, chacune pointant vers une URL différente. C'est pénible de le faire manuellement à chaque redémarrage de l'ordinateur.

Compte tenu de cette configuration, je veux écrire un script automatiquement:

  1. Ouvrez une fenêtre chromée sur un écran spécifique
  2. Pointez cette fenêtre vers une URL spécifique
  3. Plein écran cette fenêtre (commande-F est le raccourci clavier)

Je n'ai pas utilisé d'automate et je ne suis pas particulièrement familier avec les scripts shell, mais je me demandais s'il y avait des suggestions fantaisistes de la part de la foule.

Mise à jour: même si j'ai besoin d'utiliser Automator pour la fonctionnalité de haut niveau, j'espère finalement un moyen de déclencher le script à partir d'une ligne de commande / script. J'aimerais pouvoir activer cette démo à distance à partir d'un shell si nécessaire.

slifty
la source
Je pense qu'Automater est un excellent point de départ. Même si je ne l'ai pas trop utilisé. J'avais l'habitude d'utiliser un produit "Egg Plant Purple" que vous pourriez utiliser pour cela - même si j'aimerais penser qu'il existe de bien meilleures options là-bas.
James T Snell
Je pense que l'écran spécifique est ce qui sera difficile à réaliser.
slhck

Réponses:

8

Je l'ai compris!

Applescript est une excellente ressource, et Chrome a un dictionnaire (vous pouvez le voir dans "Applescript Editor" puis sélectionner "Ouvrir le dictionnaire" et trouver Chrome dans la liste).

Le 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

Le script fait ce qui suit:

  1. Activer Chrome (l'ouvre ou, s'il est ouvert, en fait le focus)
  2. Fermez toutes les fenêtres de navigateur ouvertes
  3. Créez des fenêtres de navigateur [screenCount], en les ouvrant à une coordonnée spécifique (les deux premiers termes dans les {limites} sont les x, y du coin supérieur gauche. Les deux seconds termes dans les {limites} sont les x, y des inférieurs droite)
  4. Après l'ouverture de chaque fenêtre de navigateur, envoyez une commande "plein écran" (Commande + Maj + F)
  5. Une fois que chaque fenêtre de navigateur est entièrement filtrée, définissez l'URL à l'emplacement souhaité.

Gardez à l'esprit que mes URL correspondent à une formule spécifique (par exemple http: // localhost: 8000 / # 0 ), il était donc facile de les générer dynamiquement. Pour toute personne ayant des besoins aléatoires similaires, vous pouvez l'utiliser comme point de départ.

Enfin, comme pour l'exigence de terminal, vous pouvez exécuter applescript sur le terminal à l'aide de la ligne suivante:

osascript [nom du script]

slifty
la source