اختبار أداة Uiautomator

  
إطار عمل اختبار واجهة المستخدم الوظيفية على مستوى التطبيقات
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
26 يونيو 2024 2.3.0 - - 2.4.0-alpha01

إعلان التبعيات

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

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

Groovy

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

Kotlin

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

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

ملاحظات

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

إنشاء عدد جديد

راجِع مستندات "أداة تتبُّع المشاكل" للحصول على مزيد من المعلومات.

الإصدار 2.4

الإصدار 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).
  • تم إصلاح مشكلة تعذُّر تعديل النص في 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 تشير إلى أنّه متوقّف نهائيًا لأنّه يعالج 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 أكثر سلاسة.
  • تم تقليل الفاصل الزمني للاستطلاع أثناء الانتظار من 1,000 إلى 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).