【问题标题】:What's a good, if any, .NET Windows automation library?如果有的话,什么是好的 .NET Windows 自动化库?
【发布时间】:2010-01-12 22:26:05
【问题描述】:

我正在寻找一个可以在本地 .NET 代码中使用的库,就像任何 .NET 程序集一样。该库的目的必须是使 Windows 自动化(按一个按钮、选择一个窗口、发送密钥、录制和播放,诸如此类)。

因此:该库应该在 .NET 中本地使用,但自动化本身必须能够针对任何可以接收用户输入的本地或 .NET Windows 应用程序。


目前的建议:

如果没有其他可用的选项,我可能会选择 Microsoft 的 UI 自动化,如果可能的话,将任何需要它但仍处于 .NET 2.0 中的项目升级到 .NET 3.5。但我希望有一个更广泛适用的自动化框架(.NET 2.0 之前的不需要支持)。

【问题讨论】:

    标签: c# .net ui-automation


    【解决方案1】:

    我过去曾成功使用过AutoIt

    【讨论】:

    • 看起来很像我需要的东西(它也会响铃)。发送
    • 打败我! :) 是的,我想说看看 AutoItX,这是一种从 DLL 使用 AutoIt 功能的方法。
    • 因为我实际上要求一个 .NET 库:我没有。看看如何在 .NET 中使用它。您能否展示一个示例或指出如何从 .NET 调用它?
    • 一些 ruby​​ 测试自动化库通过创建一个到 AutoIt 可执行文件的 I/O 的管道来实现。丑陋但有效。
    • 我认为缺少的信息是 AutoIt 在 Windows 级别而不是 .Net 级别自动执行,因此在表单上按按钮或设置文本框的内容可以是任何表单。
    【解决方案2】:

    我仍然建议 FlaUI 自动化 .Net 桌面、移动应用程序。它基于 Microsoft UIA 库并支持外部控件,例如 DevExpress Grid 此外,它建立在TestStack.White 之上,因此确实是一个非常好的库,并且还有一个github 页面

    【讨论】:

      【解决方案3】:

      你看过the White framework吗?

      【讨论】:

      • 感谢您的回答。它看起来不错,并且消除了使用 WPF 的 UI 框架的痛苦。但是,它与 WPF 有相同的缺点(例如从 WinForms 调用时),但它可能是迄今为止最好的解决方案。
      • 如果您还有外部控件,您可能需要验证它们是否可以使用 White 自动化:在这种情况下,您可能需要使用 codeplex.com/UIAutomationVerify
      • 经过一番思考,我决定接受你的回答。这不是我想要的(当我想包含 White 或 MS UI 自动化时,它限制了我使用 WPF),但它可以说是迄今为止最好的产品。谢谢!
      • 实际上 White 只是 MS UI 自动化的一个包装器。
      【解决方案4】:

      如果您还没有看过它,并且可以接受商业图书馆,您可以查看 Ranorex:

      http://www.ranorex.com/

      我曾多次使用 Ranorex 1.5 来编写小型 C# UI 自动化实用程序。它非常有效!与直接使用 MS UI 自动化 API 相比,开发似乎更快,因为 Ranorex 已经提供了许多有用的便捷方法。

      不过,我还没有用过 Ranorex 2。

      在Ranorex 1.5 中,也有支持用C++ 进行传统Win32 开发,但我没有使用它。据我所知,Ranorex 2 中仍然可以使用。

      我无法评价 Ranorex 中记录/播放支持的质量,因为我从未使用过该功能。

      最后一个优点:无论何时我给他们发电子邮件,他们的支持团队都非常及时且乐于助人。

      【讨论】:

      • 我只有一个问题。是否支持测试 Grid 等 DevExpress 控件?
      【解决方案5】:

      This library 很有趣,也很简单。也许它会帮助你。

      【讨论】:

      • 这绝对很有趣!实际上并不是一个自动化库本身,但它肯定是可用的,并且似乎可以完成这项任务。我会更深入地研究它。
      【解决方案6】:

      微软自己的内置就可以了

      http://msdn.microsoft.com/en-us/library/ms747327.aspx

      并不像某些人认为的那样仅限于 wpf。

      【讨论】:

      • 我不知道这个新的发展。当然很有趣,但它把我锁在 WPF 上。考虑到我几乎只做 .NET 3.5+ 的开发(当我做 .NET 项目时),但这不应该是一个真正的问题。
      • 我不认为这会将您锁定在 WPF 中;它是 Windows 标准 UI 自动化库,现在恰好可以与 WPF 一起使用。如果您需要下层工作,MS Active Accessibility 是您的最佳选择。
      • 我好像不太清楚,抱歉。我想使用编程代码中的库。这需要 WPF(这不是问题)。是的,当然它可以在 Windows 中自动执行任何操作,我完全理解,但这不是重点...... ;-)
      • +1。正如 MSDN 杂志中推荐的那样 msdn.microsoft.com/en-us/magazine/cc163465.aspx
      • 你的答案和怀特之间是一个艰难的决定。但是 White 使用起来要容易得多,它确实消除了 Microsoft UI 自动化的复杂性,同时如果我愿意或需要的话,仍然可以退回到核心。它仍在开发中,但它具有潜力。两者都是 WPF,没有基本的 .NET 应用程序可以使用 lib,您需要包含 WPF。但这只是我必须接受的(或使用硬编码 AutoIt 或 CSharpScript)。
      【解决方案7】:

      【讨论】:

      • 好列表,归结为 BenPearce 的 AutoIt,有效 ;-)
      【解决方案8】:

      我使用 WebAii from ArtOfTest 在自动化 Silverlight 应用程序的集成测试方面取得了相当大的成功。它还支持 WinForms 和 Web 应用程序。

      Microsoft UI Automation 是 Active Accessibility 的继任者,几乎可以完成您需要的所有 Windows UI 自动化。

      【讨论】:

      • 如果我错了,请纠正我,但这不是浏览器自动化吗?我真的在寻找 Windows 自动化。有趣的是保留,但对于其他类型的项目:)
      • 你是对的,它当然更专注于该域,但它也公开了 Win32 控件。 Microsoft UI 自动化适用于大多数不需要与浏览器交互的自动化。 en.wikipedia.org/wiki/Microsoft_UI_Automation
      【解决方案9】:

      CSharpScript 怎么样,这是 Codeproject 上关于它的 article,这是主网站上的 link。此外,它是熟悉的 C# 脚本,可用于自动化任何事情。

      希望这会有所帮助, 此致, 汤姆。

      【讨论】:

      • 这看起来是一个很有前途的项目,有其优点,但作为一种脚本语言,它如何应用于“任何”Windows 应用程序的自动化?
      • 我不会将其定义为脚本语言本身,如果您想到 Windows Scripting Host,甚至 AutoIt,C# 代码本身就可以用作程序,甚至可以使用p/invoke 在代码中,这就是它的灵活性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 2023-03-22
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多