【问题标题】:Control Internet Explorer with C#使用 C# 控制 Internet Explorer
【发布时间】:2012-02-14 15:27:25
【问题描述】:

有一个网页有输入文本字段。

我想启动页面

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

问题是如何在字段中输入数据并提交表单?

更新 -

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

目的是让用户可以轻松更改密码。我们目前的设置是

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

【问题讨论】:

  • 如果您在窗口应用程序(如 Windows 窗体)中工作,我认为您可以通过在应用程序 UI 中嵌入 WebBrowser 控件并将其导航到所需的 url 来进行更好的控制。或者您找到一个非常通用的解决方案,考虑调用 Process.Start("nameofdomain.com") 也可以打开 FireFox 或 Chrome...
  • 你真的要显示页面吗,或者如果在没有实际呈现页面的情况下发送已填写表单的HTTP请求是否可以?
  • 不启动浏览器窗口而是创建HTTP POST请求不是更好吗?
  • 我们可以,但有点复杂。在本地 Intranet 站点上,第一页要求用户输入他们的用户名。第二页询问他们的密码(当前)。第三页包含在提供最终页面之前需要单击的链接(他们需要输入两次新密码)。

标签: c# browser web-scraping


【解决方案1】:

您可以查看像 Selenium 这样的 Web 浏览器自动化工具,它们有一个 C# 驱动程序可以与浏览器进行交互和自动化。

【讨论】:

    【解决方案2】:

    (到目前为止)最好的方法是 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();
      }
    } 
    

    【讨论】:

    • 是否需要导入任何类才能使用 WaitN?
    • 不。您只需在项目中添加对 WatiN.Core.dll 的引用,然后添加我刚刚添加到答案中的 using 指令。
    猜你喜欢
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2017-07-23
    • 2012-02-20
    • 2018-06-04
    • 1970-01-01
    相关资源
    最近更新 更多