digengada Ответов: 2

Winform C# как вызвать событие onChange выпадающего списка


Привет, чтобы дать суть того, что я пытаюсь сделать, я запускаю веб-страницу,
как только страница запущена и загружена, она имеет выпадающий список,
Я пытаюсь выбрать значение, значение выбирается, но есть onchange
событие, связанное с ним, которое не увольняется. может ли кто-нибудь помочь мне в том, как я это делаю
запустите это событие, так как при запуске события есть другие элементы управления, которые получают
позволяет. В настоящее время, как только значение в выпадающем списке выбрано, другие элементы управления
не включайтесь.

InternetExplorer WebSiteURL = new InternetExplorer(); // created object for IR 
                WebSiteURL.Navigate("example.com"); // navigating to sign in page url
                System.Threading.Thread.Sleep(5000);
                HTMLDocument myDoc = new HTMLDocument();//creating document object to store page text
                WebSiteURL.Visible = true;
                System.Threading.Thread.Sleep(5000);
                myDoc = (HTMLDocument)WebSiteURL.Document;
                System.Threading.Thread.Sleep(5000);
                SHDocVw.WebBrowser webBrowser1 = new SHDocVw.WebBrowser();
                HtmlElement theList = webBrowser1.Document.GetElementById("ST_SEARCH_TYPE");
                if (myDoc != null)
                {
                    var dropdown = ((IHTMLElement)myDoc.all.item("ST_SEARCH_TYPE"));
                    var dropdownItems = (IHTMLElementCollection)dropdown.children;
                    foreach (IHTMLElement option in dropdownItems)
                    {
                        var value = option.getAttribute("value").ToString();
                        if (value.Equals("P"))
                            option.setAttribute("selected", "selected");
                    }
                }

Это html-код.


-- Выбирать --
Пан - создать / изменить запрос
TAN-New / Change Request

Что я уже пробовал:

Пробовал с invokescript, но безуспешно.

2 Ответов

Рейтинг:
2

Graeme_Grant

Сделайте это от webBrowser1_DocumentComplete(...) событие:

var htmlDocument = webBrowser1.Document as IHTMLDocument2;
  if (myDoc!= null)
  {
     var dropdown = ((IHTMLElement)myDoc.all.item("ST_SEARCH_TYPE"));
     var dropdownItems = (IHTMLElementCollection)dropdown.children;

     foreach(IHTMLElement option in dropdownItems)
     {
        var value = option.getAttribute("value").ToString();
        if(value.Equals("P"))
           option.setAttribute("selected", "selected");
     }

  }


digengada

Я вообще не использовал webbrowser. так как он не работает в winforms. есть какие-нибудь предложения о том, как его использовать?

Graeme_Grant

Что же это такое?

HDocVw.WebBrowser webBrowser1 = new SHDocVw.WebBrowser();

Правка: причина сбоя вашего кода связана с асинхронной загрузкой страницы, поэтому ваш код выполняется (синхронно) до того, как страница будет готова. Вот почему вам нужно зацепить DocumentComplete событие, а затем процесс.

digengada

Не могли бы вы помочь мне с кодом?

Рейтинг:
1

Sandeep1003

Пожалуйста, проверьте это

Работа с Microsoft. mshtml.dll и SHDocVw[^]