【问题标题】:Button click in web browser在 Web 浏览器中单击按钮
【发布时间】:2012-08-24 08:01:51
【问题描述】:

我已经创建了网络浏览器,现在我想通过单击表单上的 button1 来单击网络上的按钮。

private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.Document.GetElementById("search").SetAttribute("value", IP.Text);
    webBrowser1.Document.GetElementById("").InvokeMember("click");
}

但我无法从此字符串中获取按钮 ID

<input type="submit" value="→" class="button">

有没有办法解决这个问题?

【问题讨论】:

  • 您的 没有设置 ID,因此您无法调用 GetElementById。空字符串不是有效的 id。
  • 如果你通过 id 获取元素,你应该给它一个 id。
  • 我没有创建网页,我尝试加载已经存在的网页
  • 您提交的
    元素是否有 id?
  • whois-service.ru/lookup - 如我所见 - 不

标签: c# html browser


【解决方案1】:

尝试迭代网页中的所有&lt;input&gt; 元素。当您找到具有所需值的元素时,您可以单击该元素。

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("input")
{
    if (el.GetAttribute("value").Equals("→"))
    {
        el.InvokeMember("click");
    }
}

【讨论】:

  • 但是如果没有 webBrowser1 我怎么能做到这一点呢?以某种方式可以使这个 webBrowser1.Document.GetElementById("search").SetAttribute("value", "0.0.0.0");通过网址,对吗?类似web-site.com/index.php?value="0.0.0.0"
  • @fen1ksss 您可以使用HttpWebRequest 类并向whois-service.ru/lookup 提交发布请求。您的请求正文将是domain=255.255.255.255&amp;real=true2.1simpleJ,并将 255.255.255.255 替换为您要查找的任何 ip。请参阅msdn.microsoft.com/en-us/library/debx8sh9.aspx 了解更多信息
  • 谢谢,真的很有帮助!最后一个问题,当我读到here web request send request to a specific uri时,我可以以某种方式将'domain=255.255.255.255&real=true2.1simpleJ'添加到我的url?像这样 whois-service.ru/lookup/.php?domain=255.255.255.255&real=true2.1simpleJ 还是没有?
  • 您应该使用它发出 POST 请求,而不是将其附加到您的 URL 上。该站点更好地解释了如何执行 POST 请求:en.csharp-online.net/HTTP_Post
【解决方案2】:

网站不会阻止向其发布表单。因此,您始终可以使用指向它的表单创建自己的网页。

HTML

<form id="search" action="http://whois-service.ru/lookup/" method="post">
    <input type="text" class="text" name="domain" id="domain" />
    <input type="submit" value="" class="button" />
    <input id="submit" type="hidden" name="real" value="true2.1simpleJ" />
</form>

c#

private void button1_Click(object sender, EventArgs e)
{
    webBrowser1.DocumentText = "[The HTML from above here]";
    webBrowser1.Document.GetElementById("domain").SetAttribute("value", IP.Text);
    webBrowser1.Document.GetElementById("submit").InvokeMember("click");
}

如果您计划抓取 WHOIS 信息。您必须确保这样做不违反条款和条件。大多数 WHOIS 服务不允许自动检查。

如果他们这样做并且这就是您尝试做的事情,那么您应该考虑改用 HttpWebRequest,它的效率要高得多。在此处查看有关如何使用http://swhobby.blogspot.co.uk/2010/03/c-example-of-http-post.html的示例

【讨论】:

  • 有标准的windows nslookup-program,我可能会尝试使用它
  • 是相反的方式吗? webcontrol中的单击按钮获取调用button1_Click?
猜你喜欢
  • 2011-11-05
  • 2011-06-01
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
相关资源
最近更新 更多