iMacrosでページを表示するときにエラーが起こると困ってしまいます。なんとか対処できないかと調べてみました。
最初にこのようなエラー処理を組んで見ました。
iimPlay("PageDisplay");
while(1) {
iimPlay("STUCheck");
s = iimGetLastExtract(1);
if( s != "Service Temporarily Unavailable" ) break;
iimPlay("CODE:REFRESH");
}
STUCheck.iimはこのようになっています。
TAB T=1
FRAME F=2
TAG POS=1 TYPE=H1 ATTR=TEXT:* EXTRACT=TXT
しかし、これでは上手くいきませんでした。
このダイアログが表示されてしまい、iMacrosの実行が進まなくなってしまいます。
公式のフォーラムを参考になる情報はないかと色々見てみました。
iOpus • View topic - Refresh and POSTDATA. Please help
このページに拠るとこの様な場合はBACKコマンドを使えば良いようです。
早速、スクリプトを書き換えてみました。
iimPlay("PageDisplay");
while(1) {
iimPlay("STUCheck");
s = iimGetLastExtract(1);
if( s != "Service Temporarily Unavailable" ) break;
iimPlay("CODE:BACK");
iimPlay("PageDisplay");
}
実際に動かしてみると上手く行きました。これで503が発生した場合は上手く行くようになりました。しかし、それ以外のエラーが発生した場合等の対応は出来ていません。全部ちゃんとやろうとすると結構大変です。httpのステータスコードが取得できればもうちょっと簡単に対応できると思うのですが、どうもiMacrosを通して取得することは出来ないようです。それとこういったエラー処理はテストが面倒ですね。そうそう都合良くエラーが起こってくれるってことは無いですからね。本来ならローカルにサーバーを立てて、テストするべきかも知れません。しかし、さすがにそこまでやろうとは思いません。
ところで、スクリプトをループさせて長い間動かしていると、段々実行速度が遅くなってしまいます。なぜそうなってしまうのか分かりませんが対処療法は分かりました。FireFoxをいったん終了して、立ち上げなおせばもとのスピードに戻ります。ちょっと面倒ですが、今はこの方法でしのいでいます。
PR