اختبار Uiautomator

  
إطار عمل لاختبار واجهة المستخدم الوظيفية على مستوى جميع التطبيقات
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأولي
7 أيار (مايو) 2025 2.3.0 - - 2.4.0-alpha02

تحديد التبعيات

لإضافة تبعية على الاختبار، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف التبعيات للعناصر التي تحتاج إليها في ملف build.gradle ل تطبيقك أو وحدتك:

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha02"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02")
}

لمزيد من المعلومات عن العناصر الاعتمادية، اطّلِع على مقالة إضافة عناصر الاعتماد الخاصة بالإصدار.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.

الإصدار 2.4

الإصدار 2.4.0-alpha02

7 أيار (مايو) 2025

تم إصدار androidx.test.uiautomator:uiautomator:2.4.0-alpha02. يتضمّن الإصدار 2.4.0-alpha02 عمليات الربط هذه.

الميزات الجديدة

  • الشكل الأولي لواجهة برمجة التطبيقات الجديدة Uiautomator يمكن إنشاء UiAutomatorTestScope من خلال المصنع uiAutomator الذي يتيح الوصول إلى واجهات برمجة التطبيقات onView الجديدة.
  • قواعد Lint الأولية للتحذير من استخدام AccessibilityNodeInfo#getText واقتراح استخدام textAsString

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة Configurator#setDefaultDisplayId لضبط رقم تعريف معروض لحصر جميع عمليات البحث على (Icdf17).
  • تم تغيير Searchable (الواجهة المشتركة بين UiDevice وUiObject2) إلى واجهة عامة للتيسير (I67f18).

إصلاح الأخطاء

  • تم إصلاح معالجة مفاتيح Meta في UiDevice#pressKeyCodes. (I73f80).
  • تم تعديل UiDevice#getWindowRoots لعرض الجذور دائمًا بترتيب Z (I87426).
  • تم إصلاح مشكلة عدم اكتمال بعض الإيماءات (I60dd3 وIf4edd).
  • تم إصلاح حلقة لا نهائية نادرة عند الاتصال بالرقم UiDevice#scrollUntil (I39989).

الإصدار 2.4.0-alpha01

26 حزيران (يونيو) 2024

تم إصدار androidx.test.uiautomator:uiautomator:2.4.0-alpha01. يتضمّن الإصدار 2.4.0-alpha01 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تم إيقاف Configurator#getKeyInjectionDelay وsetKeyInjectionDelay نهائيًا لأنّ المَعلمة غير مستخدَمة الآن بعد أن أصبح النص يتم إدخاله دائمًا مباشرةً بدلاً من الضغط على المفاتيح. (I3bcc5).

إصلاح الأخطاء

  • تم تعديل الوقت الفاصل بين UiObject2 أحداث الحركة لمراعاة معدّلات التحديث الديناميكية (مثل ميزة "العرض السلس") (I43f12).
  • تم تقليل المشاكل الناتجة عن عدم تحديث بيانات عقدة تسهيل الاستخدام في بعض واجهات المستخدم من خلال إلغاء صلاحية ذاكرة التخزين المؤقت لتسهيل الاستخدام بشكل دوري (I3be25).
  • تم إصلاح StaleObjectException التي تحدث عند الاتصال بـ toString أو hashCode باستخدام UiObject2 قديم. (I38ea1).
  • تحسين أداء UiWatcher من خلال تخطّي طلبات waitForIdle غير الضرورية (I8c65e).
  • تمّ إصلاح الأخطاء في javadoc، خاصةً لتوضيح حالات استخدام كلّ مَعلمة Configurator. (Ie10b1، I71631).

الإصدار 2.3.0

الإصدار 2.3.0

21 شباط (فبراير) 2024

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0. يحتوي الإصدار 2.3.0 على هذه المراجعات.

التغييرات المهمة منذ الإصدار 2.2.0

  • التوافق مع الشاشات المتعددة: تمت إضافة إمكانية العثور على العناصر وتنفيذ إجراءات عليها على مستوى شاشات متعددة، وUiDevice طريقة لإدارة الشاشات الثانوية (Ie6544 وI912cd).
  • أداة اختيار جديدة:
    • تمت إضافة By.displayId لاختيار الكائنات حسب رقم التعريف المعروض (I1825b).
    • تمت إضافة By.hasParent وBy.hasAncestor لاختيار العناصر حسب عناصرها الرئيسية (I93c36).
    • تمت إضافة By.hint طريقة لاختيار العناصر حسب نص التلميح (Idd345).
  • الشروط المخصّصة: تمّ عرض واجهة Condition لتفعيل شروط الانتظار المخصّصة، وإضافة طرق UiDevice#wait وUiObject2#wait وUiObject2#scrollUntil المقابلة (27c0ea و099d6e).
  • إصلاح الأخطاء والموثوقية
    • تم إصلاح مشكلة كانت تؤدي إلى احتساب حجم الشاشة بشكل غير صحيح في بعض الأحيان، ما قد يؤدي إلى تجاهل أجزاء من الشاشة (Ifc016). قد تحتاج إلى تعديل الإحداثيات والإزاحات المستخدَمة في الاختبارات.
    • تم تعديل عملية حقن MotionEvent لتحسين الدقة (678ca3) ومحاكاة إيماءات المستخدم بشكل أفضل (454450).
    • تم تحسين موثوقية عمليات التمرير (I7b059) والدوران (c6cea0) والنقرات الطويلة (49572b) والتصغير/التكبير (3c619a) وغير ذلك.

الإصدار 2.3.0-rc01

7 شباط (فبراير) 2024

تم طرح الإصدار androidx.test.uiautomator:uiautomator:2.3.0-rc01 بدون أي تغييرات. يحتوي الإصدار 2.3.0-rc01 على هذه المراجعات.

الإصدار 2.3.0-beta01

13 كانون الأول (ديسمبر) 2023

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0-beta01. يحتوي الإصدار 2.3.0-beta01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة تسمية طريقتَي الهامش المستندتَين إلى النسبة المئوية UiObject2 إلى setGestureMarginPercentage وsetGestureMarginsPercentage لتحقيق الاتساق (I24435).

إصلاح الأخطاء

  • تم تحسين الخطأ الذي يتم طرحه عند عدم العثور على شاشة ثانوية أو عدم الوصول إليها (116b23)

الإصدار 2.3.0-alpha05

1 تشرين الثاني (نوفمبر) 2023

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0-alpha05. يحتوي الإصدار 2.3.0-alpha05 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة UiObject2#getDrawingOrder لعرض معلومات ترتيب الرسم (فهرس z). (I5dfa4).
  • تمت إضافة UiDevice طريقة للحصول على ميزة دوران الشاشات الثانوية وضبطها وتجميدها وإلغاء تجميدها. (I912cd).

إصلاح الأخطاء

  • تمت إضافة إعادة المحاولة إلى UiObject2#scrollUntil عندما يتعذّر رصد نهاية الانتقال للأعلى أو للأسفل (Ibac6f).
  • تم إصلاح المشكلة التي كانت تؤدي إلى استخدام UiDevice لنسخة قديمة من Instrumentation في حال إعادة إنشائها (I18cae).
  • تم إصلاح خطأ NPE محتمل في حال تعذّر تحديد معرّف العرض عند تفريغ العقد (Icafcb).
  • تمّ إضافة تحذير عند إجراء نقرات/تمريرات على عناصر غير قابلة للنقر/التمرير (I4a5d9).
  • تم خفض سرعة الانتقال التلقائية UiObject2 لتحسين الأداء (I5e071).

الإصدار 2.3.0-alpha04

26 تموز (يوليو) 2023

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0-alpha04. يحتوي الإصدار 2.3.0-alpha04 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة By.hasParent وBy.hasAncestor للسماح بالعثور على العناصر حسب عناصرها الرئيسية (I93c36).
  • تمت إضافة UiObject2#getHint لاسترداد نص التلميح الخاص بالعنصر، وBy.hint لاختيار العناصر وفقًا لنص التلميح (Idd345).
  • تمت إضافة By.displayId للسماح باختيار العناصر حسب الشاشة التي تظهر عليها (I1825b).
  • تمت إضافة الطريقتَين UiDevice#getDisplayHeight(int) وUiDevice#getDisplayWidth(int) للعثور على أبعاد شاشة حسب رقم تعريفها (Ie6544).
  • تمت إعادة إضافة الطريقتَين wait(SearchCondition, long) وwait(UiObject2Condition, long) للحفاظ على التوافق مع الإصدارات السابقة (Iebfda).
  • تم تغيير UiDevice#executeShellCommand إلى متاح للجميع ولكن يُنصح بعدم استخدامه بدلاً من مخفي (Ic48a1).

إصلاح الأخطاء

  • تم تعديل عملية إدخال MotionEvent للحدّ من عدم الثبات من خلال إعطاء الأولوية لدقة الإيماءات على السرعة (678ca3).
  • تمت إضافة التتبّع إلى الطرق التي تستهلك الكثير من الموارد لتحديد العوامل التي تؤثّر سلبًا في الأداء (d17de3).
  • تمت إضافة آلية إعادة المحاولة عند بدء اتصال UiAutomation (048caf).
  • تم إصلاح خطأ NPE محتمل من العقد الخالية في UiDevice#dumpWindowHierarchy (b725eb).
  • تمّ إصلاح أخطاء غير متوقّعة من طلب البيانات أو إجراء عمليات على شاشات خاصة (985db6، 7053d4).

الإصدار 2.3.0-alpha03

19 نيسان (أبريل) 2023

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0-alpha03. يحتوي الإصدار 2.3.0-alpha03 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمّ عرض واجهة Condition للسماح بشروط الانتظار المخصّصة بدلاً من الاعتماد فقط على الشروط المضمّنة في Until، وتم تعديل الطريقتَين UiDevice#wait وUiObject2#wait لقبول هذه الواجهة (27c0ea).
  • تمت إضافة UiObject2#scrollUntil لإتاحة الانتقال للأعلى أو للأسفل إلى أن يتم استيفاء شرط معيّن، ولتحقيق التكافؤ مع UiScrollable (099d6e).
  • تمت إضافة UiDevice#setOrientationPortrait وsetOrientationLandscape لتسهيل عمليات التدوير على مستوى أنواع الأجهزة (e13cb7).
  • تمت إضافة UiObject2#setGestureMarginPercent للسماح بضبط الهوامش بالنسبة إلى حجم الكائن. (Ib8c77)

إصلاح الأخطاء

  • تم إصلاح طرق UiScrollable التي تستخدم أحيانًا إحداثيات غير صالحة في حِزم SDK من 18 إلى 22 (b53ece).
  • تم إصلاح مشكلة تعذُّر تعديل النص في حِزم تطوير البرامج (SDK) 18 و19 من خلال UiObject2#setText وclearText (77e41d).
  • تمّ إصلاح عدم تنفيذ UiWatcher بالترتيب الصحيح (c85f92).
  • تم إصلاح مشكلة عدم اكتمال عملية تدوير الجهاز بعد تغيير اتجاه UiDevice (c6cea0).
  • تحسين موثوقية النقرات الطويلة والسحب والتصغير/التكبير (49572b و3c619a)

الإصدار 2.3.0-alpha02

11 كانون الثاني (يناير) 2023

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0-alpha02. يحتوي الإصدار 2.3.0-alpha02 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمت إعادة صياغة التسجيل في جميع أنحاء المكتبة لتقديم المزيد من المعلومات والتحذير من المشاكل المحتمَلة وتحسين الاتساق.
  • تمت إضافة UiDevice#pressKeyCodes للسماح بالضغط على مفاتيح متعددة في الوقت نفسه، مثل الضغط على POWER وVOLUME_DOWN لأخذ لقطة شاشة (22e525).
  • تمت إضافة UiDevice#setCompressedLayoutHierarchy وإيقاف UiDevice#setCompressedLayoutHeirarchy نهائيًا لإصلاح خطأ إملائي في اسم الطريقة (4e2f65).
  • تم وضع علامة على UiAutomatorInstrumentationTestRunner تشير إلى أنّه تم إيقافه نهائيًا لأنّه يتعامل مع UiAutomatorTestCase التي تم إيقافها نهائيًا ولم تعُد ضرورية (be6c85).
  • تم تعديل المدة الزمنية بين UiObject2 MotionEvent لتكون ضعف معدل تحديث الشاشة من أجل محاكاة إيماءات المستخدم بشكل أفضل (454450).
  • تمت إضافة ميزة مطابقة النصوص والأوصاف المتعدّدة الأسطر (1625e6 وb/255787130).

إصلاح الأخطاء

  • تم إصلاح ظهور أخطاء StaleObjectException في بعض الأحيان أثناء طلب البيانات أو انتظار ظهور العناصر (4cbcc0).
  • تم إصلاح قيم العرض UiScrollable#scrollToBeginning وscrollToEnd وflingToBeginning وflingToEnd التي لا تشير إلى ما إذا تم الوصول إلى البداية أو النهاية (d33e06).
  • تم إصلاح الطريقتَين UiScrollable#scrollForward وscrollBackward اللتين تتجاهلان المهلة المحدّدة (29e4f3).
  • تم إصلاح مشكلة عدم معالجة دالة إنشاء النُسخ من BySelector لأدوات اختيار العمق (6c7b91).
  • تمّ إصلاح كيفية التعامل مع القيم غير الصالحة للنسبة المئوية في UiObject#pinchIn وpinchOut (01b973).
  • تم إصلاح مشكلة نادرة كانت تؤدي إلى إيقاف ميزة "وضع الشاشات المتعددة" في حال إعادة ضبط الاتصال الأساسي بـ UiAutomation (1bb956).

الإصدار 2.3.0-alpha01

7 أيلول (سبتمبر) 2022

تم إصدار androidx.test.uiautomator:uiautomator:2.3.0-alpha01. يحتوي الإصدار 2.3.0-alpha01 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • تمّت إضافة تعليقات توضيحية حول قيمة فارغة لجميع الطرق العامة.
  • تم تبديل ميزة حقن MotionEvent إلى وضع غير متزامن مع تأخير قصير لإيماءات UiObject2 أكثر سلاسة.
  • تم تقليل فاصل الاستطلاع أثناء الانتظار من 1000 ملي ثانية إلى 100 ملي ثانية.
  • تم تعديل UiDevice#wakeUp وUiDevice#sleep لاستخدام KEYCODE_WAKEUP وKEYCODE_SLEEP لتوفير إمكانية استخدام الأجهزة التي تلغي زر التشغيل.
  • تمت إضافة UiObject2#getDisplayId وتوفير إمكانية العثور على الأجسام وإدارتها على شاشات متعددة.
  • تمت إضافة الطريقتَين UiObject#click وUiObject2#clickAndWait للنقر على نقطة باستخدام إحداثياتها.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت تؤدي إلى احتساب حجم الشاشة بشكل غير صحيح في بعض الأحيان، ما قد يؤدي إلى تجاهل أجزاء من الشاشة، خاصةً في وضع "النوافذ المتعددة" (Ifc016c).
  • تم إصلاح مشكلة تغيير حجم لقطات الشاشة في UiDevice#takeScreenshot (Id80ad6).
  • تم تحسين موثوقية Until.scrollFinished وUiObject2#scroll (I7b0595).
  • تم إصلاح تحذيرات IncorrectContextUseViolation في الوضع الصارم (Iffa6a0).