پرش به محتوای اصلی

ocrGetElementPositionByText

موقعیت یک متن را در صفحه نمایش دریافت کنید. این دستور متن ارائه شده را جستجو کرده و سعی می‌کند بر اساس منطق فازی از Fuse.js یک تطابق پیدا کند. این بدان معناست که اگر انتخابگری با اشتباه تایپی ارائه دهید، یا متن یافت شده ممکن است ۱۰۰٪ مطابقت نداشته باشد، همچنان سعی می‌کند یک عنصر را به شما برگرداند. گزارش‌ها را در زیر ببینید.

استفاده

const result = await browser.ocrGetElementPositionByText("Username");

console.log("result = ", JSON.stringify(result, null, 2));

خروجی

نتیجه

result = {
"dprPosition": {
"left": 373,
"top": 606,
"right": 439,
"bottom": 620
},
"filePath": ".tmp/ocr/desktop-1716658199410.png",
"matchedString": "Started",
"originalPosition": {
"left": 373,
"top": 606,
"right": 439,
"bottom": 620
},
"score": 85.71,
"searchValue": "Start3d"
}

گزارش‌ها

# Still finding a match even though we searched for "Start3d" and the found text was "Started"
[0-0] 2024-05-25T17:29:59.179Z INFO webdriver: COMMAND ocrGetElementPositionByText(<object>)
......................
[0-0] 2024-05-25T17:29:59.993Z INFO @wdio/ocr-service:ocrGetElementPositionByText: Multiple matches were found based on the word "Start3d". The match "Started" with score "85.71%" will be used.

گزینه‌ها

text

  • نوع: string
  • اجباری: بله

متنی که می‌خواهید برای کلیک کردن جستجو کنید.

مثال

await browser.ocrGetElementPositionByText({ text: "WebdriverIO" });

contrast

  • نوع: number
  • اجباری: خیر
  • پیش‌فرض: 0.25

هر چه کنتراست بالاتر باشد، تصویر تیره‌تر می‌شود و برعکس. این می‌تواند به یافتن متن در تصویر کمک کند. مقادیر بین -1 و 1 را می‌پذیرد.

مثال

await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
contrast: 0.5,
});

haystack

  • نوع: number
  • اجباری: WebdriverIO.Element | ChainablePromiseElement | Rectangle

این منطقه جستجو در صفحه نمایش است که OCR باید برای متن جستجو کند. این می‌تواند یک عنصر یا یک مستطیل شامل x، y، width و height باشد.

مثال

await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
haystack: $("elementSelector"),
});

// یا
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
haystack: await $("elementSelector"),
});

// یا
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
haystack: {
x: 10,
y: 50,
width: 300,
height: 75,
},
});

language

  • نوع: string
  • اجباری: خیر
  • پیش‌فرض: eng

زبانی که Tesseract تشخیص می‌دهد. اطلاعات بیشتر را می‌توان اینجا پیدا کرد و زبان‌های پشتیبانی شده را می‌توان اینجا یافت.

مثال

import { SUPPORTED_OCR_LANGUAGES } from "@wdio/ocr-service";
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
// استفاده از هلندی به عنوان زبان
language: SUPPORTED_OCR_LANGUAGES.DUTCH,
});

fuzzyFindOptions

شما می‌توانید منطق فازی برای یافتن متن را با گزینه‌های زیر تغییر دهید. این ممکن است به یافتن تطابق بهتر کمک کند.

fuzzyFindOptions.distance

  • نوع: number
  • اجباری: خیر
  • پیش‌فرض: 100

تعیین می‌کند که تطابق چقدر باید به موقعیت فازی (مشخص شده توسط location) نزدیک باشد. یک تطابق دقیق حرف که به اندازه distance کاراکتر از موقعیت فازی دور است، به عنوان عدم تطابق کامل امتیازدهی می‌شود. فاصله 0 نیاز به تطابق در موقعیت دقیق مشخص شده دارد. فاصله 1000 نیاز به تطابق کامل در محدوده 800 کاراکتر از موقعیت برای یافتن با آستانه 0.8 خواهد داشت.

مثال
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
fuzzyFindOptions: {
distance: 20,
},
});

fuzzyFindOptions.location

  • نوع: number
  • اجباری: خیر
  • پیش‌فرض: 0

تعیین می‌کند که الگو تقریباً در کجای متن انتظار می‌رود که یافت شود.

مثال
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
fuzzyFindOptions: {
location: 20,
},
});

fuzzyFindOptions.threshold

  • نوع: number
  • اجباری: خیر
  • پیش‌فرض: 0.6

در چه نقطه‌ای الگوریتم تطبیق تسلیم می‌شود. آستانه 0 نیاز به تطابق کامل (از هر دو حرف و موقعیت) دارد، آستانه 1.0 با هر چیزی مطابقت خواهد داشت.

مثال
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
fuzzyFindOptions: {
threshold: 0.8,
},
});

fuzzyFindOptions.isCaseSensitive

  • نوع: boolean
  • اجباری: خیر
  • پیش‌فرض: false

آیا جستجو باید به بزرگی و کوچکی حروف حساس باشد.

مثال
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
fuzzyFindOptions: {
isCaseSensitive: true,
},
});

fuzzyFindOptions.minMatchCharLength

  • نوع: number
  • اجباری: خیر
  • پیش‌فرض: 2

فقط تطابق‌هایی که طول آنها از این مقدار بیشتر است برگردانده خواهند شد. (برای مثال، اگر می‌خواهید تطابق‌های تک کاراکتری را در نتیجه نادیده بگیرید، آن را 2 تنظیم کنید)

مثال
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
fuzzyFindOptions: {
minMatchCharLength: 5,
},
});

fuzzyFindOptions.findAllMatches

  • نوع: number
  • اجباری: خیر
  • پیش‌فرض: false

وقتی true است، تابع تطبیق حتی اگر یک تطابق کامل در رشته قبلاً پیدا شده باشد، تا انتهای الگوی جستجو ادامه می‌دهد.

مثال
await browser.ocrGetElementPositionByText({
text: "WebdriverIO",
fuzzyFindOptions: {
findAllMatches: 100,
},
});

Welcome! How can I help?

WebdriverIO AI Copilot