###前提・実現したいこと
VBSでIE(11)を操作してスクレイピングするシステムを作っています。
IEで操作したいwebページが、Javascriptのフレームワークである
Angular(1.2)を利用したページでうまく動かない箇所がある為、解決策について相談させて下さい。
宜しくお願いいたします。
■スクレイピングしたいページ
プルダウンを選択して、ボタンを押すと
プルダウンで選択した値がメッセージとして表示されるページです。
(実際のページを見せるわけにはいかないので、簡易的なページで再現しています)
■サンプル
http://153.121.53.155/q/angular_test.html
###発生している問題・エラーメッセージ
VBSのIE操作で、プルダウンを選択してもメッセージに反映されず
「undefinedを選択しました」と表示されてしまいます。
VBSでプルダウン選択・ボタンクリックはできているので
おそらくAngularの動きに原因があるのではと考えています。
VBSで操作したときのIEの挙動(動画):
http://153.121.53.155/q/2017-03-17_1655.swf
###該当のソースコード
vbscript
1<?xml version="1.0" encoding="utf-8" ?> 2<package> 3 <job> 4 <runtime></runtime> 5 <script language="VBScript"> 6 <![CDATA[ 7 Sub IEClose() 8 'IEを閉じる 9 Dim objProcess 10 Dim objProcList 11 Dim strProcName 12 13 strProcName = "iexplore.exe" 14 15 Set objProcList = GetObject("winmgmts:").InstancesOf("win32_process") 16 For Each objProcess In objProcList 17 If LCase(objProcess.Name) = strProcName Then 18 objProcess.Terminate 19 Exit For 20 End If 21 Next 22 Set objProcList = Nothing 23 End Sub 24 25 Sub waitPage(objIE) 26 'IEブラウザが開くまで待つ 27 WScript.sleep (300) 28 Do While objIE.busy 29 Loop 30 Do While objIE.Document.readyState <> "complete" 31 Loop 32 End Sub 33 34 35 Sub getPage(objIE, strURL) 36 'ページを取得する関数 37 objIE.Navigate (strURL) 38 Call waitPage(objIE) 39 End Sub 40 41 set objIE = WScript.CreateObject("InternetExplorer.Application") 42 objIE.Visible = True 43 44 Call getPage(objIE, "http://153.121.53.155/q/angular_test.html") 45 Call waitPage(objIE) 46 47 Set money_select = objIE.Document.getElementsByTagName("SELECT")(0) 48 money_select.selectedIndex = 2 49 money_select.fireEvent("onchange") 50 51 Call waitPage(objIE) 52 53 Set objBtn = objIE.Document.getElementsByTagName("button") 54 objBtn(0).click 55 56 Call waitPage(objIE) 57 ]]> 58 </script> 59 </job> 60</package>
###試したこと
・だめもとで、プルダウンのoption要素に対しても、fireEventをつけてみたのですが挙動は変わらずでした。
vbscript
1Set money_option = objIE.Document.getElementsByTagName("OPTION")(2) 2money_option.fireEvent("onchange")
###補足情報(言語/FW/ツール等のバージョンなど)
VBS
・IE11を操作
スクレイピング先ページ ライブラリ
・AngularJS v1.2.26
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/03/22 07:45
2017/03/22 11:16