次に、ラジオボタンの選択、チェックボックスのチェック、セレクトボックスの選択の操作です。
' ラジオボタンを値ベースで選択します
Sub SetRadioButton(ByVal name As String, ByVal value As String)
If value.Length < 1 Then
Throw New ArgumentException(String.Format("指定されたvalueのradioButtonは見つかりません。name={0} value={1}", name, value))
End If
Dim radios As MSHTML.IHTMLElementCollection = CurrentDoc.getElementsByName(name)
For i As Integer = 0 To radios.length - 1
Dim rdo As MSHTML.IHTMLInputElement = DirectCast(radios(i), MSHTML.IHTMLInputElement)
Dim ele As MSHTML.IHTMLElement = DirectCast(radios(i), MSHTML.IHTMLElement)
If rdo.value = value Then
ele.click()
System.Threading.Thread.Sleep(100)
Exit Sub
End If
Next i
Throw New ArgumentException(String.Format("指定されたvalueのradioButtonは見つかりません。name={0} value={1}", name, value))
End Sub
' チェックボックスの状態をセットします
Sub SetCheckBox(ByVal domId As String, ByVal checked As Boolean)
' 希望通りのチェック状態でなければクリック
Dim checkBox As MSHTML.IHTMLInputElement = DirectCast(GetElementById(domId), MSHTML.IHTMLInputElement)
If Not (checkBox.checked = checked) Then
ClickInputElement(domId)
End If
End Sub
' セレクトボックスを文言ベースで選択します
Sub SetSelectBox(ByVal domId As String, ByVal label As String)
If label.Length < 1 Then
Throw New ArgumentException(String.Format("指定されたlabelのselectBoxは見つかりません。domId={0} label={1}", domId, label))
End If
Dim selectElm As MSHTML.HTMLSelectElement = DirectCast(GetElementById(domId), MSHTML.HTMLSelectElement)
For i As Integer = 0 To selectElm.options.length - 1
' textが同じか
If selectElm.options(i).innerText = label Then
selectElm.options(i).selected = True
System.Threading.Thread.Sleep(100)
Exit Sub
End If
Next i
Throw New ArgumentException(String.Format("指定されたlabelのselectBoxは見つかりません。domId={0} label={1}", domId, label))
End Sub
' 要素をクリックします
Protected Sub ClickInputElement(ByVal domId As String)
GetElementById(domId).click()
System.Threading.Thread.Sleep(100)
End Sub
SetCheckBoxメソッドの引数domIdにはチェックボックスのinput要素のid属性を、引数checkedにはチェック状態を指定します。
SetSelectBoxメソッドの引数domIdにはチェックボックスのinput要素のid属性を、引数labelには選択する文字列(optionタグで囲まれる文字列)を指定します。
ここまでのところで、IEを操作するための部品がそろったことになります。Webブラウザを使って売買注文を行っているときのことを想像してみてください。証券会社のサイトを開き、トップページからログイン、買い注文画面に遷移して、銘柄コードや注文額、注文枚数を入力し、注文ボタンをクリックするところまで、この部品ですべてできることが分かるでしょう。あとはこの部品の組み合わせだけですから、大きなハードルは超えています。次からは、この部品をどう使って、どう組み合わせればよいのかを説明していきます。
スポンサーリンク