С# Как автоматически щелкнуть кнопку через 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!
Ответы
Ответ 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");