C # Как автоматически нажать кнопку через WebBrowser

#c# #button #browser #submit

#c# #кнопка #браузер #Отправить

Вопрос:

Html-код моей страницы клика является :

 <input type="submit" id="publishButton-ns" class="ubtn ubtn-block"
 name="publish" tabindex="10" value="Publish Post">
  

Я попробовал этот код для нажатия:

 webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("click");
  

но это не нашло кнопку.

Комментарии:

1. Посмотрите на ответ @Ponmalar внизу

Ответ №1:

Это может вам помочь.

 <input type="submit" value="Submit" />

HtmlElementCollection elc = this.webBrowser1.Document.GetElementsByTagName("input");  
foreach (HtmlElement el in elc)  
{  
   if (el.GetAttribute("type").Equals("submit"))  
   {  
        el.InvokeMember("Click");  
   }  
 }
  

Ответ №2:

Вы ждете, пока страница загрузится первой? Вы должны привязать функцию в своем коде, чтобы дождаться загрузки страницы, они нажимают кнопку:

 static void form1_Load() {
    // ...
    webBrowser1.onDocumentReady  = webBrowser_DocumentReady;
}

static void webBrowser1_DocumentReady() {
    webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
}
  

Ответ №3:

Попробуйте комбинацию предложений @adam и прописных букв Click

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document
        .GetElementById("ctl00_main_LoginExpoPlanIt_LoginButton")
        .InvokeMember("Click");
}
  

Только что протестировал это, и это не сработало с «click», но сработало с «Click» 🙂

Я использую .net 4

Комментарии:

1. Кнопка все еще не найдена. Ошибка «NullReferenceException»

2. mdmullinax, спасибо за ваш вклад. У меня также не сработало со СТРОЧНОЙ буквой «c» в «click», но ЗАГЛАВНАЯ буква «C» сработала.

Ответ №4:

РЕДАКТИРОВАТЬ: Это применимо только тогда, когда runat="server" установлено, в данном случае неприменимо, но на всякий случай оставляю для других, приношу свои извинения за отсутствие этого в вопросе.

ASP.Net изменяет название элементов, которые он отображает, на основе структуры, в которой они находятся, вы можете попробовать следующее, чтобы получить окончательное имя элемента:

 webBrowser1.Document.GetElementById("<%=publishButton-ns.ClientID%>").InvokeMember("click");
  

Комментарии:

1. В элементе ввода нет runat =»server», поэтому ASP.NET движок не будет ее трогать.

Ответ №5:

Вы можете использовать jQuery, а затем сделать что-то вроде этого $(«#publishButton-ns»).click();

http://www.jQuery.com/