UWSCからfirefoxやchromeを操作しようとしています。今回は実際に操作してみました。やっぱりFirefoxとChromeで挙動が異なりました。その二つのブラウザでテストページを操作してみました。
○firefoxやchromeを実際に制御する
ポク太郎です。
UWSCでfirefoxやchromeの操作をしようとしています。今回はこちらの(ポク太郎のUWSC奮闘記テストページ)を作り実際に操作してみました。
バージョンにより違いが出るかもしれないので一応↓。
FireFox:54.0.1(64ビット)
Chrome:59.0.3071.115(64ビット)
——追記(FireFoxの制御に関して)
2017年10月初にFireFoxv56、11月中にv57Quantum(←爆速です)がリリースされました。
少し触ってみたところアクセスビリティの仕様が変更になっているようで、現状のUWSCでは制御できないようです。これはUWSCの対応待ちとなります。(対応するかどうかわかりませんが)
誤解を招いてはいけないので、こちら↓。
UWSCから操作しやすいのはIEやSleipnirですが、そんなの使いたくありません。UWSCでわざわざfirefoxやchromeを操作するのはよい選択肢とは思えませんが、敢えてイバラの道を進んでみます…。
【ご注意】今後、うまく行かず粉砕されるかもしれません。参考程度にどうぞ。
※1 以前からの記事の自作関数等が前提になっておりますので、意味不明な関数が出てきたらこちらを参照して下さい。
※2 firefoxとchromeではアイテムの見え方(ALL_ITEM_LIST[]の内容)が全く異なります。実際に目的のページを操作する場合は前回の記事を参照して、ALL_ITEM_LIST[]がどのようになっているか調べながら作成する必要があります。↓利用してみてください。
Chromeでテストページを操作してみた
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | brwz=“chrome“ path=“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe“ tout=15 bstart(path) CLKITEM(id,“海外“,CLK_ACC) |
1~3行目 | 1 2 3 | brwz=“chrome“ path=“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe“ tout=15 |
変数を設定しています。グローバル変数brwzにブラウザ名、変数pathにアプリケーションのパス(適宜書き換えてください。)、変数toutはページ表示待ちのタイムアウト[秒]です。 | ||
5~8行目 | 5 6 7 8 | bstart(path) bopen(“http://pokutaro.blogspot.jp/p/blog–page_10.html“) id=bid(brwz) wait_ready(tout) |
変数pathで指定されたブラウザを立ち上げ、記載のURL(テストページです)を開き、ブラウザのアプリID取得、読み込み待ちを行います。これらの関数は、以下の記事で作成した自作関数です。 [UWSC]firefoxやchromeを操作できるか試してみる関数 [UWSC]firefoxやchromeでタブを作ってページを開く関数 [UWSC]firefoxやchromeの読み込み完了を判定する関数(←こちらの記事では画像認識を用いて判定しています。面倒な方はwait_ready()関数を読み込みが確実に完了する時間待ち(SLEEP(15)等)に変更して試してください。) | ||
10~12行目 | 10 11 12 | CLKITEM(id,“海外“,CLK_ACC) SENDSTR(id,“ガボ“,2,True) SENDSTR(id,“お前アホやろ“,3,True) |
テストページ内にあるプルダウンメニュー、エディットフィールドx2を操作します。 UWSC標準命令CLKITEM(アプリID,アイテム名,種別):アプリIDのアイテム名を指定の種別で選択、クリックします。 テストページのプルダウンは居住地を選択するプルダウンメニュー。(“海外”を選択することにします。)指定方法はFireFoxと異なっていました。プルダウンの選択肢はALL_ITEM_LISTを調べたところ、ITM_ACCCLKの種別内にありましたが、Chromeでは10行目のようにCLK_ACCを指定しないと反応しませんでした。(ITM_ACCCLK指定は使えない。ページによっても違うことが十分考えられるので注意。) 11、12行目は、エディットフィールドに文字を送信しています。 | ||
14行目 | 14 | CLKITEM(id,“送信する“,CLK_ACC) |
“送信する”ボタンはITM_ACCCLKの種別内にありました。FireFox、Chrome共にCLK_ACC指定で動きました。 | ||
16~18行目 | 16 17 18 | SCKEY(id,VK_ESC) CLKITEM(id,“リンク(別タブで開く)“,ITM_LINK) wait_ready(tout) |
ブラウザにESCキーを送信し(送信をキャンセル)、ページ内の“リンク(別タブで開く)”をクリックします。18行目は読み込み待ち。 17行目でのリンクのクリックはITM_LINK指定で操作可能でした。 | ||
20~22行目 | 20 21 22 | SCKEY(id,VK_CTRL,VK_F4) CLKITEM(id,“リンク“,ITM_LINK) wait_ready(tout) |
ブラウザにCtrl+F4キーを送信し(タブを閉じる)、ページ内の“リンク”をクリックします。22行目は読み込み待ち。 21行目でのリンクのクリックはITM_LINK指定で操作可能でした。 | ||
13,15,19行目 | 13 15 19 | SLEEP(2) SLEEP(5) SLEEP(2) |
動作を目視確認しやすくするために休止を入れました。 |
上記のコードで、
ブラウザ立ち上げ→ページ開く→プルダウン操作、文字入力→送信ボタン→キャンセル後リンク選択→タブ消して別のリンク選択
と動きました。
FireFoxでテストページを操作してみた
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | brwz=“firefox“ path=“C:\Program Files\Mozilla Firefox\firefox.exe“ tout=15 bstart(path) CLKITEM(id,“海外“,ITM_ACCCLK and CLK_BACK) |
1~3行目 | 1 2 3 | brwz=“firefox“ path=“C:\Program Files\Mozilla Firefox\firefox.exe“ tout=15 |
変数を設定しています。グローバル変数brwzにブラウザ名、変数pathにアプリケーションのパス(適宜書き換えてください。)、変数toutはページ表示待ちのタイムアウト[秒]です。 | ||
5~8行目 | 5 6 7 8 | bstart(path) bopen(“http://pokutaro.blogspot.jp/p/blog–page_10.html“) id=bid(brwz) wait_ready(tout) |
変数pathで指定されたブラウザを立ち上げ、記載のURL(テストページです)を開き、ブラウザのアプリID取得、読み込み待ちを行います。これらの関数は、以下の記事で作成した自作関数です。 [UWSC]firefoxやchromeを操作できるか試してみる関数 [UWSC]firefoxやchromeでタブを作ってページを開く関数 [UWSC]firefoxやchromeの読み込み完了を判定する関数(←こちらの記事では画像認識を用いて判定しています。面倒な方はwait_ready()関数を読み込みが確実に完了する時間待ち(SLEEP(15)等)に変更して試してください。) | ||
10~17行目 | 10 11 12 13 14 15 16 17 | CLKITEM(id,“海外“,ITM_ACCCLK and CLK_BACK) FOR i=0 TO 48 SCKEY(id,VK_DOWN) NEXT SLEEP(0.1) SCKEY(id,VK_ENTER) SENDSTR(id,“ガボ“,2,True) SENDSTR(id,“お前アホやろ“,3,True) |
テストページ内にあるプルダウンメニュー、エディットフィールドx2を操作します。 UWSC標準命令CLKITEM(アプリID,アイテム名,種別):アプリIDのアイテム名を指定の種別で選択、クリックします。 テストページのプルダウンは居住地を選択するプルダウンメニュー。(“海外”を選択することにします。)指定方法はCromeと異なっていました。プルダウンの選択肢はALL_ITEM_LISTを調べたところ、ITM_ACCCLKの種別内にありましたが、FireFoxでは10行目のようにITM_ACCCLK and CLK_BACKと、バックグラウンド指定を追加しないと反応しませんでした。(ITM_ACCCLK指定だけだと使えない。ページによっても違うことが十分考えられるので注意。) また、クリックしてもプルダウンが開くだけで指定ができません。なので、11~15行目にキーボード入力(↓キーx49回+ENTERキー)を送信して、選択、決定をしないと動きませんでした。 16、17行目は、エディットフィールドに文字を送信しています。 | ||
19行目 | 19 | CLKITEM(id,“送信する“,CLK_ACC) |
“送信する”ボタンはITM_ACCCLKの種別内にありました。FireFox、Chrome共にCLK_ACC指定で動きました。 | ||
21~23行目 | 21 22 23 | SCKEY(id,VK_ESC) CLKITEM(id,“リンク(別タブで開く)“,ITM_LINK) wait_ready(tout) |
ブラウザにESCキーを送信し(送信をキャンセル)、ページ内の“リンク(別タブで開く)”をクリックします。23行目は読み込み待ち。 22行目でのリンクのクリックはITM_LINK指定で操作可能でした。 | ||
25~27行目 | 25 26 27 | SCKEY(id,VK_CTRL,VK_F4) CLKITEM(id,“リンク“,ITM_LINK) wait_ready(tout) |
ブラウザにCtrl+F4キーを送信し(タブを閉じる)、ページ内の“リンク”をクリックします。27行目は読み込み待ち。 26行目でのリンクのクリックはITM_LINK指定で操作可能でした。 | ||
18,20,24行目 | 18 20 24 | SLEEP(2) SLEEP(5) SLEEP(2) |
動作を目視確認しやすくするために休止を入れました。 |
上記のコードで、
ブラウザ立ち上げ→ページ開く→プルダウン操作、文字入力→送信ボタン→キャンセル後リンク選択→タブ消して別のリンク選択
と動きました。
○firefoxやchromeを実際に制御する
コメント