自动截取程序窗口的截图

时间:2011-01-20 19:41:46

标签: windows macros automation screenshot user-manual

我正在寻找一种将宏录制与截屏功能相结合的软件。

我们有一个包含大量屏幕截图的软件手册。当新版软件发布时,我们需要更新大部分屏幕截图,我们必须手动完成。现在我们开始将手动翻译成多种语言,并且截图的数量增加了十倍。我们希望自动化这个过程。

将会有一个录制的宏或点击我们软件中的按钮并截取程序窗口的屏幕截图。更好的是,我们可以单独指定每个屏幕截图的名称,尽管它不那么重要。

这样的事情存在吗?

7 个答案:

答案 0 :(得分:3)

我对所有Windows GUI自动化任务使用AutoItcaptdll.dll

示例:

Run("Notepad.exe", @WindowsDir, @SW_MAXIMIZE)   ; Open NOTEPAD
Sleep(1000)
Send("Just a Test")   ; Send some text to notepad

; Save the screen to test.jpg  
$anPos = WinGetClientSize("")
$nLeft = 0
$nTop = 0
$nRight = $anPos[0]
$nBottom = $anPos[1]

$sFileName = "test.jpg"
DllCall("captdll.dll", "int:cdecl", "CaptureScreen", "str", $sFileName, "int", 85)

这样您就可以自动完成整个屏幕截图捕获过程:

  • 使用“运行”
  • 启动应用程序
  • 使用发送
  • 选择每个菜单选项
  • 使用发送
  • 完成每个屏幕的数据
  • 使用DllCall捕获(“captdll.dll”....)

您还可以添加条件逻辑,循环等。

答案 1 :(得分:2)

是。您需要自动化测试软件,它可以完成所有这些并测试您的产品。

http://en.wikipedia.org/wiki/List_of_GUI_testing_tools

答案 2 :(得分:2)

Testing Anywhere似乎拥有您需要的功能。 他们网站上的一些话:

“强大的基于GUI的录制功能和无需编程的用户界面使测试人员能够快速设置复杂的测试用例”......

“可视化日志报告:测试Anywhere的功能强大的Visualize选项获取截图,以便在运行时创建可视日志。” (see here)

您还可以尝试一些更简单且更便宜的东西,例如Jitbit Macro Recorder让您播放录制的宏(键盘和鼠标),然后使用宏中的Shift-PrintScreen键来制作屏幕截图。它还有一个宏脚本编辑器。

答案 3 :(得分:2)

如果是网络应用,您可以使用Selenium。 Visual Studio的类似工具叫做Test Automation FX

答案 4 :(得分:2)

Yoiu可以查看现有的Windows Automation API : UI Automation,MSDN文档

运行时要求

以下操作系统支持UI自动化:Windows XP,Windows Server 2003,Windows Server 2003 R2,Windows Vista,Windows 7,Windows Server 2008和Windows Server 2008 R2。

客户端应用程序(从简单的测试脚本到强大的记录和回放实用程序)可能需要访问当前未实例化的元素,例如文件打开对话框或菜单项,因此在UI Automation树中不存在。这些元素只能通过使用UI Automation,控制模式和事件监听器等UI Automation属性来复制或“回放”特定的用户界面(UI)动作序列来实例化。有关使用Microsoft UI Automation根据用户与用户界面(UI)交互生成测试脚本的示例,请参阅Test Script Generator Sample

您可以在现有的Visual Studio项目中使用AutomationIdProperty

在测试应用程序中实现UI自动化

  • 添加UI自动化参考。

此处列出了UI自动化客户端所需的UI自动化dll。

UIAutomationClient.dll提供对UI自动化客户端API的访问。

UIAutomationClientSideProvider.dll提供自动化Win32控件的功能。请参阅标准控件的UI自动化支持。

UIAutomationTypes.dll提供对UI Automation中定义的特定类型的访问。

  • 添加System.Windows.Automation命名空间。

此命名空间包含UI自动化客户端使用UI自动化功能所需的所有内容,但文本处理除外。

  • 添加System.Windows.Automation.Text命名空间。

此命名空间包含UI自动化客户端使用UI自动化文本处理功能所需的所有内容。

  • 查找感兴趣的控件

自动化测试脚本找到代表自动化树中感兴趣控件的UI自动化元素。

有多种方法可以使用代码获取UI Automation元素。

使用Condition语句查询UI。这通常是使用与语言无关的AutomationIdProperty的地方。 注意 可以使用UISpy.exe(UI Spy)等工具获取AutomationIdProperty,该工具可以逐项列出控件的UI自动化属性。

使用TreeWalker类遍历整个UI Automation树或其子集。

追踪焦点。

使用控件的hWnd。

使用屏幕位置,例如鼠标光标的位置。

请参阅Obtaining UI Automation Elements

  • 获取控制模式

控件模式暴露了功能类似控件的常见行为。

在找到需要测试的控件之后,自动化测试脚本从这些UI Automation元素中获取感兴趣的控件模式。例如,典型按钮功能的InvokePattern控件模式或窗口功能的WindowPattern控件模式。

请参阅UI自动化控制模式概述。

  • 自动化用户界面

现在,自动化测试脚本可以使用UI自动化控件模式公开的信息和功能,从UI框架控制任何感兴趣的UI。

相关工具和技术

有许多相关工具和技术支持使用UI自动化进行自动化测试。

UISpy.exe (UI Spy)是一个图形用户界面(GUI)应用程序,可用于收集提供程序和客户端开发和调试的UI自动化信息。 UI Spy包含在Windows软件开发工具包(SDK)中。

UIAutoCmd是一个命令行工具,其功能类似于UI Spy。

MSAABridge向Active Accessibility客户端公开UI自动化信息。将UI自动化桥接到活动可访问性的主要目标是允许现有的Active Accessibility客户端与已实现UI自动化的任何框架进行交互。 安全

有关安全信息,请参阅UI自动化安全概述。

答案 5 :(得分:2)

我已经尝试了很多,而且我认为真正突出的是Adobe (formerly Macromedia) Captivate。这是非常昂贵的(约800美元),但值得每一分钱。

创建教程等需要几分钟而不是几小时。

答案 6 :(得分:0)

我会使用开源工具Sikuli。非常简单的脚本语言,或者您可以使用他们的类并编写自己的Java代码。

以下是获取部分屏幕的文档: http://sikuli.org/docx/screen.html#capturing

奖励是Windows,Linux和Mac支持此功能!