【问题标题】:C# Open a browser with POST parameters without sending the dataC#使用POST参数打开浏览器而不发送数据
【发布时间】:2014-01-05 23:55:33
【问题描述】:

我确信这个请求可能听起来很熟悉,因为我在搜索结果中看到了几个。我相信我正在尝试做的事情是独一无二的,既然没有人问过,我现在正在寻求帮助。

我想让我的应用程序在浏览器中打开一个带有联系表单的网页。我还想包括 POST 参数。有没有办法在不发送实际请求的情况下使用 POST 参数预填充表单?

System.Diagnostics.Process.Start("IExplore.exe", "http://www.website.com/contactus.aspx?Subject=blah&Body=Test 1 2 3");

我尝试了上面的行,它确实加载了页面,但没有填充字段。

有什么想法吗?

【问题讨论】:

  • 这仅在相关页面实际使用查询字符串来预填充字段时才有效。
  • @SimonWhitehead,你是说存在服务器端依赖?
  • 或客户端。没关系。 AFAIK 浏览器本身不这样做。
  • 啊。韦尔普,回到绘图板。感谢您的帮助!

标签: c# post


【解决方案1】:

你在这里没有太多选择..

如果网页根据query string 填充表单,那么您可以只在请求中包含表单字段,如下例所示:

https://www.google.com.br/search?newwindow=1&site=&source=hp&q=how+to+fry+an+egg&oq=how+to+fry+an+&gs_l=hp.3.0.0l10.2234.4765.0.5734.14.14.0.0.0.0.188.1782.6j8.14.0.stareuni...0...1.1.32.hp..3.11.1234.DZuLJB2rmmg

如果网页是你的,这特别容易,因为你可以让它以这种方式运行。

您可能需要的另一个选项是使用automated interface test tool 通过 C# 来执行此操作。 Selenium 特别擅长,而且是免费的。要了解如何使用Selenium 自动填写表格,请查看此线程:How do I use Selenium in C#?

【讨论】:

  • 这看起来很有希望。谢谢!
  • @snapplex 如果您觉得答案有用,请随时为答案投票 =)
【解决方案2】:

您可能正在寻找类似于AutoItAutoHotKey 的东西。如果您不能直接使用这些(因为它们需要大量集成),那么有些库允许您从 c# 代码访问 GetWindow/SetWindowText API。我可以参考WASP的源代码,但我相信你可以找到现成的例子,如何使用互操作来调用你需要的API。

这个想法是你像你已经做的那样启动浏览器页面,然后你从桌面开始遍历窗口树 (GetWindow) 以找到你想要填写的字段,然后你填写它们 (SetWindowText)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2012-10-13
    • 2011-06-19
    • 2015-09-07
    相关资源
    最近更新 更多