2011-01-20 223 views
18

我正在寻找一种软件,它结合了宏观录制和截屏功能。自动截取程序窗口的屏幕截图

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

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

这样的事情是否存在?

+0

由于您拥有完整的源代码并支持贵组织中的应用程序生命周期,因此我建议您在此特定方案中针对Microsoft UI自动化API。您需要记录UI脚本,使用自定义自动化提供程序,能够记录和回放UI自动化,然后您可以添加自定义行为,如截屏,因为自动化API有3种方式来以编程方式评估UI:通过AutomationId属性,使用屏幕点(鼠标点击)和可视树项目(UI遍历)。 – 2011-01-31 11:13:01

回答

3

我使用AutoIt加上captdll.dll来实现我所有的Windows GUI自动化任务。

例子:

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” ....)

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

2

是的。你需要自动化测试软件,它可以做到这一切并测试你的产品。

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

+0

很大程度上取决于您习惯的工具。工具存在,可以编程从Perl,Java,C#,VB和JavaScript到Ruby等。以AutoIt为例,就像在这个问题中一样: http://stackoverflow.com/questions/370673/taking-screenshots-of-an-application-using-wsh-script – Ben 2011-01-24 17:16:57

2

Testing Anywhere似乎有你需要的功能。 从他们的网站有些话:

“强大的基于GUI的录音功能和无编程所需的用户界面使测试人员能够快速建立甚至复杂的测试案例” ......

“视觉日志报告:测试Anywhere的强大的可视化选项可在屏幕截图中在运行时创建可视化日志。“ (see here)

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

2

如果这是一个web应用程序,你可以使用Selenium。没有为Visual Studio的叫测试自动化FX类似的工具

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属性(如AutomationID,控件模式和事件侦听器)来再现或“回放”特定的用户界面(UI)操作序列来实例化。有关使用Microsoft UI Automation根据用户与用户界面(UI)交互生成测试脚本的示例,请参阅Test Script Generator Sample

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

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

  • 添加了UI自动化参考。

UI自动化DLL的必要的UI自动化客户端在这里列出。

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

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

UIAutomationTypes.dll提供访问在UI自动化定义的特定类型。

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

该名称空间包含了UI自动化客户端需要使用UI自动处理功能以外的所有功能。

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

这个命名空间包含所有UI自动化客户端需要使用的UI自动化文本处理能力。

  • 的兴趣找到能够控制

自动化测试脚本查找代表的自动化树中的利益控制UI自动化元素。

有多种方式获得与代码UI自动化元素。

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

使用TreeWalker类遍历整个UI自动化树或其子集。

赛道焦点。

使用控件的hWnd。

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

Obtaining UI Automation Elements

  • 获取控制模式

控制模式暴露出常见行为的功能类似的控制。

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

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

  • 自动化的UI

自动化测试脚本现在可以使用由UI自动化控制模式暴露的信息和功能的UI框架控制目标的任何UI。

相关的工具和技术

有许多的支持自动化测试与UI自动化相关的工具和技术。

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

UIAutoCmd是一个类似于UI Spy的命令行工具。

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

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

0

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

这里是文档抓取屏幕的一部分: http://sikuli.org/docx/screen.html#capturing

奖金是,这是支持Windows,Linux和Mac!