5

以下は、私がWebサイトから取得したhtmlスクリプトです。.NETを使用してプログラムでアイテムを選択したい

<div id="MySite.condition_s-wrp" class="c-wrp-slctbx" style="z-index: 1;">
    <input id="MySite.condition_s-input" type="text" autocomplete="off" readonly="readonly" tabindex="0" class=" c-slctbx-medium" style="width: 268px;">
    <ul class="c-ul-slctbx max_height_300" style="width: 285px; display: none; top: 21px;">
        <li id="MySite.condition_s-option-" class="c-li-slctbx">Please choose</li>
        <li id="MySite.condition_s-option-First" class="c-li-slctbx">First</li>
        <li id="MySite.condition_s-option-Second" class="c-li-slctbx">Second</li>
    </ul>
    <select id="MySite.condition_s" name="attributeMap[MySite.condition_s]" class=" c-slctbx-medium" style="display: none;">
        <option value="">Please choose</option>
        <option value="First">First</option>
        <option value="Second">Second</option>
        </select>
</div>

次のコードはまったく機能しないことに注意してください。

webBrowser1.Document.GetElementById("MySite.condition_s").SetAttribute("value", "First");

迅速なサポートをいただければ幸いです。

4

6 に答える 6

5

Finally I figure it out with one of my friends. This little function will do the rest very easily.

Thanks to Farrukh Momin and his time.

    public void SetComboItem(string id, string value) {
        HtmlElement ee = this.webBrowser1.Document.GetElementById(id);
        foreach (HtmlElement item in ee.Children) {
            if (item.OuterHtml.ToLower().IndexOf(value.ToLower()) >= 0) {
                item.SetAttribute("selected", "selected");
                item.InvokeMember("onChange");
            }
            else {
                item.SetAttribute("selected", "");
            }
        }

        ee = this.webBrowser1.Document.GetElementById(id + "-input");
        ee.InnerText = value;
    }

Calling Function

    this.SetComboItem("MySite.condition_s", "First");
于 2013-03-07T23:16:40.607 に答える
2

これを試しましたか:

webBrowser1.Document.GetElementById("MySite.condition_s").selectedIndex = 1
于 2013-03-07T07:41:50.633 に答える
1

これを試して。

   HtmlDocument document = webBrowser1.Document;
        HtmlElement siteCondition = document.GetElementById("MySite.condition_s");

        var option = siteCondition.Children.Cast<HtmlElement>().First(x => x.GetAttribute("value").Equals("First"));
        option.SetAttribute("selected", "selected");
于 2013-03-07T07:40:58.647 に答える
1

これがあなたの解決策です例を見てください:http ://www.vbforums.com/showthread.php?701093-Webbrowser-Control-Select-Dropdownlists-option

また

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvb/thread/b1273d78-d4af-49e0-9238-6f86e9952484/

于 2013-03-07T07:41:29.523 に答える
0

100% 動作するコード (win7 - ie11 でテスト済み)

から取得:

c# | WebBrowser コントロール - プログラムで HTML 選択の項目を選択
http://mdb-blog.blogspot.com/2016/12/c-browser-control-programmatically.html

HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("select") 
foreach (HtmlElement heItem in col) 
{ 
  if (heItem.GetAttribute("className").Contains("exampleClassName") == true) 
  { 
    heItem.SetAttribute("selectedIndex", "3"); // select value at #3
    break; // incase of needed... 
  } 
} 
于 2016-12-22T07:40:25.257 に答える
0

クリックを1つずつ呼び出すだけで、その中でforループクリックを実行することで、必要なものを見つけることができるはずです。

HtmlElement site = this.webBrowser2.Document.GetElementById("myId");
foreach (HtmlElement item in site.Children)
{ 
   if (item.InnerText.ToString() == "something")
   {
       item.InvokeMember("Click");
             break;
   }
       else
   {
       item.InvokeMember("Click");
   }
}
于 2015-02-17T10:47:59.173 に答える