Почему, когда я пытаюсь нажать кнопку веб-сайта, используя webBrowser, он не щелкает?

Внутри события нажатия кнопки я сделал

private void button2_Click(object sender, EventArgs e) { webBrowser4.DocumentCompleted += webBrowser4_DocumentCompleted; webBrowser4.ScriptErrorsSuppressed = true; webBrowser4.Navigate("http://www.tapuz.co.il/forums/addmsg/393"); } 

Затем в DocumentCompleted

 bool addmessage = false; void webBrowser4_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (this.webBrowser4.Document != null && webBrowser4.ReadyState == WebBrowserReadyState.Complete) { if (addmessage == false) { HtmlElementCollection items = webBrowser4.Document.GetElementsByTagName("div"); foreach (HtmlElement item in items) { if (item.GetAttribute("className") == "elements") { webBrowser4.Document.GetElementById("ctl00_RightMainContent_txt_subject").InnerText = "עדכוני ערב למחוק"; webBrowser4.Document.GetElementById("ctl00_RightMainContent_submitAddress_p_submitButtom").InvokeMember("Click"); addmessage = true; break; } } } } } 

Внутри страницы, когда я делаю Inspect Element в ящике subjest, я вижу:

 

Когда я делаю на кнопку отправки сообщения «Проверить элемент», я вижу

 

Это мои скриншоты:

Первый снимок экрана – это то, как я вижу веб-сайт в элементе управления WebBrowser : все текстовые и текстовые поля не отображаются.

В веб-браузере

Вот как это делается на веб-сайте Chrome или IE, как и должно быть:

В оригинале веб-сайта

Вы нажимаете на div, пока вы нажимаете на кнопку.

Например, если вы хотите нажать кнопку פרסם в приведенной ниже структуре, вы должны найти кнопку, а затем нажать на нее.

Состав:

 

Пример того, как найти кнопку:

Если вы уверены, что кнопка является единственным элементом, имеющим class="btn_send mianBtn btn opensans" вы можете найти его напрямую, но если его возможно иметь некоторые другие кнопки, имеющие этот точный class в документе, вы должны найти кнопку на основе div :

 var div = webBrowser1.Document.GetElementById("ctl00_RightMainContent_submitAddress_p_submitButtom"); if (div != null) { var button = div.All.Cast().Where(x => !string.IsNullOrEmpty(x.GetAttribute("class")) && x.GetAttribute("class").Contains("btn_send")).FirstOrDefault(); if (button != null) button.InvokeMember("click"); else MessageBox.Show("Button not found."); } 

Также, когда вы найдете div, вы можете использовать этот код, чтобы найти кнопку:

 var button = div.All[0]; 

Чтобы правильно загрузить сайт в веб-браузере:

Кажется, вам нужно отключить параметры совместимости для управления веб-браузером. Следуйте инструкциям, чтобы отключить параметр с помощью реестра.

Я применил настройки в HKEY_CURRENT_USER чтобы заставить его работать:

 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 

и эти значения:

 "YourApplicationFileName.exe"=dword:00002af9` "YourApplicationFileName.vshost.exe"=dword:00002af9`