C# 如何通过浏览器自动点击按钮

发布于 2024-11-11 17:42:41 字数 320 浏览 1 评论 0原文

我的点击页面的 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");

但这没有找到按钮。

The Html code of my click page is :

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

I tried this code for clicking:

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

but this not found the button.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

你对谁都笑 2024-11-18 17:42:41

这可能对你有帮助。

<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");  
   }  
 }

This may help you.

<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");  
   }  
 }
爱格式化 2024-11-18 17:42:41

您是否正在等待页面加载?您应该在代码中绑定一个函数来等待页面加载,然后单击按钮:

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

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

Are you waiting for the page to load first? You should bind a function in your code to wait for the page to load, them click the button:

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

static void webBrowser1_DocumentReady() {
    webBrowser1.Document.GetElementById("publishButton-ns").InvokeMember("Click");
}
无名指的心愿 2024-11-18 17:42:41

尝试结合 @adam 的建议并大写 Click

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

刚刚测试了这一点,它不适用于“click”,但适用于“Click”:)

我正在使用 .net 4

Try a combination of @adam's suggestion and capitalize Click

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

Just tested this and it didn't work with "click" but did with "Click" :)

I'm using .net 4

紫罗兰の梦幻 2024-11-18 17:42:41

编辑:这只适用于设置 runat="server" 的情况,在这种情况下不适用,但为了以防万一,我很抱歉在问题中遗漏了这一点。

ASP.Net 根据元素所在的结构更改其呈现的元素名称,您可以尝试以下操作来获取元素的最终名称:

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

EDIT: This only applies when runat="server" is set, not applicable in this case but leaving for others just in case, my apologies on missing that in the question.

ASP.Net changes the name of elements it renders based on the structure they are in, you can try the following to get the final name of the element:

webBrowser1.Document.GetElementById("<%=publishButton-ns.ClientID%>").InvokeMember("click");
别闹i 2024-11-18 17:42:41

您可以使用 jQuery,然后执行类似 $("#publishButton-ns").click(); 的操作

http://www.jQuery.com/

You can use jQuery and then do something like this $("#publishButton-ns").click();

http://www.jQuery.com/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文