Подтвердить что ты не робот

С# Как автоматически щелкнуть кнопку через WebBrowser

Код 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");

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

Спасибо, Advance!

4b9b3361

Ответ 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

Ответ 4

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

http://www.jQuery.com/

Ответ 5

EDIT: Это применимо только тогда, когда runat="server" установлен, не применим в этом случае, но оставляя для других на всякий случай, извиняюсь за отсутствие в вопросе.

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

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