OCR 测试
在移动原生应用和桌面网站上进行自动化测试时,当处理缺乏唯一标识符的元素时可能特别具有挑战性。标准的 WebdriverIO 选择器 可能并不总是能帮到你。这时就需要 @wdio/ocr-service
了,这是一项强大的服务,它利用 OCR(光学字符识别)来搜索、等待和与基于可见文本的屏幕元素进行交互。
以下自定义命令将被提供并添加到 browser/driver
对象中,这样你就能获得合适的工具来完成你的工作。
await browser.ocrGetText
await browser.ocrGetElementPositionByText
await browser.ocrWaitForTextDisplayed
await browser.ocrClickOnText
await browser.ocrSetValue
它是如何工作的
这项服务将:
- 创建屏幕/设备的截图。(如有需要,你可以提供一个搜索区域,可以是一个元素或矩形对象,以精确定位特定区域。请参阅每个命令的文档。)
- 通过将截图转换为黑白高对比度的图像来优化 OCR 结果(高对比度是为了防止大量图像背景噪音。这可以根据每个命令进行自定义。)
- 使用来自 Tesseract.js/Tesseract 的光学字符识别来获取屏幕上的所有文本,并在图像上高亮显示所有找到的文本。它可以支持多种语言,可以在这里找到。
- 使用 Fuse.js 的模糊逻辑来查找与给定模式_大致相等_的字符串(而不是完全相等)。这意味着例如搜索值
Username
也可以找到文本Usename
,反之亦然。 - 提供一个命令行向导(
npx ocr-service
)通过你的终端验证图像并获取文本
步骤 1、2 和 3 的示例可以在下图中找到
它可以在零系统依赖(除了 WebdriverIO 使用的依赖)的情况下工作,但如果需要,它也可以与 Tesseract 的本地安装一起工作,这将大大减少执行时间!(另请参阅测试执行优化了解如何加速你的测试。)
感兴趣吗?今天就通过遵循入门指南开始使用它。