2012年8月1日水曜日

iMacros と JavaScript を組み合わせて使う

よく使う Firefox add-on のひとつが、 iMacros なるもの(厳密には名前の右肩にTMが付く)。browser-based macro recorder であり、Webブラウザを使った操作を記録&再生することができる。


で、今日メモっておきたいのは、iMacros と JavaScript を組み合わせる方法について。iMacros のマクロはいくつかのコマンドからなっているが(Command Reference - iMacros に掲載されている)、一般的なプログラミング言語が提供するような関数や制御構造、データ構造をもたない。そこを JavaScrpt で補完しよう、という話。


環境は Firefox 14.0.1, iMacros for Firefox 7.5.0.4.

1. マクロを記録
まずは簡単なマクロをひとつ作るため、google.co.jp を開いて検索する操作を記録してみた。そうすると、次の内容のマクロ(#Current.lim)ができた。
VERSION BUILD=7500718 RECORDER=FX
TAB T=1
URL GOTO=https://www.google.co.jp/
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=ID:lst-ib CONTENT=foo
ここで、fooの部分が検索した文字列に相当する。
2. マクロを編集(変数の導入など)
記録したマクロをもとにして、繰り返し検索を行う処理をJavaScriptで作ることにする。そのための準備としてまずはマクロ "#Current.lim" を "my.lim" にリネーム。それから内容を編集。
第一に、新しいタブを作ってフォーカスを移すための iMacrosコマンド TAB OPENTAB T={{!VAR1}} を追加する。{{!VAR1}} はタブの番号を指定するために導入した変数。
第二に、JavaScriptから指定した文字列で検索を行うことにしたいので、foo{{!VAR2}} と置換。
結果、マクロは次の内容になった。
VERSION BUILD=7500718 RECORDER=FX
TAB OPEN
TAB T={{!VAR1}}
URL GOTO=https://www.google.co.jp/
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=ID:lst-ib CONTENT={{!VAR2}}
TAG POS=1 TYPE=INPUT:BUTTON ATTR=VALUE:Google<sp>検索
3. JavaScriptを作成
とりあえずテキトーにマクロを作って、my.js とリネームしてから編集。 iimSet, iimPlay という2つのインターフェースを利用してJavaScriptを書く。具体的には、マクロに導入した変数 {{!VAR1}} に、タブ番号を iimSet() という関数でセット。それから配列にはいっている文字列 foo, bar, baz を {{!VAR2}} にセット。最後に、iimPlay() で my.lim を実行する。
var a = ['foo', 'bar', 'baz'];
for(var i=0, n=a.length; i<n; i++){
  iimSet("VAR1", i + 1);
  iimSet("VAR2", a[i]);
  iimPlay("my");
}
4. JavaScriptを実行
作成した JavaScript(my.js)を保存して、実行する(Playボタンとか)。うまくいくとタブを新規作成して検索する操作が3回繰り返される。
※空白のタブがひとつできてしまうから、いまひとつなところがあるのかもしれないな。。。

0 件のコメント:

コメントを投稿