2015年6月6日土曜日

C#でIEを自動制御しよう (10) セレクトボックス(メニュー)の選択肢を選択する

■セレクトボックス(メニュー)の選択肢を選択する

ドロップダウンリストととも呼ばれるタイプのアレ、の選択肢を選択します。ざっと試してみた感じでは3通りほどやり方がありました。

サンプルコード

補足説明

1つ目は、要素をmshtml.HTMLSelectElementに変換後、selectedIndexプロパティを使う方法。目視でどの要素を選択したいか(何番目の要素を選択したいか)を決め打ちできる場合は、この方法が楽ですね。ただし、要素の順番が不定の場合は使えないでしょう。

2つ目は、同じくmshtml.HTMLSelectElementに変換後、setAttributeメソッドを用いてvalue属性を設定する方法。HTMLのソースを見て、optionタグごとにvalueが固定されていれば利用できる感じです。

3つ目は、同じくmshtml.HTMLSelectElementに変換後、optionsプロパティを呼び出し、各要素をmshtml.HTMLOptionElementに変換して、innerTextが所望の文字列と合致するかを確認しています。文字ベースで、選択肢を選択したい場合はこれ一択ですね。本当はLINQを使いたいところなのですが、上手いことCastできなかったのでforeachで回しています…。