使用C#与浏览器进行交互

4
我希望与浏览器窗口进行交互,最好能在IE上工作,如果能在Firefox上也行,使用C#语言。
我想开发一款软件,可以自动填写网页表格中的条目。过去有Gator,现在是RoboForm,它可以自动填充值。
实际上,我有一些用户习惯使用旧的Windows Forms应用程序,因此我希望开发一个解决方案,他们仍然可以在其Windows应用程序中输入数据,它会自动填写网页表单中的条目,并且表现得就像请求是由浏览器本身生成的一样。
我知道我可以合并两个数据库,但由于这是一个传统应用程序,重新编写Windows应用程序的数据库会很麻烦...
有什么建议吗?

为了澄清您的问题,您是想打开一个已填好表单值的浏览器实例吗?还是想将表单值提交到Web应用程序并在Winform应用程序中显示结果? - apandit
主要我想访问现有的窗口并用表单值填充它,如果必须使用新实例也可以。 - Anirudh Goel
5个回答

4

WatiN旨在使来自.NET的Web应用程序测试变得简单,听起来它可能对您想要做的事情很有用:

Following is the Hello world example of web test automation; searching Google.

[Test] public void
SearchForWatiNOnGoogle() {  using (IE
ie = new IE("http://www.google.com")) 
{  
ie.TextField(Find.ByName("q")).TypeText("WatiN");
ie.Button(Find.ByName("btnG")).Click();
     Assert.IsTrue(ie.ContainsText("WatiN"));
} }

WatiN Feature List

  • Automates all major HTML elements
  • Find elements by multiple attributes
  • Supports AJAX website testing
  • Supports frames (cross domain) and iframes
  • Supports popup dialogs like alert, confirm, login etc..
  • Supports HTML dialogs (modal and modeless)
  • Works with Internet Explorer 6, 7, 8 and FireFox 2 and 3

4

它被称为测试应用程序,但Selenium RC可用于填写表单,并且设置相当容易。您还可以查看WatiN。不过,我不知道您可能会遇到什么安全问题。


1

你可能还想查看Selenium,它是一个Web应用程序测试框架,可以通过编程与Web UI进行交互。


0
如果你使用 fiddler ,你或许可以看到浏览器发送给服务器的内容,从而能够编写 C# 代码来生成相同类型的 HTTP 请求
如果交互非常复杂(现代 Web 应用程序通常都是这样),你可以尝试自动化浏览器,就像你之前提到的那样。
我曾经尝试过使用 InternetExplorer.Application 对象来自动化 IE,并且取得了一定的成功。它基本上会启动一个 IE 实例,并且让你能够通过代码对其进行控制。几年前我就是用这种方法编写了一个脚本,在 Virgin Trains 的网站上搜索便宜的火车票预订信息。
但问题是,在某些 IE 安装中,有时会弹出无法自动跳过的安全警告信息。这似乎没有一个固定的模式。

0
如果您的用户只是通过WindForms应用程序使用应用程序,那么为什么您必须操纵现有Web浏览器(如Internet Explorer)的用户界面,而不是在WinForms应用程序中自己进行必要的HTTP请求呢?您可以使用WebRequest类,将Method属性设置为"POST",并将字段数据写入流中,您可以使用httpRequest.GetRequestStream()方法获取该流。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接