有许多 GUI 自动化工具允许单击指定的图像(例如著名的 Sikuli)。有什么办法可以点击指定的文字,而不是图片?这样,该工具将:
- 制作截图
- 识别上面的文字
- 查找文本位置(不知何故)
- 向该位置发送点击事件
使用这种方法(许多界面有文本按钮、输入等)编写测试会更容易,而不是为每个元素制作屏幕截图。
我在 Sikuli 中看到了一些 OCR 功能,但它对我不起作用(我尝试调用 click('some-text-here')。
有许多 GUI 自动化工具允许单击指定的图像(例如著名的 Sikuli)。有什么办法可以点击指定的文字,而不是图片?这样,该工具将:
使用这种方法(许多界面有文本按钮、输入等)编写测试会更容易,而不是为每个元素制作屏幕截图。
我在 Sikuli 中看到了一些 OCR 功能,但它对我不起作用(我尝试调用 click('some-text-here')。
Sikuli 内置的 OCR 功能非常有缺陷且不稳定。所有(或至少大部分)相关问题都列在此BUG 中。但是,很少有可能的解决方法,但是,它们并不总是适用。
如果文字是已知的,您可以将文字截屏,然后将其作为屏幕截图查找。例如,如果您知道该文本的确切字体,则可以在屏幕上自动生成此类文本并将其用作模式以将其定位到其他地方。
内置的基于tesseract的 OCR 在字体更大、“更胖”和灰度(通常)时表现得更好。因此,您可能会在尝试实际识别之前进行一些背景图像处理。我使用ImageMagick来调整和过滤图像以便更好地识别。它可以作为命令行工具在后台运行。例如:
转换 -filter spline -resize 100x -unsharp 10x20 -type Grayscale
我知道这并不能直接回答您的问题,但这些是您可能会考虑采取的最终解决方案的步骤。
我是 Deskover 公司的开发人员,我们目前正在开发满足您需求的应用程序UiPath Studio 。
我们以 100% 的准确度提供基于各种技术的文本识别,能够在屏幕上的某个区域、控件或整个窗口中查找特定文本,还能够单击文本或控件。
您可以通过创建工作流顺序执行不同的操作。
我们 Deskover 是 Sikuli 项目的忠实粉丝。我们实际上在 UiPath Studio 中使用了相同的图像识别引擎。
UiPath Studio 是一个可视化工具,可帮助您轻松创建工作流程,但您也可以使用底层 API 并实现提取文本并单击它的应用程序。您可以在此处找到有关 UiPath 库的更多详细信息。