質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

受付中

VBSでのIE操作(AngularJSのページ)でプルダウン選択が効かない

退会済みユーザー

退会済みユーザー

総合スコア0

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

1回答

0リアクション

0クリップ

5865閲覧

投稿2017/03/22 01:45

編集2017/03/22 01:49

###前提・実現したいこと
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

<?xml version="1.0" encoding="utf-8" ?> <package> <job> <runtime></runtime> <script language="VBScript"> <![CDATA[ Sub IEClose() 'IEを閉じる Dim objProcess Dim objProcList Dim strProcName strProcName = "iexplore.exe" Set objProcList = GetObject("winmgmts:").InstancesOf("win32_process") For Each objProcess In objProcList If LCase(objProcess.Name) = strProcName Then objProcess.Terminate Exit For End If Next Set objProcList = Nothing End Sub Sub waitPage(objIE) 'IEブラウザが開くまで待つ WScript.sleep (300) Do While objIE.busy Loop Do While objIE.Document.readyState <> "complete" Loop End Sub Sub getPage(objIE, strURL) 'ページを取得する関数 objIE.Navigate (strURL) Call waitPage(objIE) End Sub set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Visible = True Call getPage(objIE, "http://153.121.53.155/q/angular_test.html") Call waitPage(objIE) Set money_select = objIE.Document.getElementsByTagName("SELECT")(0) money_select.selectedIndex = 2 money_select.fireEvent("onchange") Call waitPage(objIE) Set objBtn = objIE.Document.getElementsByTagName("button") objBtn(0).click Call waitPage(objIE) ]]> </script> </job> </package>

###試したこと

・だめもとで、プルダウンのoption要素に対しても、fireEventをつけてみたのですが挙動は変わらずでした。

vbscript

Set money_option = objIE.Document.getElementsByTagName("OPTION")(2) money_option.fireEvent("onchange")

###補足情報(言語/FW/ツール等のバージョンなど)

VBS
・IE11を操作

スクレイピング先ページ ライブラリ
・AngularJS v1.2.26

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。