2017年7月28日金曜日

[UWSC]firefoxやchromeを実際にUWSCで操作してみた

初心者のプログラミング導入のため、UWSCという開発ソフトを使って作り上げる作業を実際にやって見せるカテゴリ。準備した自作関数や使い方、トラブルを記事にしていきます。得るものがあれば幸いです。
UWSCからfirefoxやchromeを操作しようとしています。今回は、実際に操作してみました。やっぱりFirefoxとChromeで挙動が異なりました。その二つのブラウザでテストページを操作してみました。

記事の内容

○firefoxやchromeを実際に制御する

ポク太郎です。
UWSCでfirefoxやchromeの操作をしようとしています。今回はこちらのテストページポク太郎のUWSC奮闘記テストページを作り実際に操作してみました。

バージョンにより違いが出るかもしれないので一応↓。
UWSC:5.2.3.0
FireFox:54.0.1(64ビット)
Chrome:59.0.3071.115(64ビット)


誤解を招いてはいけないので、こちら↓。

現在のブラウザのシェアが大きいのはfirefoxやchromeですが、UWSCはCOMオブジェクト形式を採用しているブラウザ(IEやSleipnir)でないとIDやパスワードをセットする等のアクセスができません。また、取得できるデータが限定されます。
UWSCから操作しやすいのはIEやSleipnirですが、そんなの使いたくありません。UWSCでわざわざfirefoxやchromeを操作するのはよい選択肢とは思えませんが、敢えてイバラの道を進んでみます…。
【ご注意】今後、うまく行かず粉砕されるかもしれません。参考程度にどうぞ。

※1 以前からの記事の自作関数等が前提になっておりますので、意味不明な関数が出てきたらこちらを参照して下さい。

※2 firefoxとchromeではアイテムの見え方(ALL_ITEM_LIST[]の内容)が全く異なります。実際に目的のページを操作する場合は前回の記事を参照して、ALL_ITEM_LIST[]がどのようになっているか調べながら作成する必要があります。↓利用してみてください。


Chromeでテストページを操作してみた

Chromeを立ち上げ、テストページを開いて内部のアイテムを順番に操作するプログラムです。
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)
bopen("http://pokutaro.blogspot.jp/p/blog-page_10.html")
id=bid(brwz)
wait_ready(tout)

   CLKITEM(id,"海外",CLK_ACC)
   SENDSTR(id,"ガボ",2,True)
   SENDSTR(id,"お前アホやろ",3,True)
SLEEP(2)
   CLKITEM(id,"送信する",CLK_ACC)
SLEEP(5)
   SCKEY(id,VK_ESC)
   CLKITEM(id,"リンク(別タブで開く)",ITM_LINK)
   wait_ready(tout)
SLEEP(2)
   SCKEY(id,VK_CTRL,VK_F4)
   CLKITEM(id,"リンク",ITM_LINK)
   wait_ready(tout)
Chromeを制御するプログラム説明
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行目は、エディットフィールドに文字を送信しています。
UWSC標準命令SENDSTR(アプリID,文字列,番号,モード):アプリIDの番号のエディットフィールドに文字列を送信。モードはTrueで書き換え、Falseで追記。
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でテストページを操作してみた

FireFoxを立ち上げ、テストページを開いて内部のアイテムを順番に操作するプログラムです。Chromeに比べアイテムの選択に時間が掛かるようです。
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)
bopen("http://pokutaro.blogspot.jp/p/blog-page_10.html")
id=bid(brwz)
wait_ready(tout)

   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)
SLEEP(2)
   CLKITEM(id,"送信する",CLK_ACC)
SLEEP(5)
   SCKEY(id,VK_ESC)
   CLKITEM(id,"リンク(別タブで開く)",ITM_LINK)
   wait_ready(tout)
SLEEP(2)
   SCKEY(id,VK_CTRL,VK_F4)
   CLKITEM(id,"リンク",ITM_LINK)
   wait_ready(tout)
FireFoxを制御するプログラム説明
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行目は、エディットフィールドに文字を送信しています。
UWSC標準命令SENDSTR(アプリID,文字列,番号,モード):アプリIDの番号のエディットフィールドに文字列を送信。モードはTrueで書き換え、Falseで追記。
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を実際に制御する


関数群のダウンロードはこちら
func_poku.uwsのコメント欄に呼び出し方が書いてあります。


【関連記事】[UWSC]firefoxやchrome上のリンクやボタン等を調べる方法
[UWSC]firefoxやchromeの読み込み完了を判定する関数
[UWSC]高圧縮jpegと劣化なしのbmp画像を取得する関数
[UWSC]firefoxやchromeの開かれているタブ数を得る関数


スポンサーリンク



ブログ村へ blogramのブログランキング

ポク太郎の「俺の説明聞いてくれ」 コンテンツ
ポク太郎の「俺の説明聞いてくれ」最キラー記事 コンピュータ(ハード/ソフト)
映画・ドラマ・芸能
変人のつぶやきとトラブル
ホームへ戻る


0 件のコメント:

コメントを投稿