تست OCR
تست خودکار در اپلیکیشنهای موبایل و سایتهای دسکتاپ میتواند چالش برانگیز باشد، مخصوصاً زمانی که با عناصری مواجه میشوید که شناسههای منحصر به فردی ندارند. انتخابگرهای استاندارد WebdriverIO همیشه نمیتوانند به شما کمک کنند. وارد دنیای @wdio/ocr-service
شوید، سرویسی قدرتمند که از OCR (تشخیص نوری کاراکتر) استفاده میکند تا بر اساس متن قابل مشاهده، عناصر روی صفحه را جستجو، منتظر آنها بماند و با آنها تعامل کند.
دستورات سفارشی زیر ارائه و به شیء browser/driver
اضافه میشوند تا مجموعه ابزار مناسب برای انجام کار خود را داشته باشید.
await browser.ocrGetText
await browser.ocrGetElementPositionByText
await browser.ocrWaitForTextDisplayed
await browser.ocrClickOnText
await browser.ocrSetValue
چگونه کار میکند
این سرویس:
- یک اسکرینشات از صفحه/دستگاه شما ایجاد میکند. (در صورت نیاز میتوانید یک haystack ارائه دهید، که میتواند یک عنصر یا یک شی مستطیلی باشد، تا یک منطقه خاص را مشخص کنید. به مستندات هر دستور مراجعه کنید.)
- نتیجه را برای OCR بهینهسازی میکند با تبدیل اسکرینشات به سیاه/سفید با کنتراست بالا (کنتراست بالا برای جلوگیری از نویز پسزمینه تصویر لازم است. این قابلیت را میتوان برای هر دستور سفارشی کرد.)
- از تشخیص نوری کاراکتر از Tesseract.js/Tesseract استفاده میکند تا تمام متنها را از صفحه دریافت کند و تمام متنهای یافت شده را در تصویر برجسته کند. میتواند چندین زبان را پشتیبانی کند که در اینجا میتوانید پیدا کنید.
- از منطق فازی از Fuse.js استفاده میکند تا رشتههایی را پیدا کند که تقریباً برابر با الگوی داده شده هستند (به جای دقیقاً برابر). این یعنی برای مثال مقدار جستجوی
Username
میتواند متنUsename
را نیز پیدا کند یا برعکس. - یک ویزارد خط فرمان (
npx ocr-service
) را ارائه میدهد تا تصاویر خود را اعتبارسنجی کنید و متن را از طریق ترمینال خود بازیابی کنید
یک مثال از مراحل 1، 2 و 3 را میتوانید در این تصویر ببینید
این سرویس با هیچ وابستگی سیستمی (به جز آنچه WebdriverIO استفاده میکند) کار میکند، اما در صورت نیاز میتواند با نصب محلی Tesseract نیز کار کند که زمان اجرا را به شدت کاهش میدهد! (همچنین به بهینهسازی اجرای تست درباره چگونگی تسریع تستها مراجعه کنید.)
مشتاق هستید؟ با دنبال کردن راهنمای شروع به کار همین امروز شروع به استفاده از آن کنید.
دلایل مختلفی وجود دارد که ممکن است خروجی با کیفیت خوبی از Tesseract دریافت نکنید. یکی از بزرگترین دلایلی که میتواند به برنامه شما و این ماژول مرتبط باشد، این است که تمایز رنگی مناسبی بین متنی که باید پیدا شود و پسزمینه وجود ندارد. به عنوان مثال، متن سفید روی پسزمینه تیره میتواند به آسانی پیدا شود، اما متن روشن روی پسزمینه سفید یا متن تیره روی پسزمینه تیره به سختی قابل یافتن است.
برای اطلاعات بیشتر از Tesseract، به این صفحه مراجعه کنید.
همچنین فراموش نکنید که سوالات متداول را مطالعه کنید.