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

استراتيجيات الاكتشاف

بمجرد أن يتجاوز الماكرو الخاص بك النقرات البسيطة، فإن العامل الأكبر في الموثوقية ليس النقر نفسه، بل الطريقة التي تكتشف بها الهدف. وتعمل وحدات الماكرو المتقدمة بشكل أفضل عندما تختار استراتيجية الاكتشاف الصحيحة للواجهة التي تقوم بأتمتتها.

ابدأ بأبسط إشارة موثوقة

قبل ضبط الإعدادات، اختر أولًا الإشارة الأكثر استقرارًا:

  1. استخدم الإحداثيات الثابتة فقط عندما لا يتغير موضع الهدف أبدًا
  2. استخدم اكتشاف الصور عندما يكون الشكل المرئي مستقرًا ومميزًا
  3. استخدم اكتشاف النصوص عندما يكون التعرّف على التسميات أسهل من الأيقونات
  4. استخدم Region() أصغر عندما تعرف تقريبًا أين يجب أن يظهر الهدف

إذا عملت عدة استراتيجيات، فافضّل الاستراتيجية ذات أصغر مساحة بحث وأقل غموض.

Screen مقابل Region

الخطأ الأكثر شيوعًا في الأداء هو البحث في الشاشة بأكملها عن كل شيء.

استخدم Screen عندما:

  • يمكن أن يظهر الهدف في أي مكان تقريبًا
  • تكون بصدد إنشاء النسخة الأولى من ماكرو
  • تكون بصدد استكشاف تدفق تطبيق جديد

استخدم Region عندما:

  • يظهر الهدف دائمًا في قسم معروف من الواجهة
  • تحتوي الشاشة على أيقونات متكررة أو نصوص متكررة
  • تريد مطابقة أسرع وأكثر استقرارًا
local actionArea = Region(900, 1600, 1080, 2200)
actionArea:click("continue-button.jpg")

تقنية المنطقة الملائمة (Fit Region)

إحدى أنفع التقنيات المتقدمة هي ما يُعرف بـ "المنطقة الملائمة" (fit region).

الفكرة هي:

  1. ابحث عن الكائن مرة واحدة باستخدام Screen:find()
  2. حوّل تلك المطابقة إلى Region ملائمة باستخدام result:getRegion()
  3. أعد استخدام تلك المنطقة الملائمة في عمليات البحث التالية إذا بقي حجم الكائن مستقرًا

يعمل هذا بشكل جيد عندما:

  • يكون للكائن دائمًا العرض والارتفاع نفسيهما
  • قد تتغير محتويات الكائن، ولكن منطقته الحاوية تبقى ثابتة
  • يكون البحث في الشاشة الكاملة مكلفًا ومتكررًا
local result = Screen:find("inventory-panel.jpg")
if result then
local fitRegion = result:getRegion()
local collectButton = fitRegion:find("collect-button.jpg")
if collectButton then
fitRegion:click("collect-button.jpg")
end
end

لماذا هذه التقنية قوية:

  • البحث الأول في الشاشة الكاملة هو الخطوة المكلفة
  • بمجرد العثور على الكائن، تقتصر جميع عمليات البحث اللاحقة على الحدود الملائمة
  • يمكن أن يقلل ذلك من تكلفة OCR ومطابقة الصور بشكل كبير في التدفقات المتكررة

استخدم المنطقة الملائمة عندما:

  • لديك لوحة أو بطاقة أو نافذة منبثقة أو فتحة أو حاوية مستقرة
  • يتفاعل الماكرو بشكل متكرر داخل الكائن المطابق نفسه
  • يظهر الكائن نفسه في مواضع مختلفة لكنه يحافظ على الأبعاد نفسها

تجنّب استخدام المنطقة الملائمة عندما:

  • يتغير حجم الكائن بشكل كبير بين الشاشات أو الأجهزة
  • تتوسع منطقة الهدف أو تنهار ديناميكيًا
  • تكون المطابقة الأولى عامة جدًا وقد ترتبط بحاوية خاطئة

عمليًا، تعد المنطقة الملائمة واحدة من أفضل الطرق لتحويل ماكرو Screen بطيء إلى ماكرو Region سريع دون تثبيت الإحداثيات يدويًا.

اكتشاف الصور مقابل اكتشاف النصوص

افضّل اكتشاف الصور عندما:

  • يكون الهدف ذا طابع رسومي في الغالب
  • قد تتغير لغة الواجهة
  • يكون النص منمّقًا أو معروضًا داخل زر
  • يعاني OCR لأن النص صغير جدًا أو منخفض التباين

افضّل اكتشاف النصوص عندما:

  • تتغير التسمية في موضعها لكنها تحافظ على الصياغة نفسها
  • يظهر المكوّن المرئي نفسه في العديد من السمات أو الحالات
  • يتغير شكل الزر لكن التسمية تبقى قابلة للقراءة
  • تحتاج إلى مطابقة نص ينشئه التطبيق ديناميكيًا

OCR كلمة بكلمة مقابل سطر بسطر

عند استخدام اكتشاف النصوص، فإن طريقة الاكتشاف مهمة:

  • استخدم setDetectionMethod(1) لكلمة واحدة أو تسمية قصيرة جدًا
  • استخدم setDetectionMethod(2) عندما يكون الهدف عبارة أو سطرًا كاملًا
Screen:click("Login", ClickParams():setDetectionType("TEXT"):setDetectionMethod(1))
Screen:wait("Your session has expired", 5000, FinderParams():setDetectionType("TEXT"):setDetectionMethod(2))

اضبط درجة المطابقة تدريجيًا

درجة المطابقة المرتفعة جدًا تسبب تفويت الأهداف. ودرجة المطابقة المنخفضة جدًا تسبب المطابقات الخاطئة.

عملية ضبط عملية:

  1. ابدأ بالدرجة الافتراضية
  2. إذا فاتك الهدف، اخفض الدرجة قليلًا
  3. إذا تطابق شيء خاطئ، ارفع الدرجة قليلًا
  4. إذا حدث الأمران معًا، قلّل مساحة البحث قبل تغيير الدرجة أكثر

في معظم الحالات، فإن تقليل الغموض باستخدام Region() أكثر أمانًا من دفع درجة المطابقة بقوة مفرطة.

استخدم التدرج الرمادي فقط عندما يفيد

يمكن أن يحسّن التدرج الرمادي السرعة وأحيانًا يحسّن الاتساق، لكنه ليس أفضل تلقائيًا.

استخدم التدرج الرمادي عندما:

  • يُعرّف الهدف أكثر بالشكل من اللون
  • تجعل تغييرات الإضاءة أو الألوان المطابقة غير مستقرة
  • تريد مطابقة أسرع على الأجهزة الأقل قوة

تجنّب الاعتماد على التدرج الرمادي عندما:

  • اللون هو الفرق الرئيسي بين الأهداف المتشابهة
  • تحاول التمييز بين الحالات النشطة وغير النشطة باللون

القياس الديناميكي

إذا تم تشغيل الماكرو نفسه عبر أجهزة بدقات مختلفة، يمكن أن يساعد القياس الديناميكي في إبقاء اكتشاف الصور قابلاً للاستخدام.

استخدم القياس الديناميكي عندما:

  • التُقطت القالب على جهاز ولكنه نُفّذ على آخر
  • تغيّر تخطيط التطبيق نفسه عبر الهواتف أو الأجهزة اللوحية

لكن إذا كانت الواجهة متسقة بشكل كبير بالفعل على جهاز واحد، فإن قالبًا مقصوصًا جيدًا بالإضافة إلى منطقة جيدة عادةً ما يكون أكثر استقرارًا من الإفراط في ضبط القياس.

قُص القوالب بشكل صارم

يجب أن يحتوي القالب الجيد فقط على ما يجعل الهدف فريدًا.

قالب جيد:

  • الأيقونة نفسها
  • منطقة التسمية الفريدة
  • النمط المرئي المستقر الأدنى

قالب سيئ:

  • مساحة بيضاء كبيرة محيطة
  • خلفيات متحركة
  • محتوى يتغير في كل تشغيل
  • عناصر قريبة لا تشكل جزءًا من الهدف

استخدم الاكتشاف ذا الخطوتين للشاشات الصعبة

عندما تكون الشاشة مشوشة، استخدم نهجًا مرحليًا:

  1. انتظر عنصر مرجعي مستقر
  2. ضيّق مساحة البحث
  3. اكتشف الهدف النهائي داخل تلك المنطقة
Screen:wait("settings-title.jpg", 5000)

local footerArea = Region(0, 1700, 1080, 2400)
footerArea:click("save-button.jpg")

النمط الموصى به

بالنسبة إلى وحدات الماكرو المتقدمة، فهذا هو الترتيب الأكثر أمانًا عادةً:

  1. انتظر حالة مستقرة
  2. قيّد مساحة البحث
  3. اختر اكتشاف الصور أو النصوص بنيّة واضحة
  4. اضبط الدرجة فقط بعد تقليل الغموض
  5. تحقق من النتيجة قبل المتابعة

صفحات ذات صلة