跳到主要内容

OCR 测试

在移动原生应用和桌面网站上进行自动化测试时,当处理缺乏唯一标识符的元素时可能特别具有挑战性。标准的 WebdriverIO 选择器 可能并不总是能帮到你。这时就需要 @wdio/ocr-service 了,这是一项强大的服务,它利用 OCR(光学字符识别)来搜索、等待和与基于可见文本的屏幕元素进行交互。

以下自定义命令将被提供并添加到 browser/driver 对象中,这样你就能获得合适的工具来完成你的工作。

它是如何工作的

这项服务将:

  1. 创建屏幕/设备的截图。(如有需要,你可以提供一个搜索区域,可以是一个元素或矩形对象,以精确定位特定区域。请参阅每个命令的文档。)
  2. 通过将截图转换为黑白高对比度的图像来优化 OCR 结果(高对比度是为了防止大量图像背景噪音。这可以根据每个命令进行自定义。)
  3. 使用来自 Tesseract.js/Tesseract光学字符识别来获取屏幕上的所有文本,并在图像上高亮显示所有找到的文本。它可以支持多种语言,可以在这里找到。
  4. 使用 Fuse.js 的模糊逻辑来查找与给定模式_大致相等_的字符串(而不是完全相等)。这意味着例如搜索值 Username 也可以找到文本 Usename,反之亦然。
  5. 提供一个命令行向导(npx ocr-service)通过你的终端验证图像并获取文本

步骤 1、2 和 3 的示例可以在下图中找到

处理步骤

它可以在系统依赖(除了 WebdriverIO 使用的依赖)的情况下工作,但如果需要,它也可以与 Tesseract 的本地安装一起工作,这将大大减少执行时间!(另请参阅测试执行优化了解如何加速你的测试。)

感兴趣吗?今天就通过遵循入门指南开始使用它。

重要

有很多原因可能导致你无法从 Tesseract 获得高质量的输出。与你的应用和此模块相关的最大原因之一可能是文本和背景之间缺乏适当的颜色区分。例如,深色背景上的白色文本_很容易_被找到,但白色背景上的浅色文本或深色背景上的深色文本几乎无法找到。

更多来自 Tesseract 的信息请参见此页面

另外别忘了阅读常见问题

Welcome! How can I help?

WebdriverIO AI Copilot