Sikuli - APPクラスを使って各ブラウザを起動して閉じる

SikuliのAppクラスからインスタンスを作るとフォーカスをあてたり、ウィンドウタイトルを取得できたり、プロセスIDを取得できたり意外と便利です。
ただインスタンスを作るときの引数[アプリケーション名]に何を指定すべきか迷ったのでまとめてみました。

まず起動するときに指定すべきアプリケーション名は「ファイル名を指定して実行」で起動できるものであればいいみたいでした。
各ブラウザーで例えると下記のようになります。

  • Microsoft Edgeの場合 ⇒ microsoft-edge:
  • インターネットエクスプローラの場合 ⇒ iexplore
  • Chromeブラウザの場合 ⇒ chrome
  • Firefoxブラウザの場合 ⇒ Firefox
  • Operaブラウザの場合 ⇒ opera

Appコンストラクタの返値としては、Appインスタンスが返ってきます。
そのインスタンスを使っていろいろ操作できるはずなんですが、Microsoft Edgeだけは操作することができず一旦’Edge’という引数でAppクラスのインスタンスを作り直せば操作できるようになります。

上記5つのブラウザをそれぞれ起動して閉じる操作を行っているソースと動画がありますのでご参照ください。

ソース



今回の検証でAppインスタンスの作り方として分かったことをまとめます。

  • 「ファイル名を指定して実行」で起動できるアプリケーションであればコンストラクタの引数としてOK。
    ただMicosoft Edgeのように起動はできるが、その後Appインスタンスとして操作ができないことがある。
  • 起動しているアプリケーションであれば「タイトルバー」に表示されている一部文字列をコンストラクタの引数として指定すると有効なAppインスタンスすることができる。
    (Microsoft Edgeはこのやり方で、起動後の操作をすることが可能。)
  • exeまでのフルパスを指定してAppインスタンスを作りアプリ起動することも可能だが、返ってきたAppインスタンスを使って操作することはできない。
    (タイトルバーにexeまでのフルパスが表示されていないことが原因のような気もする。)

明確に検証できたわけではありませんが、上記3点を踏まえるとSikuliのAppインスタンスを使った操作をすることがほとんど可能になるので、今回はこれでよしとしたいと思います。