スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサーリンク

フォーム操作2(ラジオボタン、チェックボックス、セレクトボックス)

次に、ラジオボタンの選択、チェックボックスのチェック、セレクトボックスの選択の操作です。
スポンサーリンク
  ' ラジオボタンを値ベースで選択します
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
SetRadioButtonメソッドの引数nameにはラジオボタンのinput要素のname属性を、引数valueには選択するvalue属性を指定します。
SetCheckBoxメソッドの引数domIdにはチェックボックスのinput要素のid属性を、引数checkedにはチェック状態を指定します。
SetSelectBoxメソッドの引数domIdにはチェックボックスのinput要素のid属性を、引数labelには選択する文字列(optionタグで囲まれる文字列)を指定します。

ここまでのところで、IEを操作するための部品がそろったことになります。Webブラウザを使って売買注文を行っているときのことを想像してみてください。証券会社のサイトを開き、トップページからログイン、買い注文画面に遷移して、銘柄コードや注文額、注文枚数を入力し、注文ボタンをクリックするところまで、この部品ですべてできることが分かるでしょう。あとはこの部品の組み合わせだけですから、大きなハードルは超えています。次からは、この部品をどう使って、どう組み合わせればよいのかを説明していきます。
スポンサーリンク
<<フォーム操作1(テキストボックス、ボタン) | ホーム | IEオブジェクトをコピーして利用する>>
コメント(-)
コメントの投稿
トラックバック(-)
コメント(0)
コメントの投稿
トラックバック(0)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。