web-dev-qa-db-ja.com

Googleとの自動インタラクションChrome

大丈夫SU、私は割るのが楽しいナッツを持っています。

私は8つの画面を一列に並べており、すべてがSnow Leopardを実行している1つの頑丈なG5に接続されています(はい、4枚のグラフィックカード。幅は約15,000ピクセルです!)。 8 Chromeブラウザウィンドウがフルスクリーンで、それぞれが異なるURLを指している)を使用するデモを設定しています。コンピュータを再起動するたびに手動でこれを行うのはお尻の痛みです。

この設定を前提として、次のスクリプトを自動的に作成します。

  1. chromeウィンドウを開いて特定の画面を表示する
  2. そのウィンドウを特定のURLにポイントします
  3. そのウィンドウの全画面表示(command-Fはキーボードショートカットです)

私はオートマトンを使用したことがなく、シェルスクリプトに特に精通していませんが、群衆から何か派手な提案があるかどうか疑問に思いました。

更新:高レベルの機能にAutomatorを使用する必要がある場合でも、最終的にはコマンドライン/スクリプトからスクリプトをトリガーする方法を望んでいます。必要に応じて、シェルからリモートでこのデモをオンにできるようにしたいと思います。

9
slifty

私はそれを考え出した!

Applescriptは素晴らしいリソースであり、chromeには辞書があります(「ApplescriptEditor」で表示し、「Open Dictionary」を選択して、Chromeリスト内)。

コード:

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

スクリプトは次のことを行います。

  1. アクティブ化Chrome(開くか、開いている場合はフォーカスを設定します)
  2. 開いているブラウザウィンドウをすべて閉じます
  3. [screenCount]ブラウザウィンドウを作成し、特定の座標で開きます({bounds}の最初の2つの用語は左上のx、yです。{bounds}の次の2つの用語は下のx、yです)正しい)
  4. 各ブラウザウィンドウが開いたら、「フルスクリーン」コマンドを送信します(Command + Shift + F)
  5. 各ブラウザウィンドウが全画面表示されたら、URLを目的の場所に設定します。

私のURLは特定の式(例: http:// localhost:8000 /# )に適合するため、動的に生成するのは簡単でした。ランダムに類似したニーズを持つ人は、これを出発点として使用できます。

最後に、ターミナルの要件については、次の行を使用してターミナルでapplescriptを実行できます。

osascript [スクリプト名]

8
slifty