2012-02-14 91 views
1

有一个具有输入文本框的网页。用C控制Internet Explorer#

我想启动页面

Process.Start("http://nameofdomain.com") 

问题是我怎么能进行数据输入字段和提交表单?

UPDATE -

我不需要向用户显示/呈现任何页面。

其目的是允许用户以最小的努力更改他们的密码。我们目前的设置是

  1. 用户导航到网站上的内联网(HTTP:// intranetsite /密码)
  2. 要求用户输入他们的Windows用户名(firstName.lastName)
  3. 询问用户输入他们当前的密码(或者回答安全问题,如果存在的话)
  4. 用户被要求点击链接(在更改密码或更改安全问题之间进行选择)
  5. 最终页面是一个确认页面,密码已成功更改。他们在我们的网络上有几个帐户。每个帐户具有不同的密码规则 一个系统可能要求密码不能再次为最后90个密码重复。另一个系统要求密码正好是8个字符。我的应用程序检查密码规则是否正确。我无法检查密码历史记录。因此最后一页将是必要的,否则我必须解析HTML并指出错误。
+0

哪些字段??? – 2012-02-14 15:29:53

+0

如果你正在窗口应用程序中工作,我想你可以通过在应用程序UI中嵌入WebBrowser控件并将其导航到所需的url来获得更好的控制。或者你找到一个非常通用的解决方案,考虑到对Process.Start(“http://nameofdomain.com”)的调用也可以打开FireFox或Chrome ... – 2012-02-14 15:30:16

+2

你真的必须显示该页面,还是可以如果发送填充表单的HTTP请求时未实际呈现页面? – ramsesoriginal 2012-02-14 15:30:20

回答

1

最好的方法(到目前为止)是WatiN @http://watin.org/。我试过Selenium,永远无法顺利运行(也许它已经变得更好了)。 WatiN的文档面向自动化测试,但您可以在没有测试代码/库的情况下进行测试,并且它支持FirefoxChrome。例如:

using WatiN.Core; 
using WatiN.Core.Interfaces; 
using WatiN.Core.Logging; 
using WatiN.Core.DialogHandlers; 

...

public void SearchForWatiNOnGoogle() 
{ 
    using (var browser = new IE("http://www.google.com")) 
    { 
    browser.TextField(Find.ByName("q")).TypeText("WatiN"); 
    browser.Button(Find.ByName("btnG")).Click(); 
    } 
} 
+0

我是否需要导入任何类以使用WaitN? – 2012-02-14 16:49:40

+0

不是。你所需要的只是添加一个对'WatiN.Core.dll'的引用到你的项目中,然后添加我刚添加到答案中的'using'指令。 – Diego 2012-02-14 20:39:15

2

您可以看看网络浏览器自动化工具,如Selenium,他们有一个C#驱动程序来与浏览器进行交互和自动化。