|
■No68218 (ジョニー さん) に返信 > そこで下記のHTMLが書かれたページにアクセスして、 id 属性があるので、doc.Body.All.GetElementsByName("fruits") よりも、 doc.GetElementById("fruits") の方が良いかと。
> この場合にvalue="0"の【さくらんぼ】を選択させるには 項目位置が 10 個目なので、 webBrowser1.Document.GetElementById("fruits").SetAttribute("selectedIndex", "10"); とか。
検索するなら、たとえばこんな感じ。
// 案1 dynamic fruits = webBrowser1.Document.GetElementById("fruits").DomElement; foreach (var opt in fruits.options) { if (opt.value == "0" && opt.text == "さくらんぼ") { fruits.selectedIndex = opt.index; break; } }
// 案2 var fruits = webBrowser1.Document.GetElementById("fruits"); var index = fruits.Children.OfType<HtmlElement>() .Where(tag => tag.TagName == "OPTION") // TagName は常に大文字を返す .Select((tag, i) => new { i, value = tag.GetAttribute("value"), text = tag.InnerText }) .Where(x => x.value == "0" && x.text == "さくらんぼ") .Select(x => x.i).DefaultIfEmpty(-1).FirstOrDefault(); fruits.SetAttribute("selectedIndex", index.ToString());
|