前回のハローワールド
JavaScriptでハローワールドして、とりあえずメッセージの送って遊びました。
AppleScript のJavaScriptでハローワールド - それマグで!
メッセージ.app でバンバン
AppleScript のJavaScript版 JXAで、起きない友達をバンバンする - それマグで!
今回は、ちゃんとまともに使える作業をしていきたいと思います。
Safariの自動化
スクレーパーを書くのもHeadlessなPhantomJSも、Seleniumも面倒なときはSafariやIEの自動化で済ませたほうが楽な時があります。
PhantomJSとかコールバック地獄で素で書くの苦行だったのでもう使ってない。
Safariウェブサイトにアクセス(by JavaScript for OSX automation)
Safariを起動して、特定サイトにアクセスします。
app = Application('Safari') app.includeStandardAdditions = true app.activate() var tab = app.windows[0].tabs[0] tab.url = "http://pixiv.net"
これで、Safariを起動してサイトが開きます。
Pixivが開きました。
上手くいかない時は、ほんの少しだけウエイトをかけて、Safariの起動を待ちをしてみます。
app = Application('Safari') app.includeStandardAdditions = true app.activate() delay(0.3)// 若干のスパイス var tab = app.windows[0].tabs[0] tab.url = "http://pixiv.net"
次に次に、サイトを切り替えてみます。
app = Application('Safari') app.includeStandardAdditions = true app.activate() var tab = app.windows[0].tabs[0] tab.url = "http://mixi.jp" delay(3.0) tab.url = "http://pixiv.net" delay(3.0) tab.url = "http://twitter.com"
ほとんどのサイトは2秒以内に表示されるので、3秒程度のウエイトを入れると上手く動きます。
ページの自動更新
今見ているページを自動更新したい時があります。
スポーツを見ていたり、プログラムをから送信したデータの反映待ちをするなど、自動更新って結構便利に使えます。
app = Application('Safari') app.includeStandardAdditions = true app.activate() delay(1.0) var tab = app.windows[0].tabs[0] while(true){ tab.url = "http://twitter.com/" delay(5.0) }
Safariを自動化するとスクレーパー書かずにすみます。
SafariやIEをパパっと自動化出来ると、省力化出来て便利です。
次回は、delay(3.0)でロード待ちをしていたところ、ちゃんとページロードを待つようにしたいと思います。
備考
この記事はJAXのアドベントカレンダーの2日目として書きました。