C# 用C语言控制internetexplorer#

C# 用C语言控制internetexplorer#,c#,browser,web-scraping,C#,Browser,Web Scraping,有一个包含输入文本字段的网页 我想启动这个页面 Process.Start("http://nameofdomain.com") 问题是如何在字段中输入数据并提交表单 更新- 我不需要向用户显示/呈现任何页面 其目的是允许用户以最小的努力更改其密码。我们目前的设置是 用户导航到Intranet上的站点(http://intranetsite/password) 要求用户输入其Windows用户名(firstName.lastName) 要求用户输入其当前密码(或回答安全问题,如果存在) 要求用

有一个包含输入文本字段的网页

我想启动这个页面

Process.Start("http://nameofdomain.com")
问题是如何在字段中输入数据并提交表单

更新-

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

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

  • 用户导航到Intranet上的站点(http://intranetsite/password)
  • 要求用户输入其Windows用户名(firstName.lastName)
  • 要求用户输入其当前密码(或回答安全问题,如果存在)
  • 要求用户单击链接(在更改密码或更改安全问题之间进行选择)
  • 最后一个页面是确认页面,它告诉用户哪些密码已成功更改。他们在我们的网络上有几个帐户。每个帐户都有不同的密码规则 一个系统可能要求密码在最后90个密码中不能重复。另一个系统要求密码正好是8个字符。我的应用程序检查密码规则是否正确。我无法检查密码历史记录。因此,最终页面是必需的,否则我必须解析HTML并指出错误

  • 您可以查看Web浏览器自动化工具,例如,它们有一个C#驱动程序来与浏览器交互和自动化浏览器。

    目前为止,最好的方法是WatiN@。我尝试了Selenium,但始终无法让它顺利运行(也许从那以后它变得更好了)。WatiN的文档面向自动化测试,但是您可以不使用测试代码/库,它还支持FirefoxChrome。例如:

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


    如果您在windows窗体之类的窗口应用程序中工作,我认为将WebBrowser控件嵌入到应用程序UI中并将其导航到所需的url,会有更好的控制。或者找到一个非常通用的解决方案,考虑调用过程。也可以打开FireFox或Chrome…你真的必须显示页面吗,或者如果发送填写表单的HTTP请求而不实际呈现页面,这可以吗?最好不要启动浏览器窗口,而是创建一个
    HTTP POST
    请求吗?我们可以,但有点复杂。在本地intranet站点上,f第一个页面要求用户输入用户名。第二个页面要求输入密码(当前)。第三个页面包含需要单击的链接,然后才能提供最终页面(需要输入两次新密码)。我是否需要导入任何类以使用WaitN?不需要。您只需将对
    WatiN.Core.dll
    的引用添加到您的项目中,然后使用我刚才添加到答案中的指令添加
    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();
      }
    }