انتقل إلى المحتوى الرئيسي

ocrGetElementPositionByText

الحصول على موقع نص على الشاشة. ستقوم الأمر بالبحث عن النص المقدم ومحاولة العثور على تطابق بناءً على المنطق الضبابي من Fuse.js. هذا يعني أنه إذا قدمت محدد بأخطاء إملائية، أو كان النص الموجود ليس متطابقًا بنسبة 100%، فإنه سيحاول إعطاءك عنصرًا. انظر السجلات أدناه.

الاستخدام

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

يحدد مدى قرب التطابق من الموقع الضبابي (المحدد بالموقع). سيتم احتساب تطابق حرف بالضبط على مسافة أحرف بعيدًا عن الموقع الضبابي كعدم تطابق كامل. المسافة 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