Blue Prism で Internet Explorer の複数タブを操作する
「私は技術者です」
・・・言うのは簡単だが、本当に技術で飯を食うっていうのは、
ハードル高いよなぁ。。
Internet Explorer と Attach: 延長戦
前回、Internet Explorer と Attach について書きました。
いろいろクドクドと書いてますが、
要するに Internet Explorer については、 Child Index = 0 にしよう、という話です。
・・・では、タブが複数ある場合はどうするのでしょうか。
具体的には以下のような質問です。
Internet Explorer のプロセスを Process Explorer で見てみる
・・・見出しが紛らわしい!
Child Index = 0 にすると、どうやら iexplore.exe のマネージ プロセスを見ているようですが、
(PIDを決め打ちして Attach すると、確認できます)
試しに、その時の iexplore.exe とウィンドウ・タイトルの関係を、Process Explorer で見てみます。Process Explorer については、以下を参照ください。
例えば、以下のように IE で2つのタブを立ち上げます。
アクティブなタブは、左側の MSN のWebサイトです。
このとき、iexplore.exe とウィンドウ・タイトルの関係は以下のようになっています。
マネージ プロセス(PID = 10720)側にウィンドウ・タイトルが出てますね。
じゃあ、右側の Yahoo のWebサイトが表示されるタブをアクティブにすると、
iexplore.exe とウィンドウ・タイトルの関係は以下のようになります。
マネージ プロセス(PID = 10720)のウィンドウ・タイトルが切り替わってますね。
したがって、新しいタブが出てきたとしても、きちんと選択されていれば、Child Index = 0 のままで、HTMLモードで認識・操作が可能だと思います。
複数のウィンドウが立ち上がった場合はどうなの?
ここがちょっとよくわからない・・・
(ひとつのIEから新しいウィンドウが立ち上がる場合は、
新しいタブと同じ扱いです。
よくわからないのは、全く野良で立ち上がったIEの画面の場合)
一応、PIDを決め打ちにすると、複数の Internet Explorer のマネージ プロセスを Attach できるので、複数の Internet Explorer を HTMLモードでスパイできます。
ただ、PIDは実行時に変わってしまうはずなので、このやり方は実験的にしか使えない・・・
なんか良い方法があれば、ぜひ、お教えください。
コメント、歓迎です。
まとめ
- やっぱり Internet Explorer については、Child Index = 0 にしよう
- Child Index = 0 のままで、複数タブも処理できる(たぶん)
- 複数の Internet Explorer を立ち上げて、マネージ プロセスをつかむことは可能だが、あんまり良い方法がわかってない
・・・今回の記事は、とてもじゃないが、技術者が書くような出来ではないですね。
まだまだ、精進あるのみ。