Seleccionar programáticamente un elemento de un menú desplegable en .NET Webbrowser Control

A continuación se muestra un script html, lo agarré de un sitio web. Quiero seleccionar el elemento programáticamente usando .NET

  • Please choose
  • First
  • Second
Please choose First Second

Tenga en cuenta que el siguiente código no funciona en absoluto.

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

Cualquier ayuda rápida será muy apreciada.

Finalmente lo averiguo con uno de mis amigos. Esta pequeña función hará el rest muy fácilmente.

Gracias a Farrukh Momin y su tiempo.

  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; } 

Función de llamada

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

¿Has probado esto?

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

Prueba esto.

  HtmlDocument document = webBrowser1.Document; HtmlElement siteCondition = document.GetElementById("MySite.condition_s"); var option = siteCondition.Children.Cast().First(x => x.GetAttribute("value").Equals("First")); option.SetAttribute("selected", "selected"); 

Fundé eso si solo invocas clic uno por uno, deberías poder encontrar lo que quieres haciendo un clic for loop dentro de él.

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

Código de trabajo al 100% (probado en win7 – ie11)

tomado de:

c # | Control WebBrowser: seleccione el elemento mediante progtwigción en html select
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... } }