Test Uiautomator

  
إطار عمل لاختبار واجهة المستخدم الوظيفية على مستوى التطبيقات
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫17 يونيو 2026 2.3.0 2.4.0-rc01 - -

تحديد الاعتماديات

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

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

Groovy

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

Kotlin

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

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.

الملاحظات

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

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

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

Test Uiautomator Shell Version 1.0

الإصدار ‎1.0.0-alpha03

‫3 ديسمبر 2025

تم طرح androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha03. يتضمّن الإصدار ‎1.0.0-alpha03 هذه التعديلات.

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

  • تم تغيير startActivity انتظار إلى انتظار النافذة الجديدة (I35da6، b/440021797)
  • تم تعديل screenSizePixel في RecorderCommands (If558c، b/429173157)

الإصدار ‎1.0.0-alpha02

‫13 أغسطس 2025

تم طرح androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02. يتضمّن الإصدار ‎1.0.0-alpha02 هذه التعديلات.

الإصدار ‎1.0.0-alpha01

‫18 يونيو 2025

تم طرح androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01. يتضمّن الإصدار ‎1.0.0-alpha01 هذه التعديلات.

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

  • الإصدار الأول من مكتبة ui-automator shell لتنفيذ أوامر shell كمستخدم shell تتيح هذه المكتبة قراءة stdout وstderr والكتابة في stdin لعملية sh يتم تشغيلها بواسطة shell. في الواقع، يتم نقل UiAutomation#executeShellCommandRwe التي تم تقديمها في الإصدار 34 من واجهة برمجة التطبيقات إلى الإصدارات القديمة.

الإصدار 2.4

الإصدار 2.4.0-rc01

‫17 يونيو 2026

تم طرح ميزات androidx.test.uiautomator:uiautomator:2.4.0-rc01 وandroidx.test.uiautomator:uiautomator-shell:2.4.0-rc01 وandroidx.test.uiautomator:uiautomator-shell-android:2.4.0-rc01. يتضمّن الإصدار 2.4.0-rc01 هذه التعديلات.

الإصدار ‎2.4.0-beta02

‫11 مارس 2026

تم طرح androidx.test.uiautomator:uiautomator:2.4.0-beta02 وandroidx.test.uiautomator:uiautomator-shell:2.4.0-beta02. يتضمّن الإصدار 2.4.0-beta02 هذه التعديلات.

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

  • تم إصلاح الخطأ الذي كان يؤدي إلى طرح استثناء في UiObject2#scrollToElementOrNull بدلاً من عرض null، وتم تعديل نوع الإرجاع (If0109، b/479892735)

الإصدار 2.4.0-beta01

‫11 فبراير 2026

تم طرح androidx.test.uiautomator:uiautomator:2.4.0-beta01 وandroidx.test.uiautomator:uiautomator-shell:2.4.0-beta01. يتضمّن الإصدار 2.4.0-beta01 هذه التعديلات.

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

  • اجعل الأوامر غير المرتبطة بحالة واحدة. (I3394c، b/429173157)
  • تعديل واجهة برمجة التطبيقات RecorderCommands (Ie09e8، b/429173157)
  • تبسيط واجهة برمجة التطبيقات RecorderCommands ليكون لها دورة حياة محددة جيدًا (I30f89، b/444305673)

الإصدار ‎2.4.0-alpha07

‫3 ديسمبر 2025

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

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

  • تم تغيير startActivity wait إلى wait for new window. يؤدي ذلك إلى جعل عملية التشغيل متزامنة بشكل عام، ويسمح للإصدارات المستقبلية من Macrobenchmark بضبط عملية رصد اكتمال التشغيل. (I35da6 وId6e6f وb/440021797)
  • تمت إزالة واجهة برمجة التطبيقات بدون اسم حزمة صريح في UiAutomatorTestScope. (I8c285، b/413417205)

الإصدار 2.4.0-alpha06

‫13 أغسطس 2025

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

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

  • تمت إضافة واجهات برمجة تطبيقات مستندة إلى النوافذ لتحسين اختبار النوافذ المتعددة، أي يمكن الآن استخدام UiDevice#findWindow للعثور على UiWindow معيّن وفقًا لـ ByWindowSelector تم إنشاؤه باستخدام طرق المصنع By.Window. (I359c4 وI40528 وI8c963)

الإصدار ‎2.4.0-alpha05

‫18 يونيو 2025

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

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

  • تمت إضافة UiObject2#waitForStable كاختصار لـ UiObject2#accessibilityNodeInfo#waitForStable()

الإصدار 2.4.0-alpha04

‫4 يونيو 2025

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

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

  • تمت إعادة تسمية onView إلى onElement لتوضيح أنّها تعمل مع Compose (I53a3b، b/419006806)

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

الإصدار ‎2.4.0-alpha03

‫20 مايو 2025

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

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

  • تم إصلاح الخطأ waitForStableInActiveWindow الذي يؤدي إلى ظهور NPE في بعض الحالات (Ibf50f، b/417046391)

الإصدار 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-index). (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).
  • تم إصلاح مشكلة عدم تمكّن UiObject2#setText وclearText من تعديل النص في حزمتَي SDK 18 و19 (77e41d).
  • تم إصلاح مشكلة عدم تنفيذ UiWatchers بالترتيب الصحيح (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 على أنّه متوقّف نهائيًا لأنّه يتعامل مع UiAutomatorTestCases متوقّفة نهائيًا ولم يعُد ضروريًا (be6c85).
  • تم تعديل التأخير بين UiObject2 MotionEvents إلى ضعف معدّل إعادة تحميل الشاشة لمحاكاة إيماءات المستخدم بشكل أفضل (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).