タイトル | : javascriptで生成されるリストをwebbrowserから操作できない |
記事No | : 11450 |
投稿日 | : 2015/06/30(Tue) 17:42 |
投稿者 | : まゆぱん |
現在Windows7、VB2008で下記のようなサイトを自動で操作するプログラムを作成しております。 WebBrowserのバージョンはIE11を使用しています。
http://nsoyi.pw/test/
自動操作の内容は以下の流れを考えています。
@ 上記テストサイトでラジオボタン2をクリックしてリストボックス3つ(大分類・中分類・小分類)を表示させる。 A 大分類を選択する→javascriptで自動的に中分類が表示される。 B 中分類を選択する→javascriptで自動的に小分類が表示される。 C 小分類を選択する。
@はできたのですが、Aで大分類を選択しても中分類が表示されません。 (ウェブブラウザー上で手動で大分類をクリックすると中分類が表示されるのですが、プログラムで選択すると表示されません・・・)
ちなみに下記ソース内の hecTags2(0).SetAttribute("value", "2078297513") '【選択箇所】 を hecTags2(0).Children(1).SetAttribute("selected", "true") や hecTags2(0).Children(1).InvokeMember("click") に変えてもうまくいきませんでした。
説明が下手で申し訳ないのですが、 どなたかお知恵をお貸し頂けると幸いです。 宜しくお願い致します。
============ ソースです ===============
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.WebBrowser1.Navigate("http://nsoyi.pw/test/") '←URLの先頭にhを追加して下さい。 End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim hecTags As HtmlElementCollection Dim hecTags2 As HtmlElementCollection Dim strData As String
'「ラジオボタン2」をクリック hecTags = Me.WebBrowser1.Document.GetElementsByTagName("div") For Each objTag As HtmlElement In hecTags strData = objTag.GetAttribute("classname") If String.Compare(strData, "main_category") = 0 Then hecTags2 = objTag.GetElementsByTagName("input") For Each objTag2 As HtmlElement In hecTags2 strData = objTag2.GetAttribute("value") If String.IsNullOrEmpty(strData) Then objTag2.InvokeMember("Click") Exit For End If Next Exit For End If
Next objTag
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim hecTags As HtmlElementCollection Dim hecTags2 As HtmlElementCollection Dim strData As String
'大分類を選択 hecTags = Me.WebBrowser1.Document.GetElementsByTagName("div") For Each objTag As HtmlElement In hecTags strData = objTag.GetAttribute("classname") If String.Compare(strData, "main_category") = 0 Then hecTags2 = objTag.GetElementsByTagName("select") For Each objTag2 As HtmlElement In hecTags2 If hecTags2.Count >= 3 Then
hecTags2(0).SetAttribute("value", "2078297513") '【選択箇所】 hecTags2(0).RaiseEvent("onChange")
End If Next Exit For End If
Next objTag
End Sub
End Class
|