logo smartbear TestComplete 系列教程 我也要发布文档

TestComplete教程:光学字符识别(一)处理UI元素


TestComplete是一款具有人工智能的自动UI测试工具,利用自动化测试工具和人工智能支持的混合对象识别引擎,轻松检测和测试每个桌面,Web和移动应用程序。使用TestComplete,可以提高测试覆盖率并帮助提供经过实战考验的高质量软件。本文描述了如何在自动化测试中使用光学字符识别来处理TestComplete无法以常规方式识别的UI元素。

点击下载TestComplete试用版

通常,TestComplete通过其属性(例如,通过其类名、标题、ID等)识别窗口和控件。但是,在某些情况下,TestComplete无法访问已测试应用程序中控件或窗口的属性。例如,如果TestComplete不支持该控件,或者所需的控件是直接在屏幕上呈现的图形元素(例如,位图或图表),则会发生这种情况。

要测试此类窗口和控件,您可以命令TestComplete捕获其文本内容。为此,TestComplete使用光学字符识别(OCR)。它将渲染的文本图像转换为计算机可读字符,并与包含所需文本的区域配合使用。与使用基于坐标的鼠标单击的测试相比,这可以帮助您拥有更稳定,更灵活的测试。

影片教学

20191011145220.png

何时使用光学字符识别

您可以使用光学字符识别:

  • 获取测试应用程序的文本内容或特定的UI元素,以验证测试应用程序的数据或状态。

  • 通过文本内容在经过测试的应用程序中找到所需的UI元素,并在其上模拟用户操作。

要求

  • 您的TestComplete版本必须为12.60或更高版本。

  • 您需要有效的许可证才能使用TestComplete智能质量插件。

  • 必须在TestComplete中启用“智能质量”插件。

  • 您可以在TestComplete安装期间启用插件。如果您在安装过程中未启用插件,则可以在以后随时通过“文件”>“安装扩展名”对话框来执行此操作。为此,请从TestComplete主菜单中选择文件>安装扩展,然后在出现的对话框中启用Intelligent Quality> Intelligent Quality Core插件。

  • 必须在TestComplete中启用光学字符识别支持。

  • 默认情况下,如果在TestComplete安装过程中启用了Intelligent Quality插件,则会自动启用它。如果您在测试中遇到光学字符识别问题,请从TestComplete主菜单中选择“文件”>“安装扩展名”,并确保启用了“光学字符识别”插件(您可以在“Intelligent Quality”组中找到它)。如果插件被禁用,请启用它。在启用插件时TestComplete显示的确认消息中,单击链接以阅读第三方许可协议。如果您同意许可条款,请点击“启用OCR”。

    此外,请确保没有安装和启用旧版OCR插件。您可以在“通用”组中找到该插件。

  • 您的计算机必须有权访问ocr.api.dev.smartbear.com Web服务。如果您的网络中运行着防火墙或代理,则它们应允许您的计算机访问Web服务。

  • 您的防火墙必须允许通过端口443的通信。

有关必须满足的要求以及如何配置测试环境的详细信息,请参阅光学字符识别-要求(后面更新)。

它是如何工作的

TestComplete可以识别您在屏幕上选择的UI元素的文本以及从屏幕捕获或从文件加载的图像中的文本。TestComplete将要识别的数据发送到SmartBear 的ocr.api.dev.smartbear.com Web服务。此网络服务将传入的请求转发到Google Vision API,并将识别结果传输回TestComplete。

在测试中,您可以访问整个识别的文本或其中的单个文本块(如果有多个)。如果识别的文本属于UI元素,则可以命令TestComplete通过其文本在屏幕上定位该元素,并模拟对其进行的各种操作,例如单击或触摸。

安全

为了识别文本,TestComplete使用ocr.api.dev.smartbear.com服务,而该服务又使用Google Vision API。识别和识别结果的数据通过HTTPS发送到服务,即连接是安全的,数据是加密的。SmartBear既不存储也不与其他任何第三方共享发送的数据。

创建基于OCR的测试

自动地

创建测试的最简单方法是记录它:

开始录制之前

从TestComplete主菜单中选择“工具”>“选项”,然后启用“引擎”>“录制”>“使用OCR选项录制不受支持的控件”。TestComplete将在录制过程中通过其文本自动识别不受支持的控件,并将在包含此文本的屏幕区域上记录您的操作。

如果关闭该选项,则TestComplete将记录基于坐标的动作(如果您使用的是非仪表Android应用程序,则将记录基于图像的动作)。

记录

在录制过程中,TestComplete自动检测与之交互的窗口和控件。如果TestComplete支持某个窗口或控件,则后者会记录特定于该窗口或控件的测试命令。如果不支持窗口或控件,则TestComplete将为其记录基于坐标的鼠标操作和键盘事件。OCR引擎可帮助您记录不受支持的控件的基于对象的命令,并使记录的测试更独立于屏幕坐标,即更稳定。

下图显示了使用光学字符识别的已记录测试的示例:

处理UI元素

手动地

  1. 准备应用程序以进行测试。您执行此操作的方式取决于应用程序类型。

  2. 对于移动应用程序:将TestComplete连接到您的移动设备。要了解如何执行此操作,请参阅准备iOS设备或将TestComplete连接到Android设备(取决于您的设备类型)。打开“ 移动屏幕”窗口。

  3. 启动经过测试的应用程序。

  4. 在您的应用程序中,找到要使用光学字符识别来识别文本的区域。

  5. 在测试中,添加将识别文本的命令,对其进行验证或使用它在屏幕上查找被测试的对象:

在关键字测试中

要识别屏幕对象的文本内容并检查其是否正确,请使用OCR Checkpoint操作。要通过控件的文本内容(或周围的文本)定位控件并模拟控件上的用户操作,请使用OCR操作操作。

下图显示了一个示例关键字测试,该测试适用于使用OCR的应用程序:

处理UI元素

脚本

使用OCR.Recognize脚本测试中的方法来识别屏幕上呈现的文本。该方法将返回一个对象,该对象提供对包含已识别文本的区域的访问:

  • 要获取所有可识别的文本,请使用OCR.Recognize.FullText属性。

  • 要访问识别文本的各个片段(块),请使用OCR.Recognize.Block属性或OCR.Recognize.BlockByText方法。

  • 若要验证测试的应用程序包含指定的文本,请使用OCR.Recognize.CheckText方法。

  • 要在识别的文本的单个片段(块)上模拟用户操作,请使用OCR.Recognize.Block和OCR.RecoginzeBlockByText对象提供的方法。例如,Click或HoverMouse方法。

  • 为了模拟在其旁边是一个片段(块)的区域的用户操作,使用ClickNextTo,TouchNextTo以及SendKeys该方法OCR.Recognize.Block和OCR.RecoginzeBlockByText对象提供。

例如:

处理UI元素

通过文本内容寻址对象

在关键字测试中,您可以使用OCR Action操作查找包含所需文本的指定屏幕对象的区域,并在其上模拟用户操作:

处理UI元素

在脚本测试中,要使用其文本访问对象,请使用OCR.Recognize.Block或OCR.Recognize.BlockByText方法。该方法识别屏幕上对象的文本,并通过其在其他已识别文本部分之间的索引或其内容来提供对已识别文本的单个部分的访问。

JavaScript, JScriptOCR.Recognize(Aliases.myApp.mainForm).BlockByText("*Help*")
PythonOCR.Recognize(Aliases.myApp.mainForm).BlockByText("*Help*")
VBScriptOCR.Recognize(Aliases.myApp.mainForm).BlockByText("*Help*")
DelphiScriptOCR.Recognize(Aliases.myApp.mainForm).BlockByText('*Help*')
C#ScriptOCR["Recognize"](Aliases["myApp"]["mainForm"])["BlockByText"]("*Help*")

本文内容到这里就结束啦,感兴趣的朋友请继续关注我们~您也可以下载TestComplete试用版尝试一下~


想要购买TestComplete正版授权,或了解更多产品信息请点击“咨询在线客服”