鳞片6.3释放 引入了基于图像的识别,允许用户识别和自动化未通过蜂鸣器识别的应用程序组件’S对象识别功能。虽然基于图像的识别很有用,但在创建平台的测试时出现了一个困难。由于多种原因,组件的视觉外观可能会有所不同。由于不同平台上使用的各种字体,字体大小,装饰和渲染模式,这种可变性对于屏幕文本尤为突出。 模糊图像搜索在Squish 6.4中引入的,通常不适合寻找文本。由于不同的字母宽度,不同的字母宽度,具有不同参数呈现的相同文本可能在很大程度上看起来很大程度上。 克宁 或转移排断位置。为了允许在这种情况下进行有效的文本处理,即将到来的鳞片6.5版本包括对光学字符识别(OCR)的支持。

OCR实现

Quish目前使用免费 Tesseract OCR. 图书馆促进文本识别功能。原则上,任何OCR发动机都可能被替换。如果您有兴趣使用其他OCR引擎,请联系Froglogic支持。由于完整的TESERACT OCR包的大小,包括所有语言文件,它需要独立于蜂鸣器安装。我们的下载门户网站将提供这些包。请注意,柔软’如果未安装TESERACT OCR包,则SOCR功能将保持不活动。

与文本互动

squ IDE支持录制OCR交互和验证说明。在脚本录制过程中,您可以从“粗糙控制栏上的”插入“菜单中选择一个OCR选项,然后选择一个操作。然后出现OCR选择对话框。

OCR选择对话框

该对话框显示当前的桌面屏幕截图和OCR的结果覆盖在其顶部。在那里,您可以选择用于交互的文本,并在必要时修改搜索文本。在上面的屏幕截图中,我们在各种文本中拟合了一个识别的矩形。接受对话框后,将添加以下行之一,将添加到录制的脚本(取决于控制栏上选择的操作):

mouseClick(waitForOcrText("Start new game"));
doubleClick(waitForOcrText("Start new game"));
tapObject(waitForOcrText("Start new game"));
test.ocrTextPresent("Start new game");

在重播时,新的Quish API函数将在当前屏幕内容上重复预制OCR。每次运行后,它将搜索指定文本的结果集。它将继续,直到找到指定的短语或超时到期。

Just like with the image search APIs, you can select further occurrences of the same phrase using the optional occurrence parameter. Also, the Tesseract OCR engine supports specifying a language of the recognized text. It serves as a hint to the engine, influencing the character set and the dictionary used. If a non-default language is selected during recording, it will be saved as a part of the test script:

// Click on the third occurrence of the German text
mouseClick(waitForOcrText("Neues spiel", {language: "German", occurrence: 3}));

屏幕区域选择

OCR发动机被调整为在白色背景的黑文本扫描页面。包含交互式控制,图标,颜色背景等的用户界面屏幕截图往往会使发动机混淆并产生一定量的错误结果。这些通常以短,毫无意义的信件形式表现出来。因此,从整个桌面抓取文本可能不是很有用– even if the AUT window is maximized or spans the entire screen. To limit the area used for OCR, please specify an object reference as the optional searchRegion parameter. In order to minimize the OCR artifact count and the test run times you should always try to keep the search region as small as possible.

// Search for text only on the specified window
waitForOcrText("Start new game", {}, waitForObject(":Main_Window"));
// Log the text on a custom rendered widget
test.log( getOcrText( {}, waitForObject(":Custom_Rendered_Widget")));

这 search region can be a ScreenRectangle object. Therefore it is possible to use script-computed coordinates as the search region as well:

// Search for text only in the specific rectangle
waitForOcrText("Start new game", {}, new UiTypes.ScreenRectangle( 100,    // x
100,    // y
500,    // width
500 )); // height

还可以组合多个搜索功能。作为示例,我们可以捕获按钮的图像并使显示标签透明的中央部分。通过组合图像搜索和OCR,我们可以获得按钮的内容’s label.

按钮框架
var buttonPosition = waitForImage("button_frame");
test.log( getOcrText({}, buttonPosition));

结论

文本渲染是不同平台上相同组件的视觉外观差异背后的最大原因之一。由于新添加的OCR支持,可以仅基于您的AUT编写平台无关的测试’外观。还可以与Web浏览器菜单,桌面图标,系统菜单等测试应用程序之外的控件与基于图像的识别功能相结合,它应该允许与几乎任何应用程序组件的验证和交互。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

复制链接