按 WebBrowser 控件中的提交按钮

发布于 2025-01-05 20:27:44 字数 182 浏览 1 评论 0原文

我正在开发 C# 桌面程序来进行一些自动发布

  1. 我正在 C# webbrowser 控件中打开网页(带有表单)
  2. 一旦打开页面,我就会用数据填充表单字段(使用 C# 代码)。所以没有手动交互

我的问题是:如何自动将数据发送到服务器(换句话说,如何使用 C# 代码按下提交按钮)?

I am developing C# desktop program to do some automatic posting

  1. I am opening the web page (with form) in C# webbrowser control
  2. Once it opens the page, I am filling form field with data ( Using C# code). So no manual interaction

My question is: How do I automatically send data to the server (in other word how do I press submit button using C# code)?

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

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

发布评论

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

评论(3

梦里的微风 2025-01-12 20:27:44

基本上使用相同的代码来定位和填充字段,您可以遍历 DOM 来查找提交按钮并通过调用向其发送单击。

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input");
    foreach (HtmlElement curElement in theElementCollection) {
        if (curElement.GetAttribute("id").Equals("login_button")) {
            curElement.InvokeMember("click");

Basically using the same code to locate and populate the fields, you can traverse the DOM to find the submit button and send it a click via invoke.

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input");
    foreach (HtmlElement curElement in theElementCollection) {
        if (curElement.GetAttribute("id").Equals("login_button")) {
            curElement.InvokeMember("click");
离旧人 2025-01-12 20:27:44

看看 WatiN 。但我个人会使用 WebClientHttpWebRequest 从服务器获取/发布数据

Take a look at WatiN . But I personally would use WebClient or HttpWebRequest to get/post data from/to the server

瑾夏年华 2025-01-12 20:27:44

如果您想提交表单,请选中此项,

// get the document
mshtml.IHTMLDocument2 doc = ((mshtml.HTMLDocumentClass)webBrowser1.Document);

// set a variable
((mshtml.IHTMLElement)doc.all.item("q")).setAttribute("value", "my input...");

// click a button
((mshtml.HTMLInputElement)doc.all.item("btnI")).click();

命名空间 mshtml 位于 Microsoft.mshtml 程序集中。

只需添加对 Microsoft.mshtml 的引用即可。

If you want to submit a form you check this,

// get the document
mshtml.IHTMLDocument2 doc = ((mshtml.HTMLDocumentClass)webBrowser1.Document);

// set a variable
((mshtml.IHTMLElement)doc.all.item("q")).setAttribute("value", "my input...");

// click a button
((mshtml.HTMLInputElement)doc.all.item("btnI")).click();

The namespace mshtml is located in the Microsoft.mshtml Assembly.

Just add a reference to Microsoft.mshtml.

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