クリックページの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");
しかし、これはボタンを見つけられませんでした。
これはあなたを助けるかもしれません。
<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");
}
}
ページが最初にロードされるのを待っていますか?ページがロードされるのを待つために、コード内の関数をバインドする必要があります。ボタンをクリックします:
static void form1_Load() {
// ...
webBrowser1.onDocumentReady += webBrowser_DocumentReady;
}
static void webBrowser1_DocumentReady() {
webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
}
@adamの提案の組み合わせを試して、Click
を大文字にしてください
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document
.GetElementById("ctl00_main_LoginExpoPlanIt_LoginButton")
.InvokeMember("Click");
}
これをテストしただけで、「クリック」では機能しませんでしたが、「クリック」では機能しました:)
私は.net 4を使用しています
編集:これは、runat="server"
が設定されています。この場合は適用されませんが、万が一のために他の人に任せてください。質問にそれがないことをおaび申し上げます。
ASP.Netは、その構造に基づいてレンダリングする要素の名前を変更します。要素の最終的な名前を取得するには、次を試してください。
webBrowser1.Document.GetElementById("<%=publishButton-ns.ClientID%>").InvokeMember("click");