超丁寧UWSC入門講座②:IEを使ったWebフォームへの入力

UWSC

UWSCでWeb画面に入力させてみたい!

UWSC入門講座2回目は、Web入力の自動化方法を紹介したいと思います。
UWSCでWeb入力を行う場合は、ChromeやEdge等のイマドキのブラウザには十分に対応していないため、基本的にIEを使用します。

第一回から見たい方は、こちらを参照してください。

今回の講座内容

  • IEの起動方法
  • IEで表示したサイトへの文字入力
  • 自作関数の使い方

IEの起動

IEオブジェクトの作成

////IEを起動してフォームに文字を入力する////

// URLを設定
Const url="https://takashi002013.com/contact/"

// IEを起動する
FUKIDASI("IE起動中") 
ie = CreateOLEobj("InternetExplorer.Application")

8行目のie=CreateOLEobj(“InternetExplorer.Application”)にてIEのオブジェクトを作成し、変数ieに格納しています。

また、4行目で後に使用するのでurlを定数で定義しています。VBAなどと同様にConstで定数を定義できます。

IEの起動、表示

////IEを起動してフォームに文字を入力する////

// URLを設定
Const url="https://takashi002013.com/contact/"

// IEを起動する
FUKIDASI("IE起動中") 
ie = CreateOLEobj("InternetExplorer.Application")

// IEを表示させる
ie.visible = True

// 左上に表示させる
id = HNDtoID( ie.hwnd )
ACW( id, 0, 0 )

// IEを最大化表示
CtrlWin( id, MAX )

11行目のie.visible=Trueで、IEを表示させています。

14行目のid=HNDtoID(ie.hwnd)はハンドル値をIDに変換する関数で、ieのハンドル値からidを取得しています。

ハンドル値とは、ウィンドウを開いたときにランダムに割り当てられる値です。UWSCでは、アプリケーションを特定するためにidを使用するため、idに変換しています。

15行目ACW(id,0,0)で、IEの表示位置を決めています。第二引数がx座標、第三引数がy座標です。今回は、両方を0と指定しているので、画面左上に表示されます。

18行目のCtrlWin(id,MAX)でIEの表示方法を指定しています。第二引数にMAXとしているため最大化表示されます。

CtrlWinは第二引数の指定によって様々な動作をします。

MAX:最大化
MIN:最小化
CLOSE:閉じる
HIDE:非表示
SHOW:表示

Webサイトを表示

////IEを起動してフォームに文字を入力する////

// URLを設定
Const url="https://takashi002013.com/contact/"

~略~
~略~
~略~

// URLを表示
FUKIDASI("Webサイトを表示") 
ie.navigate( url )
waitIE( ie )


// IEが画面表示完了するまで待ち続ける
Procedure waitIE( ie)
  repeat
    Sleep( 0.1 )
  until ( ! ie.Busy ) and ( ie.ReadyState = 4 )
  
    Sleep( 0.2 )
Fend

12行目のie.navigate(url)で指定したurlを表示しています。urlはコード先頭で定義しています。今回は、当ブログの問い合わせフォームを使用します。

13行目のwaitIEは自作関数で、IEの画面表示が完了するまで待ち受ける関数です。

自作関数
ProcedureとFendの間に処理を書きます。戻り値ありの場合は、ProcedureではなくFunctionを使用します。

Procedure [関数名]([引数])

  ~処理~

Fend

Webサイトに情報を入力

////IEを起動してフォームに文字を入力する////

// URLを設定
Const url="https://takashi002013.com/contact/"

// IEを起動する
FUKIDASI("IE起動中") 
ie = CreateOLEobj("InternetExplorer.Application")

// IEを表示させる
ie.visible = True

// 左上に表示させる
id = HNDtoID( ie.hwnd )
ACW( id, 0, 0 )

// IEを最大化表示
CtrlWin( id, MAX )


// URLを表示
FUKIDASI("Webサイトを表示") 
ie.navigate( url )
waitIE( ie )

// Webサイトに情報を入力
FUKIDASI("Webサイトに入力中") 
IESetData(ie,True,"contact-kind","ご相談")     // ラジオボタン選択
IESetData(ie,"自動化 太郎","your-name")        // テキスト入力
IESetData(ie,"automation@takashi002013.com","your-email") // テキスト入力
IESetData(ie,"UWSCテスト","your-subject")      // テキスト入力
IESetData(ie,"問い合わせ内容","your-message")   // テキスト入力

//送信ボタンクリック(Tab+Enter)
ScKey(id,VK_TAB,VK_RETURN) 

//IEを終了
ie.Quit

// IEが完全に立ち上がるまでの間、待ち続ける
Procedure waitIE( ie)
  repeat
    Sleep( 0.1 )
  until ( ! ie.Busy ) and ( ie.ReadyState = 4 )
  
    Sleep( 0.2 )
Fend

28行目からのIESetDataでWebサイトを操作しています。
テキストボックスの場合は、IESetData(ie,[入力したい値],[HTML要素のName属性],)
ラジオボタンの場合は、IESetData(ie,True,[HTML要素のName属性],[選択したいHTML要素のラベル])となります。

例えば、IESetData(ie,”自動化 太郎”,”your-name”) の場合は、Name=”your-name”の要素に対し、”自動化 太郎”を入力しています。

送信ボタンクリックは、前回の講座でも紹介したScKeyを使用しています。わからない方は前回の講座を参照してください。

HTML要素のName属性を調べる方法(Chromeの場合)
調べたい要素で右クリック→検証とクリックすると、対応するHTML要素が表示されるので、そこからName=”xxxx”となっている部分を探します。xxxxの部分がNameの値となります。

画像に alt 属性が指定されていません。ファイル名: 2020-05-23_21h30_06-1024x416.gif

動作の様子

完成したスクリプトの動作の様子がこちらです。掲載するうえで見やすくするために、スクリプトにSleepをいくつか追加しています。

まとめ

UWSC講座第二回として、IEを使ったWeb操作の方法を紹介しました。実のところWeb操作は癖があり、HTMLの書き方によっては、今回の方法では動作しない場合があるので、注意が必要です。様々な場合の対応方法については今後どこかで紹介したいと思います。

次回は、Excelデータを読み込んで、Webの入力フォームに複数の明細を入力する方法を紹介致します。

これからの時代、プログラミングは必要不可欠です。独学でもエンジニアにはなれますが、多くの人が躓き諦めていくのが現状です。最短で4か月でプロになれるプログラミングスクールのTECH CAMPなどのサービスを活用することが成功への近道です。

コメント

タイトルとURLをコピーしました