Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式从.NET Webbrowser控件的下拉列表中选择项_C#_Javascript_Html_.net - Fatal编程技术网

C# 以编程方式从.NET Webbrowser控件的下拉列表中选择项

C# 以编程方式从.NET Webbrowser控件的下拉列表中选择项,c#,javascript,html,.net,C#,Javascript,Html,.net,下面是一个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-medi

下面是一个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>
任何快速帮助都将不胜感激。

试试这个

   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");

这是您的解决方案,只需通过示例:

你试过这个吗:

webBrowser1.Document.GetElementById("MySite.condition_s").selectedIndex = 1

最后,我和我的一个朋友找到了答案。这个小函数将很容易完成其余的工作

感谢Farrukh Momin和他的时间

    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;
    }
调用函数

    this.SetComboItem("MySite.condition_s", "First");

我发现,如果您只是一个接一个地调用click,您应该能够通过在其中执行for循环click来找到您想要的内容

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");
   }
}
在win7-ie11上测试100%工作代码

摘自:

c | WebBrowser控件-以编程方式在html select上选择项


很抱歉,没有selectedIndex属性。您可能必须首先转换到下拉控件。GetElementById返回一个元素,该元素没有该属性。我认为所有解决方案都不起作用,这与输入和UL有关,而与SELECT&选项无关。我的html和javascript非常糟糕:。webBrowser1.Document.GetElementByIdMySite.condition\s是否返回任何内容?您可以获取selects子项并在其中一个子项上设置所选属性。Explain根本不起作用。所有解决方案都不起作用,我认为这与输入和UL有关,而不是与SELECT&选项有关。我在html和javascript方面真的很差:。用冷静的头脑再看一遍你的代码。你会明白的。一切都很好。没有一个解决方案是有效的,我认为这与输入和UL有关,而不是与选择选项有关。我在html和javascript方面真的很差:。
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");
   }
}
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... 
  } 
}