البرنامج التعليمي UIAutomatorViewer: المفتش لـ Android الاختبار

⚡ ملخص ذكي

UIAutomatorViewer هو أداة فحص رسومية مدمجة مع Android مجموعة تطوير برمجية (SDK) تلتقط لقطة شاشة للجهاز، وتعرض التسلسل الهرمي للعرض، وتُظهر السمات. Appium يحتاج إلى تحديد مواقع الأزرار والحقول والملصقات بشكل موثوق.

  • 🔘 ماذا يفعل: يمسح ضوئيا مباشرا Android تعرض الشاشة التسلسل الهرمي للعقد بجانب ورقة خصائص العنصر المحدد.
  • ☑️ أين يعيش: يقع جهاز الإطلاق في Android قم بتشغيل مجلد أدوات SDK باسم uiautomatorviewer.bat وابدأ تشغيله Java نافذة سطح المكتب.
  • ✅ تدفق الالتقاط: قم بتشغيل خيارات المطور، وقم بتوصيل الهاتف عبر منفذ USB، ثم اضغط على "لقطة شاشة الجهاز" لتحميل الشاشة الحالية.
  • 🧪 خريطة السماتping: يصبح النص اسمًا، ويصبح معرف المورد معرفًا، ويصبح الصنف اسم الصنف، ويصبح وصف المحتوى معرف إمكانية الوصول.
  • 🛠️ استكشاف الأخطاء وإصلاحها: الرسالة "لا" Android يشير مصطلح "تم اكتشاف الأجهزة بواسطة adb" دائمًا تقريبًا إلى كابل أو برنامج تشغيل أو إعداد تصحيح الأخطاء.
  • 📊 الخيار الحديث: Appium أغطية المفتش Android وهو متوفر لنظامي التشغيل iOS و iOS، ولا يزال متاحًا بعد إيقاف حزمة أدوات SDK القديمة.

أداة فحص UIAutomatorViewer لـ Android اختبار التطبيق

ما هو UIAutomatorViewer؟

UIAutomatorViewer هي أداة واجهة مستخدم رسومية لمسح وتحليل مكونات واجهة المستخدم الخاصة بـ Android تطبيق. لأتمتة أي Android التطبيق باستخدام Appiumيحتاج المستخدم إلى تحديد العناصر في التطبيق قيد الاختبار (AUT). باستخدام UIAutomatorViewer، يمكنك فحص واجهة المستخدم الخاصة بـ Android تطبيق لمعرفة التسلسل الهرمي وعرض الخصائص المختلفة (المعرف، النص، إلخ) للعنصر.

أثناء تنفيذ البرامج النصية للأتمتة، Appium يستخدم هذا البرنامج أداة UIAutomatorViewer لتحديد خصائص الكائن المختلفة، ثم يستخدم هذه الخصائص لتحديد الكائن المطلوب. هذه الفكرة الأساسية - قراءة السمة في نافذة الخصائص، ثم إعادة استخدامها كمحدد موقع في البرنامج النصي - هي ما يشرحه باقي هذا المقال.

تُظهر لقطة الشاشة أدناه الأداة في حالة عملها الطبيعية: شاشة الجهاز الملتقطة على اليسار، وشجرة العقدة في أعلى اليمين، وصفحة خصائص العقدة المحددة أسفلها.

نافذة UIAutomatorViewer تعرض شاشة الجهاز الملتقطة، وشجرة التسلسل الهرمي للعقدة، ولوحة تفاصيل العقدة.

المتطلبات الأساسية لاستخدام UIAutomatorViewer

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

  • A Java مجموعة تطوير: uiautomatorviewer هو Java تطبيق سطح المكتب الذي يتم تشغيله بواسطة برنامج نصي دفعي، لذلك يجب تثبيت JDK وأن يكون متاحًا في مسار النظام.
  • استخدم Android SDK: يتم عرض السفن داخل SDK أدوات المجلد، لذلك يجب تثبيت SDK قبل وجود المشغل على القرص.
  • أدوات المنصة و adb: يتحدث المشاهد إلى الجهاز من خلال Android جسر التصحيح، لذلك بنك التنمية الآسيوي يجب تثبيته وأن يكون قادراً على رؤية الهاتف.
  • خيارات المطور وتصحيح أخطاء USB: يجب تشغيل كليهما في إعدادات الجهاز، وإلا فلن يقوم adb بإدراج الجهاز.
  • كابل USB مزود بإمكانية نقل البيانات وبرنامج تشغيل: كابل شحن فقط، أو برنامج تشغيل من الشركة المصنعة مفقود Windows، ينتج قائمة أجهزة فارغة.
  • التطبيق قيد الاختبار: يجب تثبيت التطبيق وفتحه على الجهاز، لأن أداة الفحص تلتقط كل ما هو معروض على الشاشة حاليًا.

مع وجود هذه العناصر الستة، تصبح خطوة التنزيل قصيرة.

كيفية تنزيل وتثبيت UIAutomatorViewer

يُعد UIAutomatorViewer جزءًا من Android مدير SDK، وسيكون متاحًا بمجرد تثبيته. قم بتنزيله وتثبيته. Android مجموعة تطوير البرامج (SDK) من المسؤول Android Studio تحميل الصفحة.

بمجرد Android تم تثبيت حزمة تطوير البرامج (SDK)، انتقل إلى هذا المسار:

c:\users\<username>\AppData\Local\Android\sdk\tools

ستلاحظ وجود ملف دفعي بهذا الاسم:

uiautomatorviewer.bat

Double انقر عليه لتشغيل واجهة المستخدم الرسومية لبرنامج UIAutomatorViewer. ستظهر قائمة المجلدات كما هو موضح أدناه، حيث يوجد ملف الدُفعة بجانب أدوات SDK الأخرى.

Android مجلد أدوات SDK في Windows مستكشف يحتوي على مشغل الدفعات uiautomatorviewer

⚠️ ملاحظة حول الإصدار: Androidلا تزال وثائق UI Automator القديمة الخاصة بـ 's تصف كيفية تشغيل الأداة من /أدوات/، ولكن النظام المستقل القديم Android أدوات SDK لم يعد مدير SDK يقدم هذه الحزمة في الإصدار الحالي Android Studio الإصدارات. لا تزال عمليات التثبيت القديمة وأرشيفات SDK القديمة تحتوي على المشغل؛ أما في التثبيت الجديد، فعادةً ما يكون الملف غير موجود، و Appium يُعدّ برنامج Inspector البديل العملي. وقد تم الإبقاء على الخطوات الأصلية المذكورة أعلاه لأنها لا تزال صحيحة لأي جهاز لا يزال يحتوي على مجلد الأدوات.

كيفية استخدام UIAutomatorViewer للعثور على الكائنات في تطبيقك

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

  1. تفعيل خيارات المطور على جهازك. اقرأ Androidدليل لتكوين خيارات المطور على الجهاز لمعرفة كيفية تفعيل خيارات المطور على Android الأجهزة.
  2. قم بتوصيل Android توصيل الجهاز بالكمبيوتر عبر كابل USB.
  3. حدد "Guruتطبيق 99" من قائمة التطبيقات، كما هو موضح أدناه.

Guruتم اختيار 99 طلبًا من بين Android قائمة تطبيقات الجهاز

  1. انقر على لقطة شاشة للجهاز زر لتحديث UIAutomatorViewer ولتحميل Guruقم بإدخال واجهة المستخدم الرسومية للتطبيق رقم 99 في الأداة. يوجد الزر في شريط الأدوات الموضح أدناه.

زر شريط أدوات لقطة الشاشة للجهاز يُستخدم لتحديث عملية التقاط UIAutomatorViewer

  1. بعد اكتمال التحديث، سيتم التقاط لقطة شاشة لـ Guruيتم فتح تطبيق 99 في الجزء الأيسر.

القبض Guruتم تحميل شاشة التطبيق رقم 99 في الجزء الأيسر من UIAutomatorViewer

  1. كما ترون في الصورة أعلاه، يوجد على الجانب الأيمن من النافذة لوحتان.

تحتوي اللوحة العلوية على التسلسل الهرمي للعقد - أي الطريقة التي يتم بها ترتيب مكونات واجهة المستخدم واحتوائها. يؤدي النقر على كل عقدة إلى عرض خصائص عنصر واجهة المستخدم هذا في اللوحة السفلية.

  1. حدد زر "الاختبار" في الصورة أعلاه لعرض خصائصه المختلفة (النص، معرف المورد ...).

زر الاختبار المحدد في شجرة العقدة مع خصائصه المدرجة في لوحة التفاصيل السفلية

كيفية استخدام هذه الخصائص لتحديد عناصر الأتمتة

حسنًا، لا يمكنك استخدام الخصائص مباشرةً، فلكل خاصية اسم مختلف في واجهة برمجة تطبيقات التشغيل الآلي. دعونا نرى كيفية استخدام قيم هذه الخصائص. يمكن استخدام السمات التالية لتحديد زر "الاختبار" في Guru99 تطبيق.

السمة في UIAutomatorViewer اسم المحدد في البرنامج النصي الاستخدام النموذجي
نص الاسم تسمية مرئية على زر أو حقل ثابت
معرف المورد id الخيار الأكثر استقرارًا عندما يحدد المطور واحدًا
فئة اسم_الفئة تحديد مجموعة من الأدوات من نفس النوع
وصف المحتوى معرف إمكانية الوصول محدد مواقع متعدد المنصات يساعد أيضًا قارئات الشاشة

كل خريطةping يظهر مباشرةً في لوحة تفاصيل العقدة. نص يمكن استخدام السمة كـ "اسم"، كما هو موضح في صف الخاصية أدناه.

صف تفاصيل العقدة الذي يعرض قيمة سمة النص المستخدمة كمحدد للاسم

استخدم معرف المورد يمكن استخدام السمة كـ "معرف".

صف تفاصيل العقدة الذي يعرض قيمة سمة معرف المورد المستخدمة كمحدد للمعرف

استخدم فئة يمكن استخدام السمة كـ "className".

صف تفاصيل العقدة الذي يعرض قيمة سمة الفئة المستخدمة كمحدد اسم الفئة

استخدم وصف المحتوى يمكن استخدام السمة كـ "AccessibilityId".

صف تفاصيل العقدة الذي يعرض قيمة سمة وصف المحتوى المستخدمة كمحدد معرف إمكانية الوصول

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

كيفية إنشاء محددات XPath من سمات UIAutomatorViewer

يُعدّ XPath الخيار البديل عندما لا تكون أي سمة فريدة بحد ذاتها. توفر لك لوحة تفاصيل العقدة جميع القيم التي يحتاجها التعبير، لذا فإن XPath هو في الواقع السمة التي قرأتها بالفعل، مكتوبة بصيغة شرطية.

اتبع هذا الترتيب في حل اللوحة:

  1. حدد العقدة في اللوحة العلوية واقرأها فئة, نص, معرف المورد و وصف المحتوى القيم في اللوحة السفلية.
  2. يُفضّل استخدام سمة واحدة ثابتة. إذا كانت قيمة resource-id موجودة، فاستخدمها وتوقف - لا حاجة إلى XPath.
  3. إذا لم يكن هناك شيء فريد، فقم بدمج سمتين في مسند واحد.
  4. إذا تغيرت التسمية أثناء التشغيل، فقم بتغيير اختبار المساواة للحصول على تطابق جزئي.

تستخدم الأنماط أدناه أسماء السمات تمامًا كما يعرضها برنامج UIAutomatorViewer.

<!-- match on the visible label -->
//*[@text='Quiz']

<!-- match on the resource-id reported by the viewer -->
//*[@resource-id='com.example.app:id/quiz_button']

<!-- match on the widget class -->
//android.widget.Button[@text='Quiz']

<!-- partial match when the label is dynamic -->
//*[contains(@text,'Qui')]

<!-- two attributes combined for a unique match -->
//*[@class='android.widget.Button' and @content-desc='Quiz']

تمنع بعض القواعد هذه التعبيرات من أن تصبح هشة. تتعطل المسارات المطلقة التي تجوب الشجرة بأكملها بمجرد أن يقوم المطور بتغليف تخطيط في حاوية أخرى، لذا ابدأ كل تعبير بشرطتين مائلتين وقم بالمطابقة على سمة بدلاً من ذلك. تتصرف المسندات القائمة على الفهرس بنفس الطريقة - فهي تبقى حتى تكتسب الشاشة صفًا. وقد يتطابق تعبير فريد على شاشة الهاتف مع عدة عقد على تخطيط الجهاز اللوحي، لذا أعد فحص نفس الشاشة على كلا عاملي الشكل قبل ترقية المحدد إلى مجموعة. وينطبق نفس الانضباط على XPath في Selenium، حيث تكون الشجرة عبارة عن نموذج كائن المستند (DOM) بدلاً من تسلسل هرمي للعرض.

الأخطاء التي قد يواجهها المستخدم أثناء استخدام UIAutomatorViewer

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

  • أرى الخطأ — "لا" Android تم اكتشاف الأجهزة بواسطة adb — كما هو موضح في لقطة الشاشة أدناه. كيف يمكنني حل هذه المشكلة؟

مربع حوار UIAutomatorViewer يُبلغ عن عدم وجود Android تم اكتشاف الأجهزة بواسطة adb

حل: تأكد من توصيل جهازك بالكمبيوتر.

يوضح الجدول أدناه تلك الإجابة لتشمل الرسائل الأخرى التي يصادفها المختبرون في أغلب الأحيان.

عرض سبب محتمل حل
لا Android تم اكتشاف الأجهزة بواسطة adb الجهاز غير متصل، أو تم إيقاف تصحيح أخطاء USB، أو كابل الشحن فقط أعد الاتصال باستخدام كابل البيانات، وقم بتمكين تصحيح أخطاء USB، ثم تأكد من ظهور الهاتف في قائمة أجهزة adb
تم إدراج الجهاز على أنه غير مصرح به لم يتم قبول طلب بصمة الإصبع RSA على الهاتف المحمول افتح قفل الشاشة، وأعد توصيل الجهاز، ثم انقر على "السماح بتصحيح أخطاء USB".
ملف uiautomatorviewer.bat مفقود لم يتم تثبيت حزمة أدوات SDK القديمة استخدم تثبيت SDK موجودًا لا يزال يحتوي عليه، أو انتقل إلى Appium مفتش
التسلسل الهرمي فارغ أو فشلت عملية الالتقاط تغيرت الشاشة أثناء عملية التفريغ، أو أن التطبيق يحظر التقاط الشاشة ثبّت الشاشة والتقط الصورة مرة أخرى؛ لا يمكن التقاط الشاشات الآمنة.
يظهر محتوى WebView كعقدة واحدة يعرض البرنامج وجهات النظر الأصلية فقط افحص محتوى الويب باستخدام أدوات مطوري المتصفح أو أداة فحص تدعم سياق الويب

UIAutomatorViewer مقابل Appium مفتش مقابل مفتش تخطيط

يتم استخدام ثلاثة مفتشين بشكل شائع ضد Android الشاشات، وهي تحل مشاكل مختلفة قليلاً.

معيار UIAutomatorViewer Appium مفتش Android Studio مفتش التخطيط
يشحن مع الإرث Android حزمة أدوات SDK تطبيق مكتبي مستقل Android Studio
تم فحص المنصات Android فقط Android و iOS Android فقط
يحتاج إلى خادم قيد التشغيل لا، إنه يتصل بـ adb مباشرة نعم، إنه يتصل بـ Appium جلسة واحدة لا، إنه يرتبط بعملية قابلة للتصحيح
يقوم بإنشاء رمز تحديد الموقع لا، يتم نسخ القيم يدويًا نعم، يقترح البرنامج مواقع الأجهزة ويمكنه تسجيل الإجراءات. لا، إنها شاشة عرض لتصحيح الأخطاء
أفضل مناسب لـ بحث سريع عن السمات في إعداد قديم بناء وتحديد مواقع الأجنحة تشخيص مشاكل التخطيط والعرض

لجناح يمتد بالفعل Appiumيُعدّ برنامج Inspector الوريث الطبيعي له: فهو يقرأ نفس السمات، ويشغل نفس برنامج تشغيل UiAutomator2 في الخلفية، ويعمل مع نظام iOS أيضاً. Appium مشروع المفتش يتم إصدارها بشكل مستمر، لذا فهي الخيار الأكثر أمانًا للمشاريع الجديدة، بينما يظل Layout Inspector مفيدًا عندما يكون السؤال هو سبب عرض واجهة المستخدم بشكل غريب بدلاً من كيفية معالجة المشكلة. إذا كنت لا تزال بصدد اختيار مجموعة أدوات، فستجد مقارنة أوسع في دليلنا لـ أدوات اختبار تطبيقات الجوال إنها خطوة جيدة تالية، و نماذج لحالات اختبار الهواتف المحمولة أظهر إلى ماذا تؤدي هذه المحددات في النهاية.

الأسئلة الشائعة

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

لا. الأداة مرتبطة بـ Android جسر تصحيح الأخطاء و Android عرض التسلسل الهرمي. بالنسبة لشاشات iOS، استخدم Appium مفتش or Xcodeأداة فحص إمكانية الوصول الخاصة بـ XCUITest، والتي تقرأ شجرة عناصر XCUITest بدلاً من ذلك.

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

تقوم محركات تحديد المواقع القائمة على التعلم الآلي بتقييم عدة سمات معًا - النص، والفئة، والموقع، والعقد المجاورة - وتعيد تحديد العنصر عند تغيير إحداها. يقلل هذا السلوك التصحيحي الذاتي من حالات الفشل الناتجة عن تغيير اسم المعرّف.

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

لا. يعمل برنامج العرض على الإصدار المُثبّت على الجهاز، لذا يُمكن فحص ملف APK لم تقم بتجميعه. سيتم ملء السمات التي حددها المطور فقط، مثل resource-id و content-desc.

نعم. يُظهر المحاكي وظيفة adb تمامًا مثل الهاتف الحقيقي، لذا يلتقط زر "لقطة شاشة الجهاز" الصورة بنفس الطريقة. تُعد المحاكيات مفيدةً لكتابة البرامج النصية في المراحل الأولى، مع أن التشغيل النهائي يتطلب استخدام جهاز حقيقي.

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

تلخيص هذه التدوينة بـ: